💡
CDKでLambdaのEvent Bridgeにeventのinputを渡す
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