TL;DR
やりたいこと
S3のへの任意のディレクトリに対するファイル保存をイベントとしてEventBridgeを動作させる
prefixとsuffixを使った記述だと全ての通知が検知されてしまう
やったこと
- S3のEventBridge通知設定をオン
- EventBridgeのイベントパターンで検知したい通知をワイルドカードを使って絞る
- 以下のイベントパターンを記載することで狙い通りの動作となった
{
"detail-type": ["Object Created"],
"source": ["aws.s3"],
"detail": {
"bucket": {
"name": ["MY-BUCKET"]
},
"object": {
"key": [{
"wildcard": "my-directory/*"
}]
}
}
}
日本語サイトを調べましたが、解決策は見当たらなかったため、記事にすることにしました。
概要
S3のへの任意のディレクトリに対するファイル保存をイベントとしてEventBridgeを動作させたいと考え、イベントパターンを以下のように記載したが、全ての通知を検知する状態となってしまった。
{
"detail-type": ["Object Created"],
"source": ["aws.s3"],
"detail": {
"bucket": {
"name": ["MY-BUCKET"]
},
"object": {
"key": [{
"prefix": "my-directory/"
}]
}
}
}
AWS公式の質問で同様の内容をを見つけ、書き方を以下のように変更したところ、狙いどおりの動作となりました。
{
"detail-type": ["Object Created"],
"source": ["aws.s3"],
"detail": {
"bucket": {
"name": ["MY-BUCKET"]
},
"object": {
"key": [{
"wildcard": "my-directory/*"
}]
}
}
}
suffixを指定したい場合は、wildcardなので"wildcard": "my-directory/*.json
などと変更すれば、suffixも指定可能です。
参考
AWS re:Post How to make EventBridge rule match on prefix AND suffix