如何排除 Amazon ECS 中与 Amazon Secrets Manager 密钥相关的故障?

2 分钟阅读
0

当我尝试在 Amazon Elastic Container Service (Amazon ECS) 中放置一个使用 Amazon Secrets Manager 密钥的任务时出现错误。

简短描述

在未能在 Amazon ECS 中放置使用 Secrets Manager 密钥的任务时,您可能会收到以下错误之一:

“Amazon Fargate 上的 ResourceInitializationError 错误 Amazon Elastic Compute Cloud (Amazon EC2) 上的 AccessDenied 错误”

“该任务无法从 Secrets Manager 检索密钥并失败。”

您收到这些错误消息是由于以下原因之一:

  • Amazon ECS 任务执行角色没有访问 Secrets Manager 密钥所需的权限。
  • Secrets Manager 找不到指定的密钥。
  • 密钥的名称以连字符后跟六个字符结尾。当您使用部分 ARN 搜索密钥时,这样会返回意外结果。
  • 您的 Amazon Virtual Private Cloud (Amazon VPC) 网络配置存在问题。

要对导致 Amazon ECS 任务无法启动的错误进行故障排除,请使用 AWSSupport-TroubleshootECSTaskFailedToStart 运行手册。然后参考问题的相关故障排除步骤。

解决方法

重要事项:

  • 在与您的 ECS 集群资源所在的同一亚马逊云科技区域使用 AWSSupport-TroubleshootECSTaskFailedToStart 运行手册。
  • 使用运行手册时,您必须使用最近失败的任务 ID。如果失败的任务是 Amazon ECS 服务的一部分,则使用服务中最近一次失败的任务。在自动化执行期间,失败任务必须在 ECS:DescribeTasks 中可见。默认情况下,已停止的 ECS 任务将在进入已停止状态后的 1 小时内保持可见。使用最近失败的任务 ID 可防止任务状态清理功能在自动化过程中导致分析中断。

有关如何启动运行手册的说明,请参阅 AWSSupport-TroubleshootECSTaskFailedToStart。根据自动化的输出,使用以下手动故障排除步骤之一。

检查 ECS 任务执行角色是否具有所需的权限

  1. 打开 IAM 控制台
  2. 在导航窗格中,选择角色
  3. 在角色列表中搜索您的 ECS 任务使用的任务执行角色。
  4. 确认任务执行角色具有所需的权限,可以访问必要的 Secrets Manager 资源。

检查 Secrets Manager 密钥是否存在

  1. 打开 Secrets Manager 控制台
  2. 密钥列表页面上,选择您的 ECS 任务正在使用的密钥。
  3. 确认您的 ECS 任务定义包含这些特定的密钥名称。如果您在密钥中指定了其他参数,请确认您的任务定义包含密钥中指定的 json-key/version-stage/version-id

检查 Secrets Manager 密钥的名称和 ARN

检查您的密钥名称是否以连字符后跟六个字符结尾(例如:myappsecret-xxxxx)。Secrets Manager 会自动在 ARN 末尾的密钥名称后面添加一个连字符和六个随机字符。因此,最佳实践是不要以连字符加上六个字符作为您的密钥的结尾。否则,当您使用部分 ARN 搜索密钥时,可能就会返回意外结果。要解决此问题,请务必使用 Secrets Manager 密钥的完整 ARN,其中包括额外的连字符和六个字符。

验证 VPC 网络配置是否允许您的 Amazon ECS 基础设施访问 Secrets Manager

满足以下条件时,为 Secrets Manager 创建接口 VPC 端点

  • 您正在使用引用 Secrets Manager 密钥的任务定义来检索容器的敏感数据。
  • 您正在使用接口 VPC 端点。

此外,请确保您的 VPC 端点的安全组允许 ECS 基础设施使用这些端点。

要检查 Secrets Manager 的 VPC 端点是否存在,请执行以下操作:

  1. 打开 Amazon VPC 控制台
  2. 在导航窗格中,选择端点
  3. 确保 Secrets Manager 的 VPC 端点 com.amazonaws.example-region.secretsmanager 在端点列表中。
  4. 从端点列表中选择端点,然后选择子网选项卡。确保此端点的子网包含您的 ECS 任务使用的子网。
    注意:如果未列出任何子网,则选择管理子网。根据子网的可用区选择子网,然后选择修改子网

要确认连接到端点 com.amazonaws.example-region.secretsmanager 的安全组允许来自 Amazon ECS 任务的端口 443 上的入站连接,请执行以下操作:

  1. 从端点列表中选择端点。
  2. 选择安全组选项卡。
  3. 为要检查的安全组选择组 ID
  4. 选择入站规则选项卡。
  5. 验证入站规则列表中是否包含允许来自 ECS 任务的 443 连接的规则。

相关信息

如何在 Amazon ECS 任务中将密钥或敏感信息安全地传递给容器?

Amazon Secrets Manager 故障排除

AWS 官方
AWS 官方已更新 1 年前