LambdaにS3のトリガー追加しようとしたらエラーに

エラーメッセージはちゃんとよく読みましょう

なにをしたかったのか

S3のイベント拾って、Lambdaに渡して、処理して、またS3に格納する

これをやりたい 

エラーの内容

trigger の作成中にエラー が発生しました: Configuration is ambiguously defined. Cannot have overlapping suffixes in two rules if the prefixes are overlapping for the same event type.  (Service: Amazon S3; Status Code: 400; Error Code: InvalidArgument; Request ID: xxx; S3 Extended Request ID: xxx)

LambdaでS3のトリガーを左側に追加しようとすると発生する。(IDは一応省略してます)

まずはエラーメッセージをしっかり読もう

でも、英語読めないので、google翻訳

トリガーの作成中にエラーが発生しました:構成は明確に定義されています。同じイベントタイプでプレフィックスが重複している場合、2つのルールでサフィックスを重複させることはできません。 (サービス:Amazon S3;ステータスコード:400;エラーコード:InvalidArgument;リクエストID:xxx; S3拡張リクエストID:xxx)

なんかイベントタイプごとに指定できるは一つだけっぽい?

Lambdaの設定画面にも書いてありましたね

イベントタイプ

通知をトリガーさせる場合のイベントを選択してください。オプションで、イベントのプレフィックスやサフィックスを設定できます。しかし、それぞれのバケットの個々のイベントには、同一のオブジェクトキーを照合するプレフィックスやサフィックスを含んだ複数の設定はできません。

イベント被りはNG.作成と削除は共存可能

S3のプロパティをみてみよう

S3バケットのプロパティからイベントをみてみると、そのバケットに適用されているイベントが一覧でみることができます

確かに他のLambdaがトリガーで使っている

この画面で、このイベントを削除してしまってもいいのですが、そうすると、先客のLambdaが動かなくなってしまうので、問題ないのかしっかり確認が必要ですね

感想

複数人で雑なIAMでやっていると、こういうことも起きるんですね。まぁバケットそれぞれ作ればいいだけな気もしますが。

それでも、ひとつのS3におんなじイベントタイプで複数設定したい場合は間にSQSとかはやめば動くんでしょうけど、今回はあんまり意味ないので、これにて終了

2020年3月18日AWS#serverlessdays, AWSAWS, AWS

Posted by miu_crescent