使用申请方付款存储桶进行存储传输和使用
通常,存储桶拥有者将支付与他们的存储桶相关联的所有 Amazon S3 存储和数据传输费用。但是,您可以将存储桶配置为申请方付款存储桶。使用申请方付款存储桶时,申请方(而不是存储桶拥有者)将支付请求和从存储桶下载数据的费用。存储桶拥有者将始终支付存储数据的费用。
通常情况下,当您想共享数据,而又不希望产生与访问数据等其他操作相关联的费用时,您可以将存储桶配置为申请方付款存储桶。例如,当提供大型数据集(如邮政编码目录、参考数据、地理空间信息或网络爬取数据)时,您可能会使用申请方付款存储桶。
重要
如果您在存储桶上启用了申请方付款,则不允许匿名访问该存储桶。
您必须对涉及申请方付款存储桶的所有请求进行身份验证。请求身份验证使 Amazon S3 能够识别申请方对申请方付款存储桶的使用并对其收费。
当请求者在做出其请求前担任 AWS Identity and Access Management (IAM) 角色时,该角色所属的账户将负责处理此请求。有关 IAM 角色的更多信息,请参阅《IAM 用户指南》中的 IAM 角色。
在将桶配置为申请方付款桶后,申请方必须表明他们了解请求和数据下载将产生费用。为了表明他们接受这些费用,申请方必须在 DELETE、GET、HEAD、POST 和 PUT 请求的 API 请求中包含 x-amz-request-payer
作为标头,或者在其 REST 请求中添加 RequestPayer
参数。对于 CLI 请求,申请方可以使用 --request-payer
参数。
例 – 删除对象时使用申请方付款
要使用以下 DeleteObjectVersion API 示例,请将
替换为您自己的信息。user input placeholders
DELETE /Key+?versionId=VersionId HTTP/1.1 Host: Bucket.s3.amazonaws.com x-amz-mfa:
MFA
x-amz-request-payer:RequestPayer
x-amz-bypass-governance-retention:BypassGovernanceRetention
x-amz-expected-bucket-owner:ExpectedBucketOwner
如果申请方使用 RestoreObject API 还原对象,则只要请求中包含 x-amz-request-payer
标头或 RequestPayer
参数,就会支持申请方付款;但是,申请方只需支付请求的费用。检索费用由桶拥有者支付。
申请方付款存储桶不支持以下内容:
-
匿名申请
-
SOAP 请求
-
将申请方付款存储桶用作最终用户日志记录的目标存储桶,反之亦然。但是,当目标存储桶不是申请方付款存储桶时,您可以在申请方付款存储桶上开启最终用户日志记录。
申请方付款的费用支付方式
成功的申请方付款请求费用简单明了:申请方支付数据传输和请求方面的费用;存储桶拥有者支付数据存储方面的费用。但是,在以下条件下会对存储桶拥有者收取请求费用:
-
该请求返回
AccessDenied
(HTTP403 Forbidden
)错误,并且该请求是在存储桶拥有者的个人 AWS 账户或 AWS 组织内发起的。 -
请求是 SOAP 请求。
有关申请方付款的更多信息,请参阅以下主题。