我想允许位于 us-east-1 的 EC2 服务器读取位于 us-west-2 的存储桶中的内容。
每次我尝试时,都会收到一条消息“您尝试访问的存储桶必须使用指定的端点进行寻址。请将所有未来的请求发送到此端点”
实际上是否真的可以允许这样的事情,或者 S3 存储桶是否被锁定在一个区域?
答案1
所有存储桶都可以通过 s3.amazonaws.com 端点访问。当您使用此端点时,如果存储桶位于非标准美国地区,那么您将被重定向到正确的端点。这是此技巧唯一有效的地区/端点。
如果存储桶位于标准美国区域,则必须使用 s3.amazonaws.com 端点。其他区域端点均不起作用。
如果您对存储桶使用了正确的端点,那么您可以从任何区域访问该存储桶。
请参见http://docs.amazonwebservices.com/general/latest/gr/rande.html#s3_region了解完整的 S3 区域说明。
答案2
关于 VPC,请注意以下几点:
如果您想要从区域 A 中的 VPC 连接到区域 B 中的存储桶,则将 S3 终端节点连接到您的 VPC 是不够的,因为您只能通过此终端节点访问区域 A 中的存储桶。相反,您需要通过公共互联网从区域 A 中的 VPC 连接到区域 B 中的存储桶。
也可以看看 https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints-s3.html
其中指出:
端点当前不支持跨区域请求 - 请确保您在与存储桶相同的区域中创建端点。
和https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpce-gateway.html#vpc-endpoints-limitations
其中指出:
仅支持同一区域内的终端节点。您无法在 VPC 和不同区域的服务之间创建终端节点。