💡

CDKでLambdaのEvent Bridgeにeventのinputを渡す

2023/09/23に公開

Event Bridgeを設定したLambdaにイベントインプットのJSONを渡したいとき。
下のようにtargetsのオプションのeventフィールドにRuleTargetInputを渡してやれば良い。
下の例では{ message: "Hello World" }のJSONがinputとなる。

import { Rule, Schedule } from 'aws-cdk-lib/aws-events'
import * as targets from 'aws-cdk-lib/aws-events-targets'
import { RuleTargetInput } from 'aws-cdk-lib/aws-events';

    const handler = new lambda.Function(this, "WidgetHandler", {
      runtime: lambda.Runtime.NODEJS_18_X,
      code: lambda.Code.fromAsset("resources"),
      handler: "widgets.main",
      environment: {
        BUCKET: bucket.bucketName
      }
    });
    
    new Rule(this, 'UploadVcsCsvSchedule', {
      schedule: Schedule.cron({ minute: '0', hour: '0' }),
      targets: [new targets.LambdaFunction(WidgetHandler, {
        event: RuleTargetInput.fromObject({ message: "Hello World" }),
      })]
    })

Discussion