使用申请方付款存储桶进行存储传输和使用 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用申请方付款存储桶进行存储传输和使用

通常,存储桶拥有者将支付与他们的存储桶相关联的所有 Amazon S3 存储和数据传输费用。但是,您可以将存储桶配置为申请方付款存储桶。使用申请方付款存储桶时,申请方(而不是存储桶拥有者)将支付请求和从存储桶下载数据的费用。存储桶拥有者将始终支付存储数据的费用。

通常情况下,当您想共享数据,而又不希望产生与访问数据等其他操作相关联的费用时,您可以将存储桶配置为申请方付款存储桶。例如,当提供大型数据集(如邮政编码目录、参考数据、地理空间信息或网络爬取数据)时,您可能会使用申请方付款存储桶。

重要

如果您在存储桶上启用了申请方付款,则不允许匿名访问该存储桶。

您必须对涉及申请方付款存储桶的所有请求进行身份验证。请求身份验证使 Amazon S3 能够识别申请方对申请方付款存储桶的使用并对其收费。

当请求者在做出其请求前担任 Amazon 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 请求

  • 将申请方付款存储桶用作最终用户日志记录的目标存储桶,反之亦然。但是,当目标存储桶不是申请方付款存储桶时,您可以在申请方付款存储桶上开启最终用户日志记录。

申请方付款的费用支付方式

成功的申请方付款请求费用简单明了:申请方支付数据传输和请求方面的费用;存储桶拥有者支付数据存储方面的费用。但是,在以下条件下会对存储桶拥有者收取请求费用:

  • 申请方未在标头中(DELETE、GET、HEAD、POST 和 PUT)包含参数 x-amz-request-payer,或未在请求中将其作为参数(REST)(HTTP 代码 403)。

  • 请求身份验证失败 (HTTP 代码 403)。

  • 请求是匿名的 (HTTP 代码 403)。

  • 请求是 SOAP 请求。

有关申请方付款的更多信息,请参阅以下主题。