阿里云OSS的请求者付费模式是指由请求者支付访问存储空间(Bucket)内数据时产生的费用,而Bucket拥有者仅支付存储费用。当您希望共享数据,但又不希望支付因共享数据产生的额外费用时,您可以开启此功能。

操作方式

操作方式 说明
控制台 Web应用程序,直观易用
命令行工具ossutil 命令行工具,性能好
Java SDK 丰富、完整的各类语言SDK demo
PHP SDK
Node.js SDK
Python SDK
.NET SDK
Go SDK
C++ SDK

使用案例

  • 共享大型数据集(如邮政编码目录、参考数据、地理空间信息或网络爬取数据)。例如,研究机构提供公开数据集,希望所有客户都能访问该数据,但请求产生的流量费用和请求次数费用由请求者支付。配置步骤如下:
    1. 将Bucket开启请求者付费模式。详细配置步骤请参见设置请求者付费模式
    2. 通过Bucket Policy,将该Bucket授权给您客户的阿里云RAM子账号。配置详情请参见使用Bucket Policy授权其他用户访问OSS资源
  • 将数据交付给您的客户或合作伙伴。例如,某公司需要将生产数据交付给他的合作伙伴,下载数据产生的流量费用和请求次数费用需要由合作伙伴支付。
    配置步骤如下:
    1. 将Bucket开启请求者付费模式。
    2. 将Bucket ACL设置为私有。
    3. 利用Bucket Policy,将该Bucket授权给您的合作伙伴的阿里云RAM子账号。配置详情请参见基于Bucket Policy实现跨账号访问OSS
    注意 您需要将Bucket授权给对方的RAM子账号,而不是将您账号下的RAM子账号的AK提供给对方。因为,当对方通过您账号下的RAM子账号访问时,请求者仍是您自身,则请求费用需要由您(请求者)付费。

请求方式

  • 不允许匿名访问

    如果您在Bucket上启用了请求者付费模式,则不允许匿名访问该Bucket。请求方必须提供身份验证信息,以便OSS能够识别请求方,从而对请求方而非Bucket拥有者收取请求所产生的费用。

    当请求者是通过扮演阿里云RAM角色来请求数据时,该角色所属的账户将为此请求付费。

  • 申请方需携带x-oss-request-payer信息
    如果您在Bucket上启用了请求者付费模式,请求中必须携带 x-oss-request-payer请求头,以表明请求方已了解需要支付请求和数据下载费用。否则,请求方无法通过验证。
    • 对于POST、GET和HEAD请求,请求头中必须携带x-oss-request-payer:requester
    • 对于签名URL,需在请求中包含x-oss-request-payer=requester

    数据拥有者访问该Bucket时,可以不携带x-oss-request-payer请求头。数据拥有者作为请求者访问该Bucket时,请求产生的费用由数据拥有者(也是请求者)来支付。

费用详解

请求者付费模式下,请求者会根据请求的内容支付请求次数、外网流出流量、CDN回源流量、图片处理、视频截帧、低频或归档存储的数据取回等费用中的一项或多项,Bucket拥有者支付其他费用(如存储费用、对象标签费用、传输加速费用等)。如果出现以下情况,请求会失败(返回HTTP 403错误),将对Bucket拥有者收取请求费用:

  • 请求者未在请求中(GET、HEAD或POST)包含参数x-oss-request-payer,或未在请求中将其作为参数(REST) 。
  • 请求身份验证失败。
  • 请求是匿名请求 。