0

我正在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
    
4

1 回答 1

1

最后,问题出在安全组上。我在 AWS Step Function 定义中添加了一个现有的安全组,这解决了问题。

于 2020-10-25T14:17:36.493 回答