💬

マネコンからファイルをアップロードする行為はS3イベント通知の”s3:ObjectCreated:何”にあたるかテストしてみた[小ネタ]

2022/10/07に公開

お題

[S3イベント通知を作成]していてふと気になったのが、
タイトルにあります「マネコンからファイルをアップロード」する行為は
”s3:ObjectCreated:何”にあたるの?

という疑問でした。

今の所切り分けて使わなければいけない場面に遭遇した訳ではないので、
"すべてのオブジェクト作成イベント(※s3:ObjectCreated:*)"
とすればいいのですが、気になってしまったのでテストしてみようという気持ちでやってみます。

s3:ObjectCreated:*
に含まれるのは4つ

  • s3:ObjectCreated:Put
  • s3:ObjectCreated:Post
  • s3:ObjectCreated:Copy
  • s3:ObjectCreated:CompleteMultipartUpload

小ネタなのでゴテゴテさせずにあっさりさっぱりに仕上げます。
※スクショもあえて添えておりません(後で追加するかも)

手順

①S3に”source-bucket-●●”という名前で1つだけバケットを作成

②Lambda関数×4を作成

  • ”fnc-for-put”
  • ”fnc-for-post”
  • ”fnc-for-copy”
  • ”fnc-for-mpu”

以下を培養しそれぞれテストで動作確認
参考リンク:「AWS LambdaでPythonのhello worldを実行」

③ソースバケットで[プロパティ]タブ→[イベント通知]→[S3イベント通知を作成]×4

名前/イベントタイプ/フィルター/送信先タイプ/送信先

  • put-event/PUT/.jpeg/Lambda関数/fnc-for-put
  • post-event/POST/.jpg/Lambda関数/fnc-for-post
  • copy-event/コピーする/.png/Lambda関数/fnc-for-copy
  • mpu-event/完了したマルチパートアップロード/.csv/Lambda関数/fnc-for-mpu

※フィルターはサフィックスで拡張子を指定。

④jpeg,jpg,png,csvの4つの拡張子のファイルをアップロード

⑤CloudWatchログやCloudTrailを確認だ!

結果

CloudTrailでは

”PutBucketNotification”

"AddPermission20150331v2"

というイベントが発生し、
前者には"Event": "s3:ObjectCreated:Put"(Putの場合)などそれぞれの表示があるが、
これはイベント通知を作成、或いは編集した都度出来るAPIイベントであって「何がトリガーでLambdaが起動したか」とか「S3イベントを検知しましたよ」というものではなかった。

CloudWatchログを確認してみると、
Lambda関数作成時に作成したテストイベント毎に、
”/aws/lambda/[テストイベント名]”というロググループがそれぞれ自動作成されており

今回作成したS3イベント通知の設定では
jpeg、jpg、pngをアップロードした際のput、post、copy、については
タイムスタンプを見る限りログストリーム→ログイベント内に新規イベントが確認出来たが

csvをアップロードした際の
”マルチパートアップロード”にはそれがありませんでした。(当然といえば当然)

結論

今回のテストから,
マネコンからファイルをシンプルにアップロードする行為は
「PutにもPostにもCopyにも当たるけどマルチパートアップロードではないんやで」
という理解に落ち着きました。

二回やり直したので恐らく間違いはないと思うのですが、
明確な理解のある方が私の周りにおりませんでしたので
もしも認識に間違いがありましたら是非ご指摘ください。

お読みいただき有難うございました。

Discussion