![为什么 S3 到 S3 的复制会关心 VPC?与错误相关:“VPC 端点不支持跨区域请求。”](https://linux22.com/image/781358/%E4%B8%BA%E4%BB%80%E4%B9%88%20S3%20%E5%88%B0%20S3%20%E7%9A%84%E5%A4%8D%E5%88%B6%E4%BC%9A%E5%85%B3%E5%BF%83%20VPC%EF%BC%9F%E4%B8%8E%E9%94%99%E8%AF%AF%E7%9B%B8%E5%85%B3%EF%BC%9A%E2%80%9CVPC%20%E7%AB%AF%E7%82%B9%E4%B8%8D%E6%94%AF%E6%8C%81%E8%B7%A8%E5%8C%BA%E5%9F%9F%E8%AF%B7%E6%B1%82%E3%80%82%E2%80%9D.png)
目标:获取文件
- 从账户 A 中 ca-central-1 中的存储桶 1
- 到账户 B 中 us-east-1 中的存储桶 2
- 使用从第三台机器上使用具有正确 S3 读写权限的 IAM 角色的 AWS CLI(除非不太可能)
我收到错误:
ClientError: 调用 CopyObject 操作时发生错误 (AccessDenied):VPC 终端节点不支持跨区域请求
和这个打破了我对 S3 工作原理的思维模型。我认为 S3 不在任何 VPC 后面,并且 VPC 端点只是私有子网内机器的替代路由路径(互联网除外)。
但是如果您使用 CLI 并要求将文件从一个 S3 存储桶传输到另一个 S3 存储桶,那么为什么 VPC 会发挥作用呢?
答案1
我假设,既然您说“使用 IAM 角色从第三台机器使用 AWS CLI”,那么您的“第三台机器”(为什么是第三台?)是 VPC 内的 EC2 实例。
EC2 实例位于 VPC 内。如果该 VPC 具有 S3 VPC 端点,则 EC2 实例将使用它,因为端点的使用基于 DNS。您发现 VPC 端点不支持跨区域复制。
选项: