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

使用场景

  • 共享大型数据集。例如某研究机构希望所有客户都能访问包含邮政编码目录、参考数据、地理空间信息或网络爬取等数据的共享数据集,同时希望下载数据产生的流量费用和请求次数费需由请求者支付。

    配置步骤如下:

    1. 确保存放共享数据集所属Bucket的读写权限ACL为公共读。具体步骤,请参见Bucket ACL。

    2. 为该Bucket开启请求者付费模式。

  • 将生产数据交付给您的客户或合作伙伴。例如,某公司需要将生产数据交付给他的合作伙伴,下载数据产生的流量费用和请求次数费用需要由合作伙伴支付。

    配置步骤如下:

    重要 您需要将Bucket授权给合作伙伴的RAM用户,而不是将您账号下RAM用户的AccessKey提供给合作伙伴进行访问。原因是当合作伙伴通过您账号下的RAM用户访问时,请求者是您自身,请求费用仍需要您(请求者)来支付。

    1. 确保存放生产数据所属Bucket的读写权限ACL设置为私有。具体步骤,请参见Bucket ACL。

    2. 为该Bucket开启请求者付费模式。

    3. 通过Bucket Policy授权您的合作伙伴访问该Bucket内指定的生产数据。具体步骤,请参见基于Bucket Policy实现跨账号访问OSS。

请求方式

  • 不允许匿名访问

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

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

  • 请求中需携带请求头x-oss-request-payer如果您在Bucket上启用了请求者付费模式,请求中必须携带x-oss-request-payer请求头,取值为requester,以表明请求方已了解需要支付请求和数据下载费用。否则,请求方无法通过验证。

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

    • 对于POST、GET和HEAD请求,需在请求中包含x-oss-request-payer:requester信息。

    • 对于签名URL,需在请求中包含x-oss-request-payer=requester信息。

费用说明

请求者付费模式下,请求者会根据请求的内容支付请求费用、外网流出流量、CDN回源流出流量、图片处理、视频截帧、低频或归档数据取回、高级图片压缩费用中的一项或多项,Bucket拥有者仅支付如存储费用、对象标签费用、传输加速费用等。关于各计费项的更多信息,请参见计费概述。

如果出现以下情况,请求会失败,并返回HTTP 403错误,且由Bucket拥有者支付请求费用:

  • 请求者未在请求中(GET、HEAD或POST)包含请求头x-oss-request-payer 。

  • 请求身份验证失败。

  • 该请求是匿名请求 。

使用OSS控制台

使用阿里云SDK


使用命令行工具ossutil

使用REST API