概要
Lambdaの開発時にS3トリガーとした実装を求められることもある。本記事は、S3トリガーを実装するときに注意すべき点を記載しておく。
実装イメージ
S3バケットのオブジェクトをトリガーにLambda関数が呼び出される
S3トリガーによるイベントタイプ
- オブジェクトの作成イベント
- オブジェクトの削除イベント
- オブジェクトの復元イベント
- 低冗長化ストレージ (RRS) オブジェクトのイベントロスト
- レプリケーションイベント
- S3 ライフサイクルの有効期限イベント
- S3 ライフサイクルの移行イベント
- S3 Intelligent−Tiering 自動アーカイブイベント
- オブジェクトのタグ付けイベント
- オブジェクト ACL PUT イベント
馴染みのあるイベントはオブジェクトの作成イベントと思われるが、以下の2つは違いがある。
ObjectCreated
の場合、すべてのオブジェクトが対象であるが、ObjectCreatedByPut
の場合、マルチパートアップロードされたオブジェクトは対象外である。マルチパートアップロードされたオブジェクトはイベント検知されないため要注意。
既存のトリガーにObjectCreatedByPut
しかないが、マルチパートアップロードされたオブジェクトも対象にしたい場合、以下も追加する。
おわり
オブジェクト作成イベントをS3トリガーにする場合、注意が必要である。
要件によって使い分けると思われるが、ちゃんと要件を確認されたし。
おまけ
S3トリガーを作成/削除を繰り返すと以下のメッセージが出力されることがある。
trigger の作成中にエラー が発生しました: Configurations overlap. Configurations on the same bucket cannot share a common event type.
以下のリンクを参考に対応されたし。