EventBus

A custom EventBridge event bus with pattern-matching rules that route events to Lambda functions or SQS queues.

Messaging · anvil:aws:EventBus

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
        },
    })
}

← Back to EventBus docs