1回答
- 新しい順
- 投票が多い順
- コメントが多い順
1
Tsumitaと申します。
実際には試していないのですが、AWS公式ドキュメントに記載のある $or
を利用することで実現できると考えております(日本語ドキュメントには該当の記載がないので英語のドキュメントを参考にしていただけると幸いです)
AWS 公式ドキュメント:
Complex example with $or matching
参考JSON(実際に試していないので間違っていたらすみません)
{
"source": ["aws.s3"],
"detail-type": ["Object Created"],
"detail": {
"bucket": {
"name": ["s3-trigger-test"]
},
"object": {
"$or": [
{ "key": [ { "prefix": "trigger/test1.txt"} ] },
{ "key": [ { "prefix": "trigger/test2.txt"} ] }
]
}
}
}
ご参考になれば幸いです。
回答済み 2年前
Tsumitaさん ご回答ありがとうございます。 頂戴した情報で、同時にファイルABをアップロードした際のLambda実行を確認できました。
ただ私が質問時の情報を不足させていたのですが、S3へのファイルアップロードは日に1回、それぞれ別のタイミングでアップロードされるため、同時アップロードという状況は想定しておりませんでした。 申し訳ありません。
もし何か追加での情報をお持ちでしたら、ご協力いただけますと幸いです。 よろしくお願いいたします。
補足ありがとうございます。
こちらの条件ですと、おそらくEventBridge単体では実現できないと思います。
両ファイルアップロードのタイミングでの発火が必須でなければ1日1回Lambdaを実行し、前日アップロードされたファイルを処理すれば良いと思います。
もし、両ファイルがアップロードされたタイミングでの発火(処理)が必須であれば、Lambda内で同日中の"ファイルA and ファイルB"がアップロードされていることを確認後にLambdaで質問者様が想定する処理を行えば良いと思います。
例1: ファイルAアップロード時に発火。ファイルBが未アップロードだったため、後続処理をせずに終了。
例2: ファイルBアップロード時に発火。ファイルAがアップロード済だったため、後続処理をして終了。
補足
S3:ListObjects
やChoice
を駆使することでLambdaを1日1回の発火にすることは可能かと思いますが複雑になります。情報のご提供ありがとうございます。 やはりEventBridge単体では出来ないと結論づけてよさそうですね。
ご提案の通り、Lambda、StepFunction側での制御を検討してみようと思います。 細かなご回答誠にありがとうございました。