例如,如果我以美国标准存储数据,S3 定价页面会显示,传输到北弗吉尼亚地区的 Amazon EC2 每 GB 的费用为 0.00 美元。
看起来每 10,000 个 GET 请求的费用为 0.004 美元。
因此,在我看来,如果我正确设置了我的美国标准区域 S3 规则,并且我的客户在北弗吉尼亚区域正确设置了他们的 EC2 实例,那么 10,000 个 GET 请求总共将花费我 0.004 美元。
(在我的 S3 存储成本之上。)
如果我的客户想要将数据移出 EC2,那么费用是他们的,计费是他们的问题,等等。
那么,S3 存储桶策略和 IAM 策略或甚至旧式 S3 ACL 的哪种组合可以让我实现这一点?
答案1
正确的。
获取 us-east-1(S3 中美国标准区域的所在地)的已发布 IP 网络块列表...
https://forums.aws.amazon.com/ann.jspa?annID=1701
...并使用它来制定存储桶策略,以在源 IP 不在范围内时拒绝请求,或者仅当源 IP 在范围内时允许(最佳选择取决于您的其他策略,因为拒绝将始终、始终、始终覆盖冲突的允许)...
http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
...你应该已经得到你所需要的了。
或者,存在“请求者付费”的概念,其中收费负担留给请求者。
http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html
这意味着您的客户端必须根据他们自己的 AWS 凭证进行身份验证(您可以允许该凭证单独或全局访问您的存储桶,具体取决于您的安全模型)。
或者,根据所讨论的内容,您可以要求客户端按照美国标准创建一个存储桶(通过查询存储/?location
桶进行验证;没有约束意味着美国标准),然后您可以将内容推送给他们,所有费用均由他们承担。