AWS VPC Gateway Endpoint 实现 ECS 访问 S3 无需公网的私有网络通信(配置步骤)

在 AWS 中,ECS(Elastic Container Service)任务通常运行在 VPC(Virtual Private Cloud)的私有子网中。默认情况下,访问 S3(Simple Storage Service)需要通过公网,这会增加延迟和安全风险。通过配置 VPC Gateway Endpoint(AWS 推荐的私有访问方式,基于私有网络技术),您可以将 S3 流量限制在 VPC 内部,无需公网网关或 NAT 设备。Gateway Endpoint 免费且高效,适用于 S3 和 DynamoDB。

以下是完整的配置步骤。整个过程基于 AWS 管理控制台或 AWS CLI,确保 ECS 任务在私有子网中运行,并通过 VPC Gateway Endpoint 路由 S3 流量。配置前,请确保:

  • 您有 AWS 账户和 IAM 权限(如 AmazonVPCFullAccessAmazonECS_FullAccess)。
  • ECS 集群已部署在 VPC 的私有子网中。
  • S3 存储桶已创建。
配置步骤
  1. 创建 VPC Gateway Endpoint for S3

    • 登录 AWS 管理控制台,导航到 VPC 服务
    • 在左侧菜单,选择 Endpoints > Create Endpoint
    • 配置 Endpoint:
      • Service category: 选择 "AWS services"。
      • Service name: 输入 S3 的服务名称(格式:com.amazonaws.<region>.s3,例如 com.amazonaws.us-east-1.s3)。
      • VPC: 选择您的 ECS 集群所在的 VPC。
      • Route tables: 选择关联到 ECS 私有子网的路由表(确保选中所有需要访问 S3 的私有子网路由表)。
      • Policy: 选择 "Full access" 或自定义策略(例如,限制仅允许特定 S3 存储桶访问)。
    • 点击 Create endpoint。创建成功后,AWS 会自动在路由表中添加一条路由,将 S3 流量指向该 Endpoint。

    AWS CLI 命令示例(替换 <vpc-id><region><route-table-id> 为实际值):

    aws ec2 create-vpc-endpoint --vpc-id <vpc-id> \
    --service-name com.amazonaws.<region>.s3 \
    --route-table-ids <route-table-id> \
    --region <region>
    

  2. 验证路由表配置

    • 在 VPC 控制台,导航到 Route Tables
    • 选择关联了 Gateway Endpoint 的路由表。
    • 检查路由规则:应有一条路由指向 pl-xxxxxxx(S3 前缀列表),目标为 vpce-xxxxxxx(您的 Gateway Endpoint ID)。这确保所有 S3 流量(例如,目标 IP 范围匹配 S3)被路由到 Endpoint 而不经公网。
    • 确保 ECS 任务所在的私有子网已关联此路由表(默认在创建 Endpoint 时已关联)。
  3. 配置 ECS 任务和网络

    • 确保 ECS 任务定义中,网络模式设置为 awsvpc(推荐),以便任务直接使用 VPC IP 地址。
    • 在 ECS 服务或任务运行时,指定私有子网和安全组:
      • 私有子网:选择已关联 Gateway Endpoint 路由表的子网。
      • 安全组:允许出站流量到 S3(默认安全组已允许所有出站流量;如需限制,添加入站规则但通常不需要)。
    • 更新 ECS 服务(如果已运行)以应用新网络设置。
  4. 测试 S3 访问

    • 从 ECS 任务容器中执行测试命令,确认访问 S3 无需公网:
      • 使用 AWS CLI 运行 aws s3 ls(列出存储桶),或上传/下载文件。
      • 示例命令(在 ECS 容器内执行):
        aws s3 ls s3://your-bucket-name
        

      • 验证结果:如果成功,表示流量通过私有网络;如果失败,检查路由表和安全组。
    • 监控流量:在 VPC Flow Logs 中,确认 S3 流量的源 IP 是私有子网 IP,且无公网出口。
注意事项
  • 安全性:Gateway Endpoint 自动加密流量。建议通过 Endpoint 策略限制 S3 访问权限(例如,仅允许特定 IAM 角色或存储桶),避免数据泄露。
  • 成本:VPC Gateway Endpoint for S3 免费,但 S3 请求和数据传输正常计费。
  • 故障排除
    • 如果访问失败,检查路由表是否正确关联、ECS 任务是否在私有子网,以及 IAM 角色是否有 S3 权限。
    • 确保 VPC 中没有冲突的路由(如 NAT 网关优先于 Endpoint)。
    • 使用 AWS 的 VPC Reachability Analyzer 工具测试网络路径。
  • 替代方案:如果您的场景需要更高级功能(如跨 VPC 访问),可以使用 VPC Interface Endpoint(基于 PrivateLink),但 S3 推荐 Gateway Endpoint 以简化配置。

通过以上步骤,ECS 任务可以安全、高效地访问 S3,所有流量保持在 AWS 私有网络内,提升性能和安全性。如果有更多细节需求,请提供具体环境信息!

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐