根据关于NAT 网关的 AWS 文档,它们无法通过VPC 端点发送流量,除非以下列方式设置:
NAT 网关无法通过 VPC 端点发送流量 [...]。如果私有子网中的实例必须通过 VPC 端点访问资源 [...],请使用私有子网的路由表将流量直接路由到这些设备。
按照文档中的这个示例,我为我的 ECS 应用程序创建了以下配置:
vpc-app
具有 CIDR 172.31.0.0/16 的VPC ( )。subnet-app
具有以下路由表的应用子网 ( ):
Destination | Target
----------------|-----------
172.31.0.0/16 | local
0.0.0.0/0 | nat-main
- 子网中的NAT 网关 (
nat-main
)具有以下路由表:vpc-app
default-1
Destination | Target
----------------|--------------
172.31.0.0/16 | local
0.0.0.0/0 | igw-xxxxxxxx
- 安全组 (
sg-app
),端口 443 为subnet-app
. - VPC Endpoints (Interface type) with
vpc-app
,subnet-app
和sg-app
以下服务:
com.amazonaws.eu-west-1.ecr.api
com.amazonaws.eu-west-1.ecr.dkr
com.amazonaws.eu-west-1.ecs
com.amazonaws.eu-west-1.ecs-agent
com.amazonaws.eu-west-1.ecs-telemetry
com.amazonaws.eu-west-1.s3 (Gateway)
同样重要的是,我已经为和VPC 端点启用了DNS 解析和DNS 主机名,vpc-app
以及启用私有 DNS 名称选项。ecr-dkr
ecr-api
我也尝试过仅使用Fargate容器,因为它们没有ECS Agent的额外复杂性,并且因为根据文档:
使用 Fargate 启动类型的任务仅需要 com.amazonaws.region.ecr.dkr Amazon ECR VPC 终端节点和 Amazon S3 网关终端节点即可利用此功能。
这也不起作用,每次我的Fargate任务运行时,我都会在's Monitoring下看到Bytes out to source的峰值。nat-main
无论我尝试什么,其中的 EC2 实例(和 Fargate 任务)subnet-app
仍在使用nat-main
而不是转到 ECR 服务的本地地址来拉取图像。
我已重新启动ECS 代理并确保选中ECS 接口 VPC 端点指南和ECR 接口端点指南中的所有框。
我在这里想念什么?
任何帮助,将不胜感激。