エンジニアブログ

[AWS]S3オブジェクト変更履歴通知を目指してみる その2

2019.02.19

こんにちは。middleです。

前回の続きです!

 

★今回のお題

特定のS3バケットのオブジェクトに、変更操作(上書き)が行われた場合、検知したい

※ポイント
〜新しいオブジェクトが置かれた時は、別に検知しなくてよし〜

 

★懸念点&解決方法

新規オブジェクトが追加された時と、既存オブジェクトが変更された時とで、区別できるのでしょうか??

秘技サポート問い合わせをしたところ、答えはNOでした。

 

S3のイベント通知および、CloudTrailのデータイベントでは、追加および変更を区別することができません。

※一部抜粋&改変してます。

 

要するに新規オブジェクトが追加された時と、既存オブジェクトが変更された時と、双方同一イベントということでございますね……。

じゃあ今回のやりたいことは不可能かというとそうではなく、以下をご提案をしていただきました!!

 

S3のイベントメッセージには「e Tag」および「sequencer」が含まれています。
この値を比較することで、追加および変更を区別できるかと思います。

※一部抜粋&改変してます。

■参考:
イベントメッセージの構造 – Amazon Simple Storage Service

 

 

★で、結局どうしたか

監査ログをS3バケットへ保存するサービス(※)以外、S3バケットへの書き込みを禁止しているので、検知の機能は実装しない」ことにしました。
※今回はCloudTrail、CloudWatchLogs、Config、ELBでした

つまり何が言いたいかと言いますと

人が意図的にオブジェクトを操作することはできない

イコール

オブジェクトの変更操作はそもそもできないので、検知する機能の実装は不要

ということでございます。

 

バケットポリシーやIAMポリシー等々でS3オブジェクトへの書き込みは禁止してるので、「気にしなくていいじゃん」とのご意見をいただき、このような結論となりました。

 

 

※ここから余談
前回の冒頭の”考え方“についてなのですが

私はちょっと面倒だなあ〜と思いつつ「e Tag」および「sequencer」の値を比較して通知する仕組みを実装しようと思っていたので、このご意見を聞いて「なるほどな〜」と思いました。
もちろん仕組み実装が不可欠なケースもあるかと存じますが、なくても構わない時に実装するのはある意味自己満足(?)なのかなと……。
自己満足は言い方が悪い気がしますが……。

取捨選択とか優先度だとか、いろいろ改めて考えるきっかけとなりました。

実はこの件があったのは昨年の6月なのですが、それからを振り返ってみて、仕事で”妥協“ができるようになったかな、と思いました。

 

ということで以上です。
お疲れ様でした 🙂

関連キーワード

この記事をシェアする

Facebook Twitter LINE はてなブックマーク

この記事を読んだ方に
おすすめの記事