我们有许多需要在互联网上搜寻的MySQL数据库和图像文件(xx TB),这些数据库和图像文件需要分发给我们的用户。为了避免潜在的数据传输账单混乱,我们仅允许从同一区域内访问我们的数据下载。
我们如何在S3存储桶策略中强制执行此操作?我们想到的是这样的:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Same region access only",
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::ourbucket"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": ["18.208.0.0/13", "52.95.245.0/24", "54.196.0.0/15", ... ]
}
}
},
]
}
其中IP范围来自此处:https://ip-ranges.amazonaws.com/ip-ranges.json
但是对于任何特定的AWS区域而言,其中的IP范围太小,将它们添加到我们的存储桶策略中比较繁琐,这很容易受到我们必须不断更改的影响未来。
有没有更好的方法来实现这一目标,例如:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Permissions to foreign account 1",
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::ourbucket"
],
"Condition": {
"Source": {
"aws:Region": ["us-east-1", "eu-central-1", ... ]
}
}
},
]
}
哪个会很好。可能?还是IP范围是执行此操作的唯一方法?
答案 0 :(得分:-1)
尽管S3存储桶是特定于区域的,但这仅会影响访问它们时的延迟。默认情况下,从公共互联网访问时,不管原始区域如何,传出数据传输的价格都相同。 S3存储桶之间的转移也是免费的。
如果启用了CRR之类的功能,则需要支付单独的复制费用,但是再次向公共Internet传输则无需另外付费。
当您将数据从S3移至其他地区的任何其他Amazon服务时,跨地区传输将收费。
所有相关数据和详细信息都可以在here中找到。
如果您觉得上一页中的定价详细信息不够清楚,则应向Amazon提出支持案例,他们应该能够为您提供更详细的答案。