背景
S3へのオブジェクト作成をトリガーを利用してLambdaを活用することは多いと思います。
そうすると、S3にファイルを作成する処理を書くときに
「あれ、このバケットのこの場所、トリガーになってないよね、、、?」
と思うことが出てきました。
さっと確認できると安心感も増すものです。
解決方法
API レベル (s3api) コマンドにこれを満たす get-bucket-notification-configuration というものがあります。
具体的な方法
せっかくなので
・S3の条件(Prefixとか)
・S3のパス
・Lambda関数のARN
が1行で一覧で出力できるようなjqを書いてみました(あと一歩スマートな書き方があるかもです)
aws s3api get-bucket-notification-configuration --bucket ★バケット名★ |jq '.LambdaFunctionConfigurations[] |[.Filter[].FilterRules[].Name,.Filter[].FilterRules[].Value,.LambdaFunctionArn]|@tsv' -r | sort -k 2,2
結果
関数ごとにエイリアスが設定して、エイリアスごとにS3トリガーが異なる場合でも上手く一覧化できました。
Prefix testdesu/testtmp/testlogtmp/ arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:testFunctionA:aliasAAA
Prefix testdesu/testtmp/testlogtmp_aliasDDD/ arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:testFunctionA:aliasAAA
Prefix testdesu/testtmp/testlog/aliasBBB/ arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:testFunctionA:aliasBBB
Prefix testdesu/testtmp/testlog/aliasCC/ arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:testFunctionA:aliasCCC
Prefix testdesu/testtmp/testztmp/ arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:testFunctionB:aliasDDD
Prefix testdesu/testtmp/testztmp_aliasDDD/ arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:testFunctionB:aliasDDD
Prefix testdesu/testtmp/testztmp_aliasAAA/ arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:testFunctionB:aliasAAA
Prefix testdesu/testtmp/testzz/aliasBBB/ arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:testFunctionB:aliasBBB
Prefix testdesu/testtmp/testzz/aliasCC/ arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:testFunctionB:aliasCCC
その他
マネジメントコンソールから確認する場合、バケットの「プロパティ」から「イベント通知」という項目で、同様の内容を確認することができます。
URLで言うと2021.10.11では以下でアクセス可能です。
https://s3.console.aws.amazon.com/s3/bucket/(バケット名)/property/notification
jq職人をやり終えた後で念のため調べたら画面からみられるじゃん!となった訳ですがCLIでも解決できることが分かったから良いのです