费用计算 | S3 权限是如何计费的?


  服务概要

S3权限是指用户对存储在 S3存储桶中的文件进行访问控制的方式。常见的权限设置包括存储桶策略(Bucket Policy)、IAM 用户策略、访问控制列表(ACL)等。很多用户会关心一个问题:配置这些权限是否需要额外付费?答案是:权限管理功能本身是免费的。用户不需要为创建存储桶策略、设置 IAM 权限或配置 ACL 而支付任何服务费。但是,权限设置会影响谁可以访问用户的数据,而每一次成功的访问请求(如上传、下载、列出文件)都会产生请求费用。另外,AWS 还提供了一种特殊的权限模式叫做“申请方付款”(Requester Pays)。在这种模式下,数据的拥有者仍然支付存储费用,但访问数据的请求方需要支付数据传输和请求费用。这种模式常用于共享大型数据集(如公开的地理信息或参考数据),让数据提供方可以免费分享数据,而使用方承担访问成本。理解这一点很重要:设置权限不花钱,但权限放行后产生的每一次访问操作都会带来账单。


  定价模式

采用按使用量付费的模式,没有最低费用或也不需要承诺或者预付费。
S3权限相关的费用可以从两个层面理解。第一层面是权限管理功能本身,它完全免费。无论用户在存储桶上配置多么复杂的存储桶策略,或者为多少个 IAM 用户分配权限,AWS 都不会收取管理费。第二层面是权限所允许的 API 请求,这些请求会产生费用。S3的请求费用按请求次数收费,不同类型的请求价格不同。例如,GET 请求(下载文件)和 PUT 请求(上传文件)都有各自的费率。以美东区域为例,每1000个 GET 请求约0.0004美元,每1000个 PUT 请求约0.005美元。如果权限设置不当导致大量意外访问,这些请求费用会累积到用户的账单上。另外,申请方付款模式是一种特殊的定价安排:当用户将存储桶设置为申请方付款后,访问该存储桶的用户必须在请求中携带标识(x-amz-request-payer 头信息),表示愿意承担费用。此时,数据访问的请求费和数据传输费由申请方支付,而存储费仍由存储桶拥有者支付。需要注意的是,申请方付款存储桶不支持匿名访问,所有请求都必须经过身份验证。权限功能免费,但权限允许的每一次访问都会按标准请求费率计费。合理设置权限,避免不必要的公开访问,是控制 S3账单的重要环节。


  计费示例

A 公司创建了一个存储桶,设置了存储桶策略,允许某第三方公司的 IAM 角色读取其中的数据。这个策略的设置过程完全免费。该第三方公司每天通过 GET 请求下载10000个文件(即每天10000次 GET 请求)。一个月下来,GET 请求总量为30万次(10000 × 30天)。按照每1000次 GET 请求0.0004美元计算,请求费用为0.0004 × 300 = 0.12美元。另外,这些数据从 S3传输到对方公司的服务器会产生数据传输费用(假设跨区域传输,每 GB 约0.09美元),这取决于文件大小。权限设置本身没有额外成本,用户只支付请求费和传输费,。

B 公司有一个1TB 的大型公开数据集,用户希望免费分享给研究人员使用。用户将存储桶设置为申请方付款模式,并配置存储桶策略允许所有 AWS 用户访问。有一位研究人员从该存储桶下载了100GB 的数据。在这种情况下,用户(存储桶拥有者)只需要支付这100GB 数据的存储费用(约每月0.023美元 × 100 = 2.3美元)。而研究人员(申请方)需要支付100GB 的数据传输费用(约9美元)以及相应的 GET 请求费用。如果某个请求返回了 AccessDenied 错误,且该请求来自用户自己的 AWS 账户或组织内部,那么请求费用仍由用户承担。