Amazon S3 バケットに条件付き削除を強制する
Amazon S3 バケットポリシーを使用すると、汎用バケット内のオブジェクトに条件付き削除を含む If-Match ヘッダーを強制できます。If-Match ヘッダーが存在しない場合、リクエストは 403 Access Denied で拒否されます。バケットポリシーは、バケットとその中のオブジェクトへのアクセス許可を付与できるリソースベースのポリシーです。バケット所有者のみが、ポリシーをバケットに関連付けることができます。バケットポリシーの詳細については、「Amazon S3 のバケットポリシー」を参照してください。
次の例は、バケットポリシーで条件を使用して、クライアントに If-Match HTTP ヘッダーの使用を強制する方法を示しています。
例 1: ETag 値を持つ If-Match ヘッダーを使用して条件付き削除のみを許可する
このバケットポリシーを使用して、ETag 値を持つ If-Match ヘッダーを含む DeleteObject および DeleteObjects リクエストを使用した条件付き削除のみを許可できます。条件のない削除はすべて拒否され、条件付き削除は成功します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowConditionalDeletes", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:DeleteObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "Null": { "s3:if-match": "false" } } }, { "Sid": "AllowGetObjectBecauseConditionalDeleteIfMatchETag", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
例 2: * 値を持つ If-Match ヘッダーを使用して条件付き削除のみを許可する
このバケットポリシーを使用して、* 値を持つ If-Match ヘッダーを含む DeleteObject および DeleteObjects リクエストを使用した条件付き削除のみを許可できます。条件のない削除はすべて拒否され、条件付き削除は成功します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowConditionalDeletes", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:DeleteObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": { "Null": { "s3:if-match": "false" } } } ] }