我正在CannotPullContainerError尝试通过 AWS Step Function 启动 ECS Fargate 任务。这里的文档说要向子网添加一个 NAT 网关。我已经这样做了,但仍然出现此错误。
我正在使用私有子网,禁用公共 IP,并定义了 NAT 网关。我定义了一个路由表,将 0.0.0.0/0 映射到 NAT 网关,并且该路由表与子网相关联。关联的安全组和网络 ACL 允许所有出站流量。VPC 已启用 DNS 解析。
我已经回顾了这些相关问题:
AWS Fargate - CannotPullContainerError (500)?
Fargate 错误:无法从私有子网拉取托管在 ECR 中的容器
带有 Nat 网关的 Fargate 任务无法连接 RDS 数据库
使用 ECS Fargate 执行 Step Function“任务”
还有什么我想念的吗?我在这里看到了很多问题,但已经解决了提到的问题(通常是 NAT 网关和路由表)。
错误:
CannotPullContainerError: Error response from daemon:
Get https://123456789012.dkr.ecr.us-west-2.amazonaws.com/v2/:
net/http: request canceled while waiting for connection
(Client.Timeout exceeded while awaiting headers)"
希望有用的信息:
subnetId: subnet-015a0400000000
networkInterfaceId: eni-04e50000000
privateIPv4Address: 10.51.17.8-2c
ClusterArn: arn:aws:ecs:us-west-2:951740000000:cluster/step-function-executor
ContainerArn: arn:aws:ecs:us-west-2:951740000000:container/08450000000",
Image: 951740000000.dkr.ecr.us-west-2.amazonaws.com/step-function-image:latest
NetworkBindings: []
NetworkInterfaces:
AttachmentId: 4a3b0000000
PrivateIpv4Address": 10.51.17.8
TaskArn: arn:aws:ecs:us-west-2:951740000000:task/690d0000000
TaskDefinitionArn: arn:aws:ecs:us-west-2:951740000000:task-definition/step-function-xyz
LaunchType: FARGATE
PullStartedAt: 1599440424569
PullStoppedAt: 1599440513569
Route table:
Destination Target
------------- ---------------
10.41.0.0./16 local
0.0.0.0/0 nat-046d0000000
NAT Gateway
Gateway ID: nat-046d0000000
Private IP: 10.51.x.x
Elastic IP Address 52.13.x.x