![[アップデート] 既存のS3バケットのオブジェクトロックの有効化がマネジメントコンソールからできるようになりました](https://devio2023-media.developers.io/wp-content/uploads/2023/08/amazon-s3.png)
[アップデート] 既存のS3バケットのオブジェクトロックの有効化がマネジメントコンソールからできるようになりました
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
S3バケット作成後にオブジェクトロックの設定が必要になった
こんにちは、のんピ(@non____97)です。
皆さんはS3バケット作成後にオブジェクトロックの設定が必要になった経験はありますか? 私はあります。
基本的にオブジェクトロックを有効にできるタイミングはS3バケット作成時のみでした。もし、S3バケット作成後にオブジェクトロックを有効化したい場合は、以下記事で紹介しているとおり、AWSサポートに既存バケットのS3オブジェクトロックを有効化したい旨をサポートケース起票で伝えます。
既存S3バケットのオブジェクロックの有効化ができるといってもサポートに問い合わせるのは少し手間ですよね。
2023/11/20より、既存のS3バケットのオブジェクトロックの有効化がマネジメントコンソールからできるようになりました。
実際に触ってみたので紹介します。
いきなりまとめ
- 既存のS3バケットのオブジェクトロックの有効化がマネジメントコンソールからできるようになった
- オブジェクトロックを有効化してもらっても既存オブジェクトはオブジェクトロックは設定されない
- オブジェクトロックされる対象はオブジェクトロック有効後に作成されたオブジェクトのみ
- 一つづつオブジェクトごとにオブジェクトロックを設定するか、バッチオペレーションで複数のオブジェクトをまとめて設定する
やってみた
S3バケットの用意
検証用のS3バケットを用意します。
オブジェクトロックは無効の状態で作成します。

S3バケット作成後、オブジェクトを作成します。

オブジェクトロックの有効化
早速オブジェクトロックを有効化します。
作成したS3バケットのプロパティからオブジェクトロックの編集をクリックします。

オブジェクトロックはバージョニングされたバケットでのみ機能しますと表示されました。

バージョニングを有効化しないままオブジェクトロックを有効化しようとします。

すると、Versioning must be 'Enabled' on the bucket to apply a Object Lock configurationと怒られました。

バージョニングの有効化をクリックしてバージョニングを有効化します。その上で、オブジェクトロックを有効化します。

設定後のバージョニングを確認すると、確かにバージョニングが有効化になっていました。

オブジェクトロックも有効化されています。

既存のS3バケットのオブジェクトの削除
既存のS3バケットのオブジェクトを削除しようとしてみます。
ガバナンスモードよりもコンプライアンスモードの方が分かりやすいと思うので、S3バケットのデフォルトの保持モードをコンプライアンスモードに変更します。

確認を促されたので、確認と入力してコンプライアンスモードを有効にします。

コンプライアンスモードになったことを確認しました。

オブジェクトのプロパティタブに記載のオブジェクト管理の概要からもデフォルトがコンプライアンスモードになっていることが確認できました。

なお、オブジェクトにはオブジェクトロックの設定されていません。ここから、オブジェクトロックを有効化してもらっても既存オブジェクトはオブジェクトロックは設定されないことが分かります。

オブジェクトを削除します。

オブジェクトを削除すると削除マーカーが追加されました。古いオブジェクトを削除します。

オブジェクトを完全に削除しようとします。

問題なく削除されました。これはバケットレベルではオブジェクトロックが有効化されていますが、オブジェクトにはオブジェクトロックが設定されていないためです。

新しくアップロードしたオブジェクトを削除しようとしてみる
新しくオブジェクトをアップロードします。
アップロードしたオブジェクトのプロパティを確認すると、コンプライアンスモードでオブジェクトロックが設定されていました。

こちらのオブジェクトを削除しようとすると、削除に失敗しました。オブジェクトロックがしっかり効いていますね。

コンプライアンス要件が変わった場合に対応しやすくなった
既存のS3バケットのオブジェクトロックの有効化がマネジメントコンソールからできるようになったアップデートを紹介しました。
監査などでコンプライアンス要件を見直す必要がある場合に簡単に対応できるようになりました。
オブジェクトロックを有効化してもらっても既存オブジェクトはオブジェクトロックは設定されないのは注意が必要ですね。既存のオブジェクトにオブジェクトロックを設定したい場合は、一つづつオブジェクトごとにオブジェクトロックを設定するか、バッチオペレーションで複数のオブジェクトをまとめて設定しましょう。
バッチオペレーションによる設定は以下AWS公式ドキュメントに記載されています。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!






