我想允许s3:GetObject
从不同区域的VPC访问S3存储桶。
如果S3存储桶和VPC位于同一区域,我知道我们可以使用VPC端点。 但是,当我们想要允许来自不同地区的访问时,我们有什么选择?
选项1:
为区域内所有可用区域的所有子网创建NAT网关,并在S3存储桶策略中允许从NAT网关访问。弹性IP。
但是这样你需要很多NAT网关(例如:对于us-east-1区域为6)
其他选择?
答案 0 :(得分:0)
您需要在两个VPC之间建立VPN连接:
第一个VPC与S3&启用VPC端点。
第二个VPC位于其他区域。
请注意,您不能利用VPC对等连接,因为它不是同一个区域。
答案 1 :(得分:0)
简单的答案是,您不能限制来自不同区域的VPC的一个区域中的S3存储桶的访问。您可以创建使用IP地址来控制访问的S3策略。您的NAT网关将具有公共IP地址,您的实例可以具有公共地址等。
当流量离开VPC时,它将使用公共IP地址空间。当S3存储桶收到这些请求时,它将不知道它来自哪个VPC。这是创建VPC端点和PrivateLink的原因之一。
以下是使用IP地址控制权限的示例S3策略。使用您的VPC中的真实公共地址进行修改。
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Principal": "*",
"Action":["s3:GetObject"] ,
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition" : {
"IpAddress" : {
"aws:SourceIp": "192.168.143.0/24"
},
"NotIpAddress" : {
"aws:SourceIp": "192.168.143.188/32"
}
}
}
]
}