【问题标题】:ECS Fargate Task in EventBridge fails with ResourceInitializationErrorEventBridge 中的 ECS Fargate 任务失败并出现 ResourceInitializationError
【发布时间】:2022-08-22 14:32:29
【问题描述】:

我创建了一个可以手动运行的 ECS Fargate 任务。它更新了一个 Dynomodb,我得到了日志。

现在我希望它按计划运行。我已经通过 EventBridge 设置了一个计划的 ECS 任务。但是,这不会运行。

我查看 EventBridge 日志可以看到容器已因以下停止原因而停止:

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

我认为这可能是权限问题。但是,我测试了赋予任务执行角色完全的高级用户权限,但我仍然得到同样的错误。问题可能是别的吗?

  • 您是否为 Eventbridge 规则配置了具有足够权限的角色?见stackoverflow.com/questions/71625037/…
  • 我去看看cloudtrail,谢谢!
  • CloudTrail 中没有任何内容!只有一个RunTask,看起来不错。其他事件也没有错误,而且它们看起来都是正确的(据我所知)。
  • 您的 ECS 任务/服务是否可以访问 Internet?例如,它可能根本无法连接到 ECR 端点,因为它位于没有 NAT 的私有子网中。

标签: amazon-web-services amazon-ecs aws-fargate aws-event-bridge


【解决方案1】:

这是由于连接问题。

docs 说如下:

对于 Fargate 上的任务,为了让任务拉取容器映像,它必须使用公有子网并分配一个公有 IP 地址或具有到 Internet 的路由的私有子网或可以将请求路由到互联网。

因此,您需要确保您的任务具有到 Internet 网关(即它在公共子网中)或 NAT 网关的路由。

或者,如果您的服务位于隔离子网中,您需要为 ECR 和您需要调用的其他服务创建 VPC 终端节点,如docs 中所述:

要允许您的任务从 Amazon ECR 中提取私有映像,您必须为 Amazon ECR 创建接口 VPC 终端节点。

创建计划任务时,您还可以指定网络选项。 docs 提到这一步:

(可选)展开配置网络配置以指定网络配置。这是托管在 Fargate 上的任务和使用 awsvpc 网络模式的任务所必需的。 对于子网,请指定一个或多个子网 ID。 对于安全组,请指定一个或多个安全组 ID。 对于自动分配公共 IP,指定是否将子网中的公共 IP 地址分配给任务。

因此,网络配置在手动运行任务和计划任务之间发生了变化。请参阅上述内容以找出您的情况所需的设置。

【讨论】:

  • 她提到她可以手动运行任务
  • 是的,但是您还可以在创建计划任务时指定网络选项。我将更新答案以反映这一点。
  • 是的,好点
  • 根据我对文档的阅读,我的网络设置正确。我只有默认 VPC 及其默认子网。当我配置计划任务时,我添加了三个子网。安全组是自动配置的。查看这些,它们允许所有出站流量。对于自动分配公共 IP,唯一的选项是“禁用”,无论是编辑现有规则还是创建新规则。
  • 这与安全组无关。创建计划任务时,您必须启用公共 IP。您的网络设置不正确,因为您的任务没有获得公共 IP。
【解决方案2】:

我通过启用自动分配公共 IP 解决了这个问题。

但是,要做到这一点,我必须首先从“容量提供者策略”更改 - “使用集群默认值”,改为“启动类型”-“FARGATE”。然后,启用自动分配公共 IP 的选项在 EventBridge UI 的下拉列表中可用。

这对我来说似乎很奇怪,因为我的集群的默认容量提供程序策略法盖特。但它现在正在工作。

【讨论】:

    【解决方案3】:

    需要使用网关来跟踪从 ECS 到 ECR 的流量。它最终可以是 Internet 网关或 NAT 网关,这将影响成本因素。

    但是我们可以通过创建 VPC 端点来解决这种情况。它维护 AWS 资源中的流量。

    为此需要的端点是: S3 网关 ECR ECS

    【讨论】:

      猜你喜欢
      • 2020-02-11
      • 2019-10-07
      • 2020-01-16
      • 1970-01-01
      • 2019-09-10
      • 2020-01-28
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多