Amazon Simple Storage Service (Amazon S3) バケットのオブジェクトロックをオンにしました。このバケットからまだ一部のオブジェクトを削除できる理由を知りたいです。
解決方法
オブジェクトレベルのオブジェクトロック設定によって、オブジェクトロックを使用して Amazon S3 バケットからオブジェクトを削除できるかどうかが決まります。
オブジェクトロックを使用してバケット内の特定のオブジェクトをまだ削除できる理由を確認するには、オブジェクトに適用されているオブジェクトロック設定を確認してください。また、削除モードも確認してください。
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新バージョンの AWS CLI を使用していることを確認してください。
オブジェクトのオブジェクトロックの法的保留とオブジェクトロックの保持設定を確認してください
これらの設定を確認するには、Amazon S3 コンソールを開き、オブジェクトの [プロパティ] ページに移動します。ヘッドオブジェクトの AWS CLI コマンドを実行することもできます:
aws s3api head-object --bucket sample-bucket --key test.png
出力は次のようになります:
{
"AcceptRanges": "bytes",
"LastModified": "2023-03-09T04:39:46+00:00",
"ContentLength": 285074,
"ETag": "\"1e8cd7fb4e4ddeafdc6513200f47958f\"",
"VersionId": "Cm_wsGgkj8L3fySNPUu.J7xV1HEKMhGr",
"ContentType": "image/png",
"ServerSideEncryption": "aws:kms",
"Metadata": {},
"SSEKMSKeyId": "arn:aws:kms:us-east-1:111111111111:key/eod57e78-8c46-454a-8c22-897d8be9a5f4",
"ReplicationStatus": "PENDING",
"ObjectLockMode": "COMPLIANCE",
"ObjectLockRetainUntilDate": "2023-03-10T04:39:45.913000+00:00",
"ObjectLockLegalHoldStatus": "ON"
}
オブジェクトに法的保留を適用すると、出力に ObjectLockLegalHoldStatus フィールドが表示されます。オブジェクトにオブジェクトロック保持を適用した場合、ObjectLockMode と ObjectLockRetainUntilDateも表示されます。
オブジェクトのオブジェクトロック法的保留またはオブジェクトロック保持がオンになっていません
オブジェクトは完全に削除できます。
オブジェクトのオブジェクトロック法的保留をオンにしました
**s3: PutObjectLegalHold ** 権限を持つユーザーがオブジェクトの法的保留を明示的にオフにした後にのみ、オブジェクトを完全に削除できます。
**オブジェクトのオブジェクトロック保持機能をオンにしました **
オブジェクトが GOVERNANCE モードで保護されている場合、保持期間が終了する前であっても、次の条件でオブジェクトを完全に削除できます:
- s3:BypassGovernanceRetention の権限を持っている。
- 削除リクエストのリクエストヘッダーとして x-amz-bypass-governance-retention:true を明示的に含めた。
デフォルトでは、Amazon S3 コンソールの DELETE リクエストには x-amz-bypass-governance-retention:true ヘッダーが含まれます。そのため、s3:BypassGovernanceRetention 権限を持っている場合は、S3 コンソールを使用して GOVERNANCE モードで保護されているオブジェクトバージョンを削除できます。
**s3: BypassGovernanceRetention ** 権限があれば、AWS CLI を使用してオブジェクトバージョンを削除することもできます。delete-object コマンドで --bypass-governance-retention オプションを渡します:
aws s3api delete-object --bucket sample-bucket --key test.txt --version-id "9_gKg5vG56F.TTEUdwkxGpJ3tNDlWlGq" --bypass-governance-retention
オブジェクトが COMPLIANCE モードで保護されている場合、ルートアカウントを含むユーザーは、保持期間が終了するまでオブジェクトを完全に削除することはできません。
削除モードを確認
簡単な DELETE
簡単なDELETE 操作では、削除リクエストでオブジェクトバージョンIDを指定せずにオブジェクトを削除します.
オブジェクトロック設定に関係なく、オブジェクトロックを使用してバケット内の任意のオブジェクトに対して簡単な DELETE 操作を実行できます。簡単な Delete では、バケットからデータは削除されません。バケットに削除マーカーを追加するだけで、現在のバージョンは非最新バージョンとして保持されます。
完全 DELETE
完全DELETE 操作では、削除リクエストでオブジェクトバージョン ID を指定してオブジェクトを削除します。
保持期間が終了する前でも、GOVERNANCE 保持モードで保護されているオブジェクトに対して、完全 DELETE 操作を実行できます。ただし、GOVERNANCE モードをバイパスする権限が必要です。
次のいずれかの条件では、オブジェクトに対して完全t DELETE を実行することはできません:
- オブジェクトは COMPLIANCE 保存モードで保護されており、保存期間は終了していません。
- オブジェクトに法的保留が適用されます。
S3 ライフサイクルルールによる削除
S3 ライフサイクルルールでは、オブジェクトレベルのオブジェクトロック設定に関係なく、簡単 DELETE 操作によって現在のバージョンの有効期限切れが引き続き実行されます。ただし、Object Lock で保護されている場合、これらのルールによって最新でないバージョンが完全に削除されるわけではありません。
関連情報
法的保留
保持モード