为什么 S3 到 S3 的复制会关心 VPC?与错误相关:“VPC 端点不支持跨区域请求。”

为什么 S3 到 S3 的复制会关心 VPC?与错误相关:“VPC 端点不支持跨区域请求。”

目标:获取文件

  • 账户 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 端点不支持跨区域复制。

选项:

  • 使用内置S3 复制复制存储桶/文件夹,但这可能不够灵活,无法复制单个文件
  • 删除您的 VPC 终端节点
  • 使用 --endpoint-urlS3 CLI手动指定公共 S3 端点的 URL。我不能 100% 确定这是否可行,但值得一试
  • 编写一个 lambda 函数来执行复制,确保它在 VPC 之外运行 - 这是默认设置,除非你将其配置为在 VPC 内运行

相关内容