S3ファイル作成をトリガーにしてLambda起動
S3ファイル作成をトリガーにしてLambda起動させてみて、どんなオブジェクトがLambdaに渡されるのかを確認しました。
Lambda作成
Runtimeは今回は Node.js 14.x を選択しました。
ソースコードはこれだけ。
exports.handler = async (event) => { console.log(JSON.stringify(event)); };
S3イベント設定
マネジメントコンソール上で、S3のPropertiesのEvent notifications(プロパティのイベント通知)のところから設定します。
こんな感じ。
通知したいイベントのタイプはオブジェクト作成を選択しました。
下のほうにイベントの通知先の設定欄がありますので、先ほど作ったLambdaを選択します。
試してみる
$ echo Hello | aws s3 cp - s3://xxxxxxxx/eventsample/1.txt
CloudWatch Logsには以下のJSONが出力されました。
{ "Records": [ { "eventVersion": "2.1", "eventSource": "aws:s3", "awsRegion": "ap-northeast-1", "eventTime": "2021-04-20T15:45:05.043Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "AWS:AIDAXXXXXXXXXXXXXXXXX" }, "requestParameters": { "sourceIPAddress": "35.xxx.xxx.xxx" }, "responseElements": { "x-amz-request-id": "3VVRXXXXXXXXXXXX", "x-amz-id-2": "xxxxxxxxxxxxxxxx" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "s3event-sample", "bucket": { "name": "xxxxxxxx", "ownerIdentity": { "principalId": "XXXXXXXXXXXXXX" }, "arn": "arn:aws:s3:::xxxxxxxx" }, "object": { "key": "eventsample/1.txt", "size": 6, "eTag": "09f7e02f1290be211da707a266f153b3", "sequencer": "00607EF70623E54228" } } } ] }