DynamoDB+S3 跨账户通过私有网络互访

DynamoDB+S3 跨账户通过私有网络互访

Deng YongJie's blog 7 2025-07-27

需求

在私有网络里,访问S3,流量需要全部走私有网络通信,不能通过互联网

Account A EKS -> Account B S3 bucket

Account B EKS -> Account A S3 bucket

方案

https://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-s3

image-20250527100402981

配置 安全性 性能 适用场景
网关端点 + 接口端点 ✅ 高 ✅ 低延迟 私有 DNS + 细粒度安全控制
仅网关端点 ✅ 中 ✅ 高 简单私有网络访问 S3

1. S3 Gateway Endpoint

  • 内网路由

    • S3 是 AWS 的全局服务,其流量可通过 AWS 骨干网直接路由,无需依赖传统的 VPC 对等连接。

    • S3 Gateway Endpoint 的本质是为 VPC 内资源提供一条 私有网络路径 访问 S3。 VPC 中创建了 S3 Gateway Endpoint 后,所有指向 S3 的流量会通过 AWS 骨干网络传输(即使bucket属于另一个账户)。

    • AWS 骨干网自动处理跨账户流量,无需依赖 VPC 对等连接。

2.S3 Interface Endpoint

  • 创建S3 Interface Endpoint 必须要依赖 S3 Gateway Endpoint

  • 私有 DNS 的覆盖范围限制

    • *.vpce-xxxxxx.s3.ap-east-1.vpce.amazonaws.com(接口端点专用域名)
    • 不会覆盖标准 S3 域名(如 s3.ap-east-1.amazonaws.com)。
    • 因此,直接解析 s3.ap-east-1.amazonaws.com 时,仍会返回公网 IP。
    • 只有通过接口端点的专用域名访问时,流量才会路由到私有 IP。
    • 接口端点为 VPC 提供专用入口,流量在 AWS 内部网络中被自动路由,无需依赖 VPC 对等连接。

验证

**注意:**Access Key身份验证,需要先建立STS的接口端点

image-20250527100938620

新增Terraform 接口端点代码

image-20250527103153940

apply terraform

image-20250527103336570

控制台查看创建状态

image-20250527103418934

在Account B账户创建1个bucket,用于验证网络

image-20250527103610304

在Account A测试接口端点DNS解析是否为私有地址,核对接口端点在subnet的地址

image-20250527103656512

image-20250527103759472

在Account A的无IGW、NAT私有网络服务器,登录Account B账户 Access Key,访问S3 bucket

aws s3 ls s3://jette-test-peerconnection   --region ap-east-1   --endpoint-url https://bucket.vpce-xxxxxxx.s3.ap-east-1.vpce.amazonaws.com

image-20250527103914295

注意:vpce域名前面的bucket是固定格式,不能替换为自己的bucket name,否则会出现SSL validation failed

image-20250527104155873

同样,DynamoDB也是,但是DynamoDB仅需interface端点既可完成私有IP通信

https://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-ddb

image-20250529111929662