ECS Fargate 1.4 不使用 VPC 终端节点

c1m*_*ore 8 amazon-web-services amazon-vpc aws-fargate

这是一个奇怪的现象。我有一个在私有子网中使用 Fargate v1.4 的 ECS 服务。由于任务无法访问 Internet,因此我必须配置 VPC 端点,以便任务可以从 AWS 服务加载所需的内容(例如,来自 SSM 的机密、来自 ECR 的图像等)。 这一切都很好,而且工作得很好,直到它失败了。 我不确定发生了什么变化,但一个周末我注意到我的服务器不再运行,并且我注意到控制台中出现此错误:

ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve secrets from ssm: service call has been retried 1 time(s): RequestError: send request failed caused by: Post https://ssm.us-ea...
Run Code Online (Sandbox Code Playgroud)

当我配置 VPC 端点时,这看起来很熟悉,因此我通过控制台以确保没有发生任何变化。据我所知,配置看起来正确(安全组具有正确的入口/出口规则,配置了正确的端点并连接到我的服务器所在的 VPC,所有内容都在同一个可用区中,IAM 角色可以访问密钥)。

作为一个实验,我删除了尝试从任务定义中加载的秘密,看看会发生什么。当新服务器启动时,我看到了类似的错误,但这次是从 ECR 加载图像:

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....
Run Code Online (Sandbox Code Playgroud)

我还尝试删除并重新创建所有端点,以防万一,但仍然没有成功。

其他(可能)有用的信息:

  • 区域:us-east-1
  • 我正在使用最新版本的 Pulumi
  • 我正在使用应用程序自动缩放来降低本周的实例速度

任何帮助/提示将不胜感激。

Mar*_*cin 7

根据评论中的讨论,确定问题的原因是SSM VPC 服务端点的安全组(SG)上的 CIDR 范围不正确。

该问题的一般故障排除建议是:

  • 检查 SG 上 VPC 接口终端节点的入口规则(端口 443 打开)。
  • 确保 S3 网关端点也可用并且按照 SSM 的要求工作。
  • 检查是否为 VPC启用了enableDnsHostnamesDNSSupport
  • 在与 ECS 服务相同的子网中创建实例。使用实例(在设置具有 SSM 权限的角色后)检查 SSM 接口连接。目的是验证问题是在 VPC 级别还是 ECS 级别。

  • 在此实例中,AWS CLI 可用于使用自定义接口 URL或 SSM 的通用 URL 连接到 SSM 终端节点。


小智 6

创建 Fargate 任务时自动分配公共 IP 也会被禁用,也会出现此错误。因此,您需要启用自动分配公共 IP才能使其正常工作。

如果您在公共子网中使用 Fargate 启动类型运行任务,则在启动任务时为自动分配公共 IP 选择启用。这允许您的任务具有出站网络访问权限来提取图像。 来源

不知道细节,但希望它可以帮助那些从搜索引擎来到这里的人。

  • 我已经与 AWS 支持代理联系了半天,结果证明这就是解决方案。它似乎很模糊,没有记录,很难理解为什么需要这个选项,因为如果禁用这个选项,Fargate 根本不起作用。我需要进一步澄清 (3认同)