终端节点
| 文档属性 | 说明 |
|---|---|
| 难度 | 中级 |
| 预计时间 | 20-40 分钟 |
| 演示环境 | AWS VPC / 私有子网 |
| 最后验证 | 请参考 AWS 官方文档获取最新信息 |
完成本指南后,你将能够:
- 理解 Gateway Endpoint 和 Interface Endpoint 的区别与适用场景
- 为私有子网中的资源创建 VPC Endpoint
- 配置安全组和 DNS 解析
- 一个已存在的 VPC,包含至少一个私有子网
- VPC 已启用 DNS 解析和 DNS 主机名
- 具有 VPC 和 EC2 权限的 IAM 用户或 Role
VPC Endpoint 的典型应用场景:
| 场景 | 说明 | 推荐方案 |
|---|---|---|
| 私有子网访问 AWS 服务 | EC2、Lambda、ECS 等资源需要访问 S3、SSM、CloudWatch 等服务 | Gateway Endpoint(S3/DynamoDB)+ Interface Endpoint(其他服务) |
| 合规与安全要求 | 金融、医疗等行业要求流量不经过公网 | Interface Endpoint,流量完全在 AWS 骨干网内 |
| 混合云架构 | 本地数据中心通过 Direct Connect/VPN 访问 AWS 服务 | Interface Endpoint + Route 53 Resolver |
| 多 VPC 共享服务(同区域) | 同区域多个 VPC 需要访问同一组 AWS 服务 | 集中式 Endpoint + Transit Gateway + PHZ |
| 多账号共享服务 | 多个 AWS 账号的 VPC 共享 Endpoint | 集中式 Endpoint + Transit Gateway(RAM 共享)+ PHZ 跨账号关联 |
| 跨区域访问 AWS 服务 | 从一个区域访问另一个区域的 AWS 服务 | 远端区域创建 Endpoint + VPC/TGW Peering + PHZ |
| SaaS 服务集成 | 访问第三方通过 PrivateLink 发布的服务 | Interface Endpoint(支持原生跨区域访问) |
VPC Endpoint 相比 NAT Gateway
| 维度 | VPC Endpoint | NAT Gateway |
|---|---|---|
| 安全性 | 流量不经过公网,完全在 AWS 网络内 | 流量经过公网,需额外安全措施 |
| 费用(S3/DynamoDB) | Gateway Endpoint 免费 | $0.045/小时 + $0.045/GB |
| 费用(其他服务) | Interface Endpoint 约 $0.01/小时/AZ + $0.01/GB | $0.045/小时 + $0.045/GB |
| 带宽 | 无限制(Gateway)/ 10 Gbps(Interface) | 最高 100 Gbps |
| 访问范围 | 仅限配置的 AWS 服务 | 任意互联网地址 |
| 配置复杂度 | 每个服务需单独创建 | 一次配置,访问所有服务 |
Gateway Endpoint
| 优势 | 劣势 |
|---|---|
| 完全免费 | 仅支持 S3 和 DynamoDB |
| 无带宽限制 | 不支持跨 VPC 访问 |
| 配置简单,仅需路由表条目 | 不支持从本地网络访问 |
| 高可用,无需多 AZ 部署 | 无法通过安全组控制 |
| - | 不支持跨账号共享 |
| - | 不支持跨区域访问 |
Interface Endpoint
| 优势 | 劣势 |
|---|---|
| 支持 200+ AWS 服务及第三方 SaaS | 按小时和数据量收费 |
| 支持跨 VPC 共享(通过 Transit Gateway + PHZ) | 每个 AZ 单独计费 |
| 支持从本地网络通过 Direct Connect 访问 | 需配置安全组和 DNS |
| 可通过安全组和 Endpoint Policy 精细控制 | 带宽上限 10 Gbps |
| 支持 Private DNS 透明替换公网端点 | 大规模部署成本较高 |
| 支持跨区域访问(2024年新功能) | 跨区域仅限 NLB 服务,不含 AWS 托管服务 |
跨账号与跨区域支持
Section titled “跨账号与跨区域支持”跨账号访问
| 端点类型 | 跨账号支持 | 实现方式 |
|---|---|---|
| Gateway Endpoint | 不支持 | 每个账号的 VPC 需独立创建(免费,无需共享) |
| Interface Endpoint | 支持(间接) | 通过 Transit Gateway + Route 53 Private Hosted Zone 共享 |
Interface Endpoint 的跨账号共享架构:
- 在中心网络账号创建 Interface Endpoint(不启用 Private DNS)
- 创建 Route 53 Private Hosted Zone,指向 Endpoint 的私有 IP
- 通过 RAM 共享 Transit Gateway 给其他账号
- 将 PHZ 关联到其他账号的 VPC(需跨账号授权)
这种架构可显著降低成本,但增加了配置复杂度。适合多账号的企业环境。
跨区域访问
| 端点类型 | 跨区域支持 | 说明 |
|---|---|---|
| Gateway Endpoint | 不支持 | 仅在创建的区域内可用 |
| Interface Endpoint(访问 AWS 服务) | 不支持原生跨区域 | 需通过 VPC Peering 或 Transit Gateway Peering 间接实现 |
| Interface Endpoint(访问 PrivateLink 服务) | 支持(2024年12月新功能) | 仅限基于 NLB 的自定义 Endpoint Service |
跨区域访问 AWS 服务的间接方案:
%%{init: {"elk": true}}%%
flowchart LR
subgraph Region_A["区域 A(消费者)"]
EC2_A["EC2 实例"]
end
subgraph Region_B["区域 B(服务所在区域)"]
EP["Interface Endpoint"]
SSM["SSM 服务"]
end
EC2_A -->|VPC Peering<br>或 TGW Peering| EP
EP --> SSM
步骤概要:
- 在服务所在区域(Region B)创建 Interface Endpoint
- 建立跨区域 VPC Peering 或 Transit Gateway Peering
- 配置 Route 53 Private Hosted Zone,将服务域名解析到 Endpoint 私有 IP
- 配置路由表,使流量通过 Peering 连接到达 Endpoint
跨区域访问会产生跨区域数据传输费用(约 $0.02/GB),需评估成本效益。
PrivateLink 原生跨区域(2024年12月新功能)
AWS 新推出了 Interface Endpoint 的原生跨区域连接能力,但目前仅支持基于 Network Load Balancer 的自定义 Endpoint Service,不支持 AWS 托管服务(如 SSM、CloudWatch)。
适用场景:
- 跨区域访问企业内部的 PrivateLink 服务
- 跨区域访问 AWS Marketplace 中支持跨区域的 SaaS 服务
定价:标准 PrivateLink 费用 + 跨区域数据传输费用($0.02/GB)
费用说明
以下价格基于 us-east-1 区域(2024年),实际价格请查阅 AWS PrivateLink 定价 和 Amazon VPC 定价。其他区域价格可能高 10-20%。
各方案单价对比
| 方案 | 小时费用 | 数据处理费用 | 月度固定成本(单 AZ) |
|---|---|---|---|
| Gateway Endpoint | 免费 | 免费 | $0 |
| Interface Endpoint | $0.01/AZ | $0.01/GB(首 1 PB) | ~$7.30/AZ |
| NAT Gateway | $0.045 | $0.045/GB | ~$32.85 |
Interface Endpoint 数据处理费用采用阶梯定价:首 1 PB $0.01/GB,1-5 PB $0.006/GB,5 PB 以上 $0.004/GB。
场景成本估算
以下假设:单 VPC、2 个可用区、每月 100 GB 数据传输。
| 场景 | 使用方案 | 月度成本估算 |
|---|---|---|
| EC2 访问 S3 | Gateway Endpoint | $0(免费) |
| EC2 访问 S3 | NAT Gateway(2 AZ) | ~$67($32.85×2 + $4.50 数据处理) |
| EC2 使用 SSM | 2× Interface Endpoint(ssm + ssmmessages) | ~$30($7.30×2×2 AZ + $2 数据处理) |
| EC2 使用 SSM | NAT Gateway(2 AZ) | ~$67(同上) |
| 完整私有子网方案 | Gateway(S3)+ 3× Interface(SSM 全套) | ~$45 |
大规模环境成本对比
假设:3 个 VPC、3 个可用区、5 个 Interface Endpoint(SSM + CloudWatch Logs)。
| 架构 | 计算方式 | 月度成本 |
|---|---|---|
| 分布式(每 VPC 独立 Endpoint) | 5 端点 × 3 AZ × 3 VPC × $7.30 | ~$329 |
| 集中式(Transit Gateway 共享) | 5 端点 × 3 AZ × 1 VPC × $7.30 + TGW 附加费 | ~$153 |
集中式架构可节省约 50% 以上成本,但需要额外的 Transit Gateway 费用(约 $0.05/小时/附加 + $0.02/GB)。当 VPC 数量超过 3 个时,集中式架构通常更经济。
成本优化建议
- S3/DynamoDB 始终使用 Gateway Endpoint(100% 节省)
- 开发/测试环境使用单 AZ 部署(节省 50-67%)
- 多 VPC 环境考虑集中式架构(节省 50%+)
- 监控 Interface Endpoint 数据处理量,高流量服务评估是否必要
- 定期审查未使用的 Endpoint 并删除
在创建终端节点之前,理解以下关键决策点:
Gateway Endpoint vs Interface Endpoint
| 特性 | Gateway Endpoint | Interface Endpoint |
|---|---|---|
| 支持的服务 | 仅 S3 和 DynamoDB | 大多数 AWS 服务 |
| 费用 | 免费 | 按小时和数据量计费 |
| 工作原理 | 路由表条目 | 子网内的 ENI |
| 跨 VPC 访问 | 不支持 | 支持(通过 Transit Gateway) |
最佳实践:对于 S3 和 DynamoDB,优先使用 Gateway Endpoint(免费)。其他服务使用 Interface Endpoint。
为什么需要 VPC Endpoint?
私有子网中的资源默认无法访问 AWS 服务的公网端点。传统方案是通过 NAT Gateway,但这会产生数据处理费用且流量需经过公网。VPC Endpoint 使流量完全在 AWS 网络内部传输,更安全且通常更便宜。
Interface Endpoint 的 AZ 规划
每个 Interface Endpoint 需要在子网中创建 ENI。建议在多个可用区创建以实现高可用,但每个 AZ 都会产生费用。对于非关键环境,单 AZ 可降低成本。
%%{init: {"elk": true}}%%
flowchart TB
subgraph VPC["VPC"]
subgraph Private["私有子网"]
EC2["EC2 实例"]
end
subgraph Endpoints["VPC Endpoints"]
GW["Gateway Endpoint<br>(S3)"]
IF["Interface Endpoint<br>(SSM/CloudWatch)"]
end
RT["路由表"]
end
subgraph AWS["AWS 服务"]
S3["S3"]
SSM["Systems Manager"]
end
EC2 --> RT
RT -->|前缀列表路由| GW
GW --> S3
EC2 -->|私有 IP| IF
IF --> SSM
1. 创建 Gateway Endpoint(S3)
Section titled “1. 创建 Gateway Endpoint(S3)”[图片占位符:创建 Gateway Endpoint]
在 AWS Console 中操作:
- 打开 VPC Console
- 选择 终端节点 > 创建终端节点
- 输入名称(如
s3-gateway-endpoint) - 服务类别 选择 AWS se服务rvices
- 搜索并选择 com.amazonaws.
.s3 ,Type 为 Gateway - 选择目标 VPC
- 选择需要访问 S3 的子网所关联的路由表
- Policy 保持 Full access(或按需配置)
- 点击 创建终端节点
创建后,所选路由表会自动添加一条指向 S3 前缀列表的路由。
DynamoDB 的 Gateway Endpoint 创建流程相同,服务名为
com.amazonaws.<region>.dynamodb。
2. 创建 Interface Endpoint(以 SSM 为例)
Section titled “2. 创建 Interface Endpoint(以 SSM 为例)”[图片占位符:创建 Interface Endpoint]
Systems Manager 需要以下 Interface Endpoint:
| 服务 | 端点服务名 | 用途 | 必需性 |
|---|---|---|---|
| ssm | com.amazonaws. | SSM API | 必需 |
| ssmmessages | com.amazonaws. | Session Manager / Run Command | 必需 |
| ec2messages | com.amazonaws. | Run Command(旧版) | 可选* |
以下以 ssm 为例,其他端点操作相同:
- 打开 VPC Console
- 选择 终端节点 > 创建终端节点
- 输入名称(如
ssm-interface-endpoint) - 选择类别 选择 AWS 服务
- 搜索并选择 com.amazonaws.
.ssm ,Type 为 Interface - 选择目标 VPC
- 子网:选择需要部署 ENI 的子网(建议至少 2 个 AZ)
- 安全组:选择允许 HTTPS 入站的安全组
- 启用DNS名称:保持勾选(推荐)
- 点击 创建终端节点

3. 配置安全组
Section titled “3. 配置安全组”Interface Endpoint 的 ENI 需要安全组控制入站流量。
创建或修改安全组,添加入站规则:
| 类型 | 协议 | 端口 | 来源 |
|---|---|---|---|
| HTTPS | TCP | 443 | VPC CIDR(如 10.0.0.0/16) |
来源可以更精细,如仅允许特定子网 CIDR 或引用其他安全组。
4. 验证 DNS 解析
Section titled “4. 验证 DNS 解析”
确保 VPC 的 DNS 设置正确:
- 在 VPC Console 选择目标 VPC
- 点击 操作 > 编辑 VPC 设置
- 确认以下两项已启用:
- 启用 DNS 解析
- 启用 DNS 主机名
验证端点 DNS 解析(从 VPC 内的实例执行):

nslookup ssm.<region>.amazonaws.com
如果 Private DNS 已启用,应返回 VPC 内的私有 IP 地址。
5. 验证连通性
Section titled “5. 验证连通性”[图片占位符:验证连通性]
验证 Gateway Endpoint(S3)
Section titled “验证 Gateway Endpoint(S3)”步骤 1:确认命令可以执行
aws s3 ls步骤 2:验证流量确实通过 Endpoint
仅命令成功不能证明使用了 Endpoint(也可能走公网)。需要验证路由配置:
# 1. 查看 Gateway Endpoint 关联的路由表aws ec2 describe-vpc-endpoints \ --filters "Name=vpc-endpoint-type,Values=Gateway" \ --query 'VpcEndpoints[*].[VpcEndpointId,ServiceName,RouteTableIds]' \ --output table# 2. 确认路由表中存在指向 Endpoint 的路由# 将 <route-table-id> 替换为上一步返回的路由表 IDaws ec2 describe-route-tables \ --route-table-ids <route-table-id> \ --query 'RouteTables[0].Routes[?DestinationPrefixListId!=`null`]' \ --output table预期输出:
DestinationPrefixListId GatewayId Origin Statepl-xxxxxxxx vpce-xxxxxxxxxxxxxxxxx CreateRoute active# 3. 确认实例所在子网使用该路由表# 查看 VPC 中所有路由表及其关联情况aws ec2 describe-route-tables \ --query 'RouteTables[*].[RouteTableId,Associations[*].[SubnetId,Main]]' \ --output text输出示例:
rtb-0db4db3c3e9bca185None TrueMain: True表示这是 VPC 的主路由表SubnetId: None表示没有显式关联子网
如果 Endpoint 关联的路由表是主路由表(
Main: True),则 VPC 中所有未显式关联其他路由表的子网都会通过 Endpoint 访问 S3。
验证 Interface Endpoint(SSM)
Section titled “验证 Interface Endpoint(SSM)”步骤 1:验证 DNS 解析到私有 IP
nslookup ssm.<region>.amazonaws.com如果启用了 Private DNS,应返回 VPC 内的私有 IP(如 172.31.x.x 或 10.x.x.x)而非公网 IP。
步骤 2:确认服务可用
aws ssm describe-instance-information --region <region>如果命令成功执行且 DNS 解析到私有 IP,说明端点配置正确。
常见场景的端点组合
Section titled “常见场景的端点组合”私有子网运行 EC2 + SSM 管理:
- Gateway Endpoint: S3(免费)
- Interface Endpoint: ssm, ssmmessages(ec2messages 可选,部分区域不支持)
私有子网运行 ECS Fargate:
- Gateway Endpoint: S3
- Interface Endpoint: ecr.api, ecr.dkr, logs
私有子网运行 Lambda(VPC 模式):
- Gateway Endpoint: S3, DynamoDB(如需要)
- Interface Endpoint: 按 Lambda 访问的服务添加
端点创建后服务仍无法访问
按以下顺序排查:
| 检查项 | 排查方法 |
|---|---|
| 安全组 | 确认允许 HTTPS 443 入站 |
| DNS 设置 | 确认 VPC 启用了 DNS resolution 和 DNS hostnames |
| Private DNS | 对于 Interface Endpoint,确认已启用 Enable DNS name |
| 路由表 | Gateway Endpoint 需关联正确的路由表 |
| 子网选择 | Interface Endpoint 的 ENI 需要与资源在同一 AZ |
Gateway Endpoint 还是 Interface Endpoint for S3?
S3 同时支持两种类型。选择建议:
- VPC 内部访问 S3:使用 Gateway Endpoint(免费)
- 从本地网络通过 Direct Connect/VPN 访问 S3:使用 Interface Endpoint
Interface Endpoint 费用较高怎么办?
降低成本的方法:
- 仅在必要的 AZ 创建 ENI
- 对于多 VPC 环境,考虑集中式端点架构(通过 Transit Gateway 共享)
- 评估是否所有服务都需要端点,部分低频服务可通过 NAT Gateway
nslookup 返回公网 IP 而非私有 IP
确认:
- VPC 已启用 DNS hostnames 和 DNS resolution
- Interface Endpoint 的 Private DNS 选项已启用
- 从正确的 VPC 内执行测试
- AWS PrivateLink 概念
- Gateway Endpoint 文档
- Interface Endpoint 文档
- AWS PrivateLink 定价
- 支持 PrivateLink 的 AWS 服务列表
架构师建议配置
| 场景 | 推荐方案 |
|---|---|
| 单 VPC / 学习环境 | Gateway (S3/DynamoDB) + 按需 Interface Endpoint,单 AZ |
| 生产环境 / 单 VPC | Gateway (S3/DynamoDB) + Interface Endpoint,多 AZ(至少 2 个) |
| 多 VPC 环境 | 集中式端点架构 + Transit Gateway,显著降低成本 |
| 混合云(本地 + AWS) | Interface Endpoint + Route 53 Resolver 实现本地 DNS 解析 |
核心原则:
- S3/DynamoDB 始终优先使用 Gateway Endpoint(免费)
- Interface Endpoint 按需创建,避免不必要的费用
- 生产环境多 AZ 部署确保高可用
- 大规模环境考虑集中式架构优化成本




