営業部 佐竹です。
本ブログは「AWS re:Invent 2021 で発表された S3 のアップデートまとめ」と題しまして、Amazon S3 のリリースをまとめました。
はじめに
S3 のアップデートは数が多いため「コスト削減関係」と「セキュリティ関係」で2つの記事に分けてのご紹介となりました。「コスト削減関係」のブログは以下の通りです。
それでは「セキュリティ関係」のアップデートをまとめてご紹介します。
セキュリティ関係のアップデート
アクセスコントロールリストの無効化が可能に
S3 バケットの ACL を無効にすることが可能となりました。何が嬉しいのでしょうか?
以下のナレッジセンターにもある通り、クロスアカウントアクセスで S3 へとアップロードされたオブジェクトは「所有権が PUT された S3 バケットの所有アカウントにうつる」のではなく「アップロードしたユーザ(別アカウント)がそのオブジェクトの所有権を持ったまま」という困った仕様がありました。
この混乱を回避するために、「Object Ownership」という機能が1年ほど前にリリースされていました。
そして今回のアップデートで Object Ownership 内の機能強化により、S3 バケット単位で「オブジェクトの所有権はそれが PUT された S3 バケットの所有アカウントにうつる」よう強制できるようになりました。この設定が施されているバケットでは、最早 bucket-owner-full-control
オプションは不要となりました。
今後、新しく作成する S3 バケットは「ACL 無効 (推奨)」がデフォルトとなります。ACL とはおさらばする時期が来たようです。
S3 バケットポリシー作成時に IAM Access Analyzer を利用したプレビューが可能に
IAM Access Analyzer を有効にしている場合に、S3 バケットポリシー作成時に任意でプレビューすることが可能になりました。
S3 でバケットポリシーの作成時、画面最下部に Chrome のデベロッパーツールのような最下部が表示されています。
右端にある「外部アクセスをプレビュー」を押下した後「プレビュー」を押下することで記載したバケットポリシーが事前にレビューされます。
今回「バケットポリシーがバケット ARN と一致しません」というエラーが出ているのは、このバケットポリシーを記載したバケットの ARN と設定した値がズレているからです。
このような設定ミス等を事前レビューできるため、今後よく使われそうな機能だと感じました。
ただし、本機能の利用には、予め IAM Access Analyzer が設定されている必要があります。補足として、IAM はグローバルサービスですが、IAM Access Analyzer はリージョナルサービスです。よって、作成したバケットの対象リージョンに IAM Access Analyzer が作成されている必要があります。
S3 Event Notifications 関係
Amazon EventBridge で Amazon S3 イベントが使用可能に
なかなか伝わりにくいアップデートですが、地味に嬉しいアップデートとなりました。
Amazon EventBridge は、CloudWatch Events と比較してベターなサービスとして存在しています。しかし、Amazon S3 はサービスとして直接の連携が不可でした。
S3 バケットに何らかのファイルを設置したことをトリガーして Lambda を発火するなど、S3 へのオブジェクトプットはイベントドリブンの入り口になりますが、EventBridge には長らく直接連携できませんでした。連携するには、CloudTrail の設定において「オブジェクトレベルでのログ記録」を有効化、さらに CloudTrail イベントを EventBridge でフックする必要がありました。ざっくり絵にすると以下のような状況でした。
これが CloudTrail を間接的に経由することなく直接連携が可能となりました。
実際の設定画面では以下のようになります。
なお、この連携には事前に S3 バケット側でも設定が必要となっています。
S3 バケットの [プロパティ] タブにおいて、[イベント通知] までスクロールダウンし Amazon EventBridge の後にある [編集] をクリックし設定を行ってください。
この直接的な連携(原文では directly wired
と記載されています)により、EventBridge の持つ「高度なフィルタリング 」や「複数の送信先への配信」が有効活用できることで、より良い機能となりました。
まとめると、Amazon S3 バケット内でのオブジェクトレベルのイベントトリガーは、昔は EventBridge で間接的に連携はできたが使い難い場面があったものの、それがアップデートで EventBridge と直接連携できることにより使いやすくなった、ということです。
ライフサイクルイベントや Intelligent-Tiering のティア移動、オブジェクトへのタグ付けや ACL の変更に対してイベント通知が可能に
EventBridge 連携のアップデートに続き、イベントドリブンのために利用できるイベント通知が増えました。追加されたのは以下の通りとのことです。()内は Amazon EventBridge detail type になります。
- オブジェクトのライフサイクルによる移動や削除(Object Storage Class Changed)
- オブジェクトの Intelligent-Tiering によるアーカイブストレージへの移動(Object Access Tier Changed)
- オブジェクトへのタギング(Object Tags Added/Object Tags Deleted)
- ACL の設定(Object ACL Updated)
なお、LifecycleExpiration:Delete は「Object Deleted」に相当します。詳細は以下のドキュメントも参考ください。
このアップデートにより、S3 のイベントドリブンがさらにきめ細かくできるようになりました。
特にオブジェクトへのタグ付与や削除による制御でイベントをトリガーできるのは興味深いですね。
まとめ
今回ご紹介したアップデートは以下の通りです。
- S3 バケットのアクセスコントロールリスト無効化が可能に
- バケットポリシー作成時に IAM Access Analyzer を利用したプレビューが可能に
- Amazon EventBridge で Amazon S3 イベントが直接使用可能に
- ライフサイクルイベントや Intelligent-Tiering のティア移動、オブジェクトへのタグ付けや ACL の変更に対してイベント通知が可能に
先にご紹介した4つと、本ブログでご紹介した4つ、合計8つのアップデートが AWS re:Invent 2021 期間中に発表された S3 のアップデート全てになります。
本記事は以上で終わりとなります。
では、またお会いしましょう。
佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ
マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023-2024 Japan AWS Top Engineers/2020-2024 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。