限制按AWS区域访问S3存储桶?

时间:2018-09-07 06:33:18

标签: amazon-web-services amazon-s3

我们有许多需要在互联网上搜寻的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范围是执行此操作的唯一方法?

1 个答案:

答案 0 :(得分:-1)

尽管S3存储桶是特定于区域的,但这仅会影响访问它们时的延迟。默认情况下,从公共互联网访问时,不管原始区域如何,传出数据传输的价格都相同。 S3存储桶之间的转移也是免费的。

如果启用了CRR之类的功能,则需要支付单独的复制费用,但是再次向公共Internet传输则无需另外付费。

当您将数据从S3移至其他地区的任何其他Amazon服务时,跨地区传输将收费。

所有相关数据和详细信息都可以在here中找到。

如果您觉得上一页中的定价详细信息不够清楚,则应向Amazon提出支持案例,他们应该能够为您提供更详细的答案。