選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

在 Amazon S3 儲存貯體上強制執行條件式寫入

焦點模式
在 Amazon S3 儲存貯體上強制執行條件式寫入 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

透過使用 Amazon S3 儲存貯體政策,您可以對一般用途儲存貯體中的物件上傳強制執行條件式寫入。

儲存貯體政策是以資源為基礎的政策,您可以使用這些政策來將存取許可授予 Amazon S3 儲存貯體及其中物件。只有儲存貯體擁有者可建立政策與儲存貯體的關聯。如需儲存貯體政策的詳細資訊,請參閱「Amazon S3 的儲存貯體政策」。

您可以使用條件索引鍵 s3:if-matchs3:if-none-match 作為選用 Condition 元素或 Condition 區塊來指定政策何時生效。對於分段上傳,您必須指定 s3:ObjectCreationOperation 條件索引鍵來排除 CreateMultipartUploadUploadPartUploadPartCopy 操作,因為這些 API 不接受條件式標頭。如需在儲存貯體政策中使用條件的詳細資訊,請參閱使用條件索引鍵的儲存貯體政策範例

注意

如果您使用儲存貯體政策來強制執行條件式寫入,則無法對儲存貯體政策中指定的儲存貯體或字首執行複製操作。沒有 If-None-MatchIf-Match HTTP 標頭的 CopyObject 請求會失敗並顯示 403 Access Denied 錯誤。使用這些 HTTP 標頭提出的 CopyObject 請求會失敗並顯示 501 Not Implemented 回應。

下列範例示範如何在儲存貯體政策中使用條件來強制用戶端使用 If-None-MatchIf-Match HTTP 標頭。

範例 1:僅允許使用 PutObject 和包含 if-none-match 標頭的 CompleteMultipartUpload 請求上傳物件

如果請求包含 if-none-match標頭,此政策允許帳戶 111122223333、使用者 Alice 寫入儲存amzn-s3-demo-bucket1貯體,確保儲存貯體中不存在物件金鑰。對指定儲存貯體提出的所有 PutObjectCompleteMultipartUpload 請求都必須包含 if-none-match 標頭才能成功。使用此標頭時,只有在儲存貯體中不存在物件金鑰時,客戶才能寫入此儲存貯體。

注意

此政策也會設定 s3:ObjectCreationOperation 條件索引鍵,以允許使用 CreateMultipartUploadUploadPartUploadPartCopy API 進行分段上傳。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowConditionalPut", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", "Condition": { "Null": { "s3:if-none-match": "false" } } }, { "Sid": "AllowConditionalPutwithMPUs", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", "Condition": { "Bool": { "s3:ObjectCreationOperation": "false" } } } ] }

範例 2:僅允許使用 PutObject 和包含 if-match 標頭的 CompleteMultipartUpload 請求上傳物件

此政策允許帳戶 111122223333 使用者 Alice 只有在請求包含 if-match 標頭時,才能寫入 amzn-s3-demo-bucket1。此標頭會將 S3 中物件的 ETag 值與您在 WRITE 操作期間提供的 ETag 值進行比較。如果 ETag 值不相符,操作將會失敗。對指定儲存貯體提出的所有 PutObjectCompleteMultipartUpload 請求都必須包含 if-match 標頭才能成功。

注意

此政策也會設定 s3:ObjectCreationOperation 條件索引鍵,以允許使用 CreateMultipartUploadUploadPartUploadPartCopy API 進行分段上傳。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutObject", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", }, { "Sid": "BlockNonConditionalObjectCreation", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", "Condition": { "Null": { "s3:if-match": "true" }, "Bool": { "s3:ObjectCreationOperation": "true" } } }, { "Sid": "AllowGetObjectBecauseConditionalPutIfMatchETag", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*" } ] }

範例 3:僅允許包含 if-none-matchif-match 標頭的物件上傳請求

此政策允許帳戶 111122223333 使用者 Alice 在請求包含 if-none-matchif-match 標頭時寫入 amzn-s3-demo-bucket1。這可讓 Alice 在儲存貯體中不存在金鑰名稱時上傳物件;如果金鑰名稱存在,則 Alice 可以在物件 ETag 符合 PUT 請求中提供的 ETag 時覆寫物件。

注意

此政策也會設定 s3:ObjectCreationOperation 條件索引鍵,以允許使用 CreateMultipartUploadUploadPartUploadPartCopy API 進行分段上傳。

{ "Version": "2012-10-17", "Statement": [ { "Sid": " AllowConditionalPutifAbsent", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", "Condition": { "Null": { "s3:if-none-match": "false" } } }, { "Sid": "AllowConditionalPutIfMatchEtag", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", "Condition": { "Null": { "s3:if-match": "false" } } }, { "Sid": "AllowConditionalObjectCreation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", "Condition": { "Bool": { "s3:ObjectCreationOperation": "false" } } }, { "Sid": " AllowGetObjectBecauseConditionalPutIfMatchETag", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*" } ] }
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。