INVALID 计算环境 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

INVALID 计算环境

您可能错误地配置了托管计算环境。如果是这样,计算环境就会进入INVALID状态,无法接受作业放置。以下各节描述了可能的原因以及如何根据原因进行故障排除。

重要

Amazon Batch 代表您并在您的账户中创建和管理多个 Amazon 资源,包括亚马逊 EC2 启动模板、Amazon A EC2 uto Scaling 群组、Amazon EC2 Spot 队列和 Amazon ECS 集群。这些托管资源经过专门配置,以确保最佳 Amazon Batch 运行。除非 Amazon Batch 文档中明确说明,否则手动修改这些批处理管理的资源可能会导致意外行为,从而导致INVALID计算环境、实例扩展行为不理想、工作负载处理延迟或意外成本。该服务无法确定地支持这些手动修改。 Amazon Batch 请务必使用支持的 Batch APIs 或 Batch 控制台来管理您的计算环境。

角色名称或 ARN 不正确

计算环境进入INVALID状态的最常见原因是 Amazon Batch 服务角色或 Amazon EC2 Spot 队列角色的名称或亚马逊资源名称 (ARN) 不正确。这在使用 Amazon CLI 或创建的计算环境中更为常见 Amazon SDKs。当您在中创建计算环境时 Amazon Web Services Management Console, Amazon Batch 可以帮助您选择正确的服务或 Spot 队列角色。但是,假设您手动输入了名称或 ARN,但输入不正确。然后,生成的计算环境也是INVALID

但是,假设在 Amazon CLI 命令或 SDK 代码中手动输入 IAM 资源的名称或 ARN。在这种情况下, Amazon Batch 无法验证字符串。相反, Amazon Batch 必须接受坏值并尝试创造环境。如果 Amazon Batch 无法创建环境,则环境将变为INVALID状态,您会看到以下错误。

对于无效的服务角色:

CLIENT_ERROR - Not authorized to perform sts:AssumeRole (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: dc0e2d28-2e99-11e7-b372-7fcc6fb65fe7)

对于无效的竞价型实例集角色:

CLIENT_ERROR - Parameter: SpotFleetRequestConfig.IamFleetRole is invalid. (Service: AmazonEC2; Status Code: 400; Error Code: InvalidSpotFleetRequestConfig; Request ID: 331205f0-5ae3-4cea-bac4-897769639f8d) Parameter: SpotFleetRequestConfig.IamFleetRole is invalid

导致此问题的常见原因之一是以下情况。只有在使用 Amazon CLI 或时才指定 IAM 角色的名称 Amazon SDKs,而不是完整的 Amazon 资源名称 (ARN)。根据创建角色的方式,ARN 可能包含aws-service-role路径前缀。例如,如果使用将服务相关角色用于 Amazon Batch中的程序手动创建 Amazon Batch 服务角色,服务角色 ARN 可能如下所示。

arn:aws:iam::123456789012:role/AWSBatchServiceRole

但是,如果在控制台首次运行向导中创建了服务角色,则服务角色 ARN 可能如下所示。

arn:aws:iam::123456789012:role/aws-service-role/AWSBatchServiceRole

如果您将 Amazon Batch 服务级别策略 (AWSBatchServiceRole) 附加到非服务角色,也会出现此问题。例如,在这种情况下,可能会收到类似于以下内容的错误消息:

CLIENT_ERROR - User: arn:aws:sts::account_number:assumed-role/batch-replacement-role/aws-batch is not authorized to perform: action on resource ...

要解决该问题,可以执行下列操作之一:

  • 创建 Amazon Batch 计算环境时,使用空字符串作为服务角色。

  • 采用以下格式指定服务角色:arn:aws:iam::account_number:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch

如果您在使用 Amazon CLI 或时仅指定 IAM 角色的名称 Amazon SDKs,则 Amazon Batch 假设您的 ARN 不使用aws-service-role路径前缀。因此,我们建议在创建计算环境时为 IAM 角色指定完整 ARN。

要修复以这种方式错误配置的计算环境,请参阅修复 INVALID 计算环境

修复 INVALID 计算环境

当拥有处于INVALID状态的计算环境时,请更新它以修复无效参数。对于角色名称或 ARN 不正确,可以使用正确的服务角色更新计算环境。

修复配置错误的计算环境
  1. 打开 Amazon Batch 控制台,网址为https://console.aws.amazon.com/batch/

  2. 在导航栏中,选择 Amazon Web Services 区域 要使用的。

  3. 在导航窗格中,选择计算环境

  4. 计算环境页面上,选择要编辑的计算环境旁边的单选按钮,然后选择编辑

  5. 更新计算环境页面上,对于服务角色,请选择要用于计算环境的 IAM 角色。 Amazon Batch 控制台仅显示与计算环境具有正确信任关系的角色。

  6. 选择保存以更新计算环境。