S3 をトリガーにした AWS Lambda を実行するには、コンソール上であればポチポチしていくだけで設定できる。
SQS をトリガーにする場合も aws lambda create-event-source-mapping
で簡単にマッピングできるが、S3の場合はコマンドが異なる。
Lambdaを作成
$ zip app.zip app.py
$ awslocal lambda create-function --function-name my-function --runtime python3.12 --handler app.handler --role arn:aws:iam::000000000000:role/my-app --zip-file fileb://app.zip
S3 バケットを作成
$ awslocal s3 mb s3://my-bucket
S3をトリガーに設定
$ awslocal s3api put-bucket-notification-configuration --bucket my-bucket --notification-configuration '{"LambdaFunctionConfigurations":[{"LambdaFunctionArn":"arn:aws:lambda:ap-northeast-1:000000000000:function:my-function","Events":["s3:ObjectCreated:Put"]}]}'
動作確認
ファイルを置く
$ awslocal s3 cp ./test.csv s3://my-bucket/
ログを確認(いろいろ方法はありそうだが、ここではlogsコマンドで)
$ awslocal logs tail --follow /aws/lambda/my-function
2024-03-04T09:24:35.635000+00:00 2024/03/04/[$LATEST]7d585026f97c54261c44b1fe27b75a54 START RequestId: dd60a815-1ecf-4dc9-aac4-41f0e516f80d Version: $LATEST
2024-03-04T09:24:35.646000+00:00 2024/03/04/[$LATEST]7d585026f97c54261c44b1fe27b75a54 END RequestId: dd60a815-1ecf-4dc9-aac4-41f0e516f80d
2024-03-04T09:24:35.652000+00:00 2024/03/04/[$LATEST]7d585026f97c54261c44b1fe27b75a54 REPORT RequestId: dd60a815-1ecf-4dc9-aac4-41f0e516f80d Duration: 44.10 ms Billed Duration: 45 ms Memory Size: 128 MB Max Memory Used: 128 MB