提问者:小点点

Aws ecs-fargate资源初始化错误:无法提取机密或注册表身份验证


我试图在aws-ecs-fargate-1.4.0平台上运行一个私有存储库。

对于私有存储库认证,我遵循了文档,它工作得很好。

不知为什么,在多次更新现有服务后,它无法运行任务,并抱怨错误如下

ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to get registry auth from asm: service call has been retried 1 time(s): asm fetching secret from the service for <secretname>: RequestError: ...

我还没有更改ecsTaskEx

  1. AmazonECSTaskExecutionRolePolicy
  2. CloudWatchFullAccess
  3. AmazonECSTaskExecutionRolePolicy
  4. 获取秘密值
  5. GetSSMParamters

共3个答案

匿名用户

AWS员工。

您所看到的是由于 Fargate 平台版本 1.3.0 和 Fargate 平台版本 1.4.0 之间的网络工作方式发生了变化。作为从使用 Docker 到使用 containerd 的更改的一部分,我们还对网络的工作方式进行了一些更改。在 1.3.0 及更低版本中,每个 Fargate 任务都有两个网络接口:

  • 一个网络接口用于来自应用程序容器的应用程序流量,以及日志和容器图像层拉取
  • Fargate平台本身使用了一个辅助网络接口,以获取ECR认证凭证,并获取机密

不过,这个辅助网络接口也有一些缺点。这个二级流量没有出现在你的VPC流量日志中。此外,当大多数流量停留在客户VPC时,辅助网络接口将流量发送到您的VPC之外。许多客户抱怨说,他们没有能力在这个辅助网络接口上指定网络级控制以及它能够连接到什么。

为了减少网络模型的混乱并给客户更多的控制权,我们在Fargate平台1.4.0版中更改为使用单个网络接口,并将所有流量保留在您的VPC内部,甚至Fargate平台流量。用于获取ECR身份验证和任务机密的Fargate平台流量现在使用与其他任务流量相同的任务网络接口,您可以在VPC流日志中观察此流量,并使用您自己的AWS VPC中的路由表控制此流量。

然而,随着观察和控制Fargate平台网络能力的增强,您还需要负责确保在您的VPC中确实配置了网络路径,以允许任务与ECR和AWS Secrets Manager进行通信。

有几种方法可以解决这个问题:

    < li >使用公共IP地址将任务启动到公共子网,以便它们可以使用internet网关与ECR和其他支持服务通信 < li >在专用子网中启动任务,该子网具有配置为通过公用子网中的NAT网关路由出站流量的VPC路由表。这样,NAT网关可以代表任务打开到ECR的连接。 < li >在专用子网中启动任务,并确保在您的VPC中为您需要的服务配置了AWS PrivateLinkendpoint(ECR用于图像拉式认证,S3用于图像层,AWS Secrets Manager用于机密)。

您可以在这篇官方博客文章中的“任务弹性网络接口(ENI)现在运行额外的流量”一节中了解更多关于这一变化的信息

https://aws.amazon.com/blogs/containers/aws-fargate-launches-platform-version-1-4/

匿名用户

我不完全确定您的设置,但是在禁用 NAT 网关以节省一些 $ 后,我在 aws-ecs-fargate-1.4.0 平台上遇到了非常相似的错误消息:

Stopped reason: ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve ecr registry auth: service call has been retried 1 time(s): RequestError: send request failed caused by: Post https://api.ecr....

事实证明,我必须为这些服务名称创建 VPC 终端节点:

  • com.amazonaws.REGION。s3
  • com.amazonaws.REGION.ecr。dkr
  • com.amazonaws.REGION.ecr。api
  • com.amazonaws.REGION。日志
  • com.amazonaws.REGION.ssm

而我不得不降级到aws-ecs-fargate-1.3.0平台。降级后,Docker映像可以从ECR中取出,部署再次成功。

如果您使用的是没有NAT网关的秘密管理器,则可能需要为com.amazonaws.REGION.secretsmanager创建VPCendpoint。

匿名用户

确保通过 IGW 或 NAT 进行互联网连接,并确保公共 IP 已启用(如果其 IGW 位于 Fargate 任务/服务网络配置中)。

{
  "awsvpcConfiguration": {
    "subnets": ["string", ...],
    "securityGroups": ["string", ...],
    "assignPublicIp": "ENABLED"|"DISABLED"
  }
}