既存の S3 バケットでオブジェクトロックを有効化する手順

既存バケットのオブジェクトロックを有効化する機会がありましたので手順を紹介します
2020.04.05

S3 オブジェクトロックはバケット作成時であればユーザー側で自由に有効化できますが、既存バケットはそのままでは有効化できません。

新しいバケットに対してのみ Amazon S3 object lock を有効にすることができます。既存のバケットの Amazon S3 object lock をオンにする場合は、AWS サポートにお問い合わせください。

Amazon S3 オブジェクトロックの概要

今回、既存バケットの S3 オブジェクトロックを有効化する機会がありましたので、手順を紹介いたします。

既存バケットの S3 オブジェクトロック手順

AWS サポートケース起票

まず、AWS サポートに既存バケットの S3 オブジェクトロックを有効化したい旨を、サポートケース起票で伝えます。

サポートケース起票は、AWS 側でオブジェクトロックの有効化を依頼するものではなく、token の発行依頼になります。AWS サポートより以下のような token を発行いただけますので、こちらを使用してユーザー側で既存バケットのオブジェクトロック有効化を行います。

token 例

VigzmqK611K9i8bK7aFjHa9CLASSMETHOD/dXZW42gsmVENL5DepGq1HegziPzr7rEaAwqO4iZ6Ly46492iupDeiq/Lnr1VWFJnk+u7rc3ORhT2DD9MCLASSMETHODW2+YHFjWf2k2fFS3Naey5xO4VwCOk+UqT1eIIVtB2HuSAoqqtItGCMOO3AhY7xY3WIbfWZPoyftJxBhSI76Q5tzZQnqzw9CpCLASSMETHODUVGL5JP0MMa70g3T0r8rkwBsbUMpz1yVVODyvqsC3jzBTcq19QZ/a2B2F6ogVNllqMGVxbmlQQCLASSMETHODsBX9sxbelGGeedOR30hFhqtdtGLg==

オブジェクトロックの有効化

まず、現状を確認しておきます。

$ aws s3api get-object-lock-configuration --bucket <BUCKET_NAME> --token <TOKEN>

An error occurred (ObjectLockConfigurationNotFoundError) when calling the GetObjectLockConfiguration operation: Object Lock configuration does not exist for this bucket

何も設定されていないことが確認出来ましたので、それでは token を使って有効化します。コマンドは以下のようになります。(注意: オブジェクトロックを一度有効化すると、無効化には出来ませんのでご注意ください)

$ aws s3api put-object-lock-configuration --bucket <BUCKET_NAME> --token <TOKEN> \
   --object-lock-configuration 'ObjectLockEnabled=Enabled,Rule={DefaultRetention={Mode=<ロックモード>,Days=<保持期間>}}'

例えばガバナンスモード、365 日間保持する場合、以下のようになります。コンプライアンスモードの場合は、Mode=COMPLIANCE と指定します。

$ aws s3api put-object-lock-configuration --bucket <BUCKET_NAME> --token <TOKEN>  \
   --object-lock-configuration 'ObjectLockEnabled=Enabled,Rule={DefaultRetention={Mode=GOVERNANCE,Days=365}}’

もう一度 get-object-lock-configuration コマンドで設定を確認してみると

$ aws s3api get-object-lock-configuration --bucket upp-dev-logs
ObjectLockConfiguration:
  ObjectLockEnabled: Enabled
  Rule:
    DefaultRetention:
      Days: 365
      Mode: GOVERNANCE\

既存バケットのオブジェクトロックが有効化されましたね!

注意点

  • 先述のとおり、有効化したオブジェクトロックは無効化出来ません
  • 既存バケットのオブジェクトロックを有効化しても、既存のオブジェクトにロック情報が付与されるものではありません(オブジェクトロックされません)
    • オブジェクトロックされる対象は有効化以降に作成されたオブジェクトのみです

さいごに

既存バケットのオブジェクトロック有効化は「AWS サポートにお問い合わせください。」としか記載がなかったので、その先についてご紹介しました。

以上!大阪オフィスの丸毛(@marumo1981)でした!