You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨AWS账户访问S3,如何规避EC2与S3间的数据传输成本?

跨AWS账户访问S3的低成本方案(私有子网场景)

核心结论:VPC Gateway Endpoint 完全支持跨账户访问S3,这是你的最优选择

VPC网关型端点(Gateway Endpoint)本身就支持跨账户访问同区域的S3存储桶,流量直接通过AWS内部网络传输,无需走公网,能彻底规避NAT网关带来的数据传输成本。

具体配置步骤

1. 在账户A的VPC中创建S3 Gateway Endpoint

  • 关联到EC2实例所在的私有子网
  • 无需指定目标账户,网关端点是区域级资源,只要后续权限配置到位,就能访问同区域内任意账户的S3桶

2. 配置账户B的S3存储桶策略

在账户B的目标S3桶上添加桶策略,允许账户A的IAM实体(根用户/特定角色/用户)访问。示例策略如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::账户A-ID:root" // 可替换为具体IAM角色/用户ARN
      },
      "Action": ["s3:GetObject", "s3:ListBucket"], // 根据应用需求调整权限范围
      "Resource": [
        "arn:aws:s3:::目标桶名称",
        "arn:aws:s3:::目标桶名称/*"
      ]
    }
  ]
}

3. 配置账户A的IAM权限

确保账户A中EC2实例使用的IAM角色(或应用Access Key对应的IAM用户)拥有访问目标S3桶的权限。示例IAM策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:ListBucket"],
      "Resource": [
        "arn:aws:s3:::目标桶名称",
        "arn:aws:s3:::目标桶名称/*"
      ]
    }
  ]
}

4. 验证路由表配置

确认私有子网关联的路由表中,已添加指向S3 Gateway Endpoint的路由(目标前缀为S3区域前缀列表pl-xxxxxxxx,下一跳为网关端点ID)。AWS创建网关端点时通常会自动添加该路由,建议手动确认。

关于VPC Interface Endpoint的说明

接口型端点(Interface Endpoint)不适用于S3的低成本访问场景:

  • S3本身没有对应的Interface Endpoint,这类端点仅针对EC2 Messages、SSM等服务
  • 即使通过其他方式绕路,Interface Endpoint的数据传输会产生额外费用,性价比远低于Gateway Endpoint

额外注意事项

  • 区域限制:Gateway Endpoint仅支持访问同区域的S3桶。若账户B的S3桶在不同区域,可考虑在账户A的区域创建S3跨区域复制,将数据同步后再访问,避免跨区域公网传输成本。
  • 应用无需修改:应用使用标准S3 API调用(Access Key/Secret方式),配置网关端点后会自动通过内部网络访问S3,无需任何代码改动,完全适配遗留应用需求。

内容的提问来源于stack exchange,提问作者The Unknown Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:51:21