需求
在私有网络里,访问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
配置 | 安全性 | 性能 | 适用场景 |
---|---|---|---|
网关端点 + 接口端点 | ✅ 高 | ✅ 低延迟 | 私有 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的接口端点
新增Terraform 接口端点代码
apply terraform
控制台查看创建状态
在Account B账户创建1个bucket,用于验证网络
在Account A测试接口端点DNS解析是否为私有地址,核对接口端点在subnet的地址
在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
注意:vpce域名前面的bucket是固定格式,不能替换为自己的bucket name,否则会出现SSL validation failed