我最近在私有子网中设置了 ECS Fargate 服务,但在启动过程中出现
CannotPullContainerError: ref pull has been retried 1 time(s): failed to copy: httpReadSeeker: failed open: unexpected status code https://xxx.dkr.ecr.ap-southeast-2.amazonaws.com/v2/xxx/blobs/sha256:xxx: 403 Forbidden
错误。我自己做了一些故障排除,检查了私有子网路由、ACL、服务任务执行角色和安全组,这些看起来都是正确的(与正在运行的环境相比)。但我仍然遇到这个错误,我希望得到一些帮助,非常感谢!
检查了 VPC 私有子网和 ACL - 路由到 VPC 内的本地,通过 NAT GW 路由到 0.0.0.0。 ACL 现在允许所有流量用于故障排除。
ECS 任务执行角色 - 允许 ecr:* 以进行故障排除。
ECS 安全组 - 服务端口 (8080) 上的所有流量
我还发现了一些令人困惑的地方,错误包含一个 URL:
https://xxxx.dkr.ecr.ap-southeast-2.amazonaws.com/v2/xxx/blobs/sha256:xxxx
,并且sha与ECR图像sha不同,不确定这是否是预期的。
AWS ECR 服务将图像层存储在 S3 中。因此,您应该确保 S3 网关端点的策略不会拒绝对 ECR 的访问。
有关如何调整策略的更多信息,请务必检查以下AWS 文档。