阿里云OSS的请求者付费模式是指由请求者支付访问存储空间(Bucket)内数据时产生的费用,而Bucket拥有者仅支付存储费用。当您希望共享数据,但又不希望支付因共享数据产生的额外费用时,您可以开启此功能。
操作方式
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
命令行工具ossutil | 命令行工具,性能好 |
Java SDK | 丰富、完整的各类语言SDK demo |
PHP SDK | |
Node.js SDK | |
Python SDK | |
.NET SDK | |
Go SDK | |
C++ SDK |
使用案例
- 共享大型数据集(如邮政编码目录、参考数据、地理空间信息或网络爬取数据)。例如,研究机构提供公开数据集,希望所有客户都能访问该数据,但请求产生的流量费用和请求次数费用由请求者支付。配置步骤如下:
- 将Bucket开启请求者付费模式。详细配置步骤请参见设置请求者付费模式。
- 通过Bucket Policy,将该Bucket授权给您客户的阿里云RAM子账号。配置详情请参见使用Bucket Policy授权其他用户访问OSS资源。
- 将数据交付给您的客户或合作伙伴。例如,某公司需要将生产数据交付给他的合作伙伴,下载数据产生的流量费用和请求次数费用需要由合作伙伴支付。
配置步骤如下:
- 将Bucket开启请求者付费模式。
- 将Bucket ACL设置为私有。
- 利用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时,请求产生的费用由数据拥有者(也是请求者)来支付。 - 对于POST、GET和HEAD请求,请求头中必须携带
费用详解
请求者付费模式下,请求者会根据请求的内容支付请求次数、外网流出流量、CDN回源流量、图片处理、视频截帧、低频或归档存储的数据取回等费用中的一项或多项,Bucket拥有者支付其他费用(如存储费用、对象标签费用、传输加速费用等)。如果出现以下情况,请求会失败(返回HTTP 403错误),将对Bucket拥有者收取请求费用:
- 请求者未在请求中(GET、HEAD或POST)包含参数x-oss-request-payer,或未在请求中将其作为参数(REST) 。
- 请求身份验证失败。
- 请求是匿名请求 。