EventBus
A custom EventBridge event bus with pattern-matching rules that route events to Lambda functions or SQS queues.
Infrastructure
import { App } from '@anvil-cloud/sdk';
import * as anvil from '@anvil-cloud/sdk';
export default new App({
run(ctx) {
const worker = new anvil.aws.Lambda('on-order-placed', {
runtime: 'nodejs24.x',
handler: 'functions/on-order-placed/index.handler',
});
const bus = new anvil.aws.EventBus('orders', {
rules: [{
name: 'order-placed',
pattern: { source: ['orders.api'], detailType: ['OrderPlaced'] },
target: { lambda: { arn: worker.arn, lambdaRoleArn: worker.roleArn } },
}],
});
ctx.export('busName', bus.name);
},
});import anvil_cloud as anvil
def infra(ctx: anvil.Context):
worker = anvil.aws.Lambda("on-order-placed",
runtime="nodejs24.x",
handler="functions/on-order-placed/index.handler",
)
bus = anvil.aws.EventBus("orders",
rules=[{
"name": "order-placed",
"pattern": {"source": ["orders.api"], "detail_type": ["OrderPlaced"]},
"target": {"lambda_": {"arn": worker.arn, "lambda_role_arn": worker.role_arn}},
}],
)
ctx.export("bus_name", bus.name)
anvil.App(run=infra)package main
import (
"github.com/anvil-cloud/anvil/sdk/go/anvil"
anvilaws "github.com/anvil-cloud/anvil/sdk/go/anvil/aws"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
anvil.Run(anvil.AppConfig{
Run: func(ctx *anvil.Context) error {
worker, err := anvilaws.NewLambda(ctx.PulumiCtx(), "on-order-placed", &anvilaws.LambdaArgs{
Runtime: anvilaws.LambdaRuntime_Nodejs24_x,
Handler: pulumi.String("functions/on-order-placed/index.handler"),
})
if err != nil {
return err
}
bus, err := anvilaws.NewEventBus(ctx.PulumiCtx(), "orders", &anvilaws.EventBusArgs{
Rules: anvilaws.EventBusRuleArray{
anvilaws.EventBusRuleArgs{
Name: pulumi.String("order-placed"),
Pattern: anvilaws.EventBusRulePatternArgs{
Source: pulumi.StringArray{pulumi.String("orders.api")},
DetailType: pulumi.StringArray{pulumi.String("OrderPlaced")},
},
Target: anvilaws.EventBusRuleTargetArgs{
Lambda: &anvilaws.EventBusLambdaTargetArgsArgs{
Arn: worker.Arn,
LambdaRoleArn: worker.RoleArn,
},
},
},
},
})
if err != nil {
return err
}
ctx.Export("busName", bus.Name)
return nil
},
})
}