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

INVALID 计算环境

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

重要

Amazon Batch 会在您的账户中代表您创建和管理多个 Amazon 资源,包括 Amazon EC2 启动模板、Amazon EC2 Auto Scaling 组、Amazon EC2 竞价型实例集和 Amazon ECS 集群等。这些托管式资源已特别为了确保最优的 Amazon Batch 操作而进行配置。除非 Amazon Batch 文档中明确说明,否则手动修改这些由 Batch 托管的资源可能会导致 INVALID 计算环境中的异常行为、不理想的实例扩缩行为、工作负载处理延迟,或产生意外的成本。不能确定 Amazon Batch 服务一定能够支持这些手动修改。请务必使用支持的 Batch API 或 Batch 控制台来管理您的计算环境。

角色名称或 ARN 不正确

计算环境进入INVALID状态的最常见原因是Amazon Batch服务角色或 Amazon EC2 竞价型实例集角色的名称或 Amazon 资源名称(ARN)不正确。这种情况在使用Amazon CLI或Amazon SDK 创建的计算环境中更为常见。在Amazon Web Services 管理控制台中创建计算环境时,Amazon Batch可以帮助您选择正确的服务或竞价型实例集角色。但是,假设您手动输入了名称或 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或Amazon SDK 时,指定一个 IAM 角色的名称,而不指定完整的 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或Amazon SDK 时,如果只指定 IAM 角色的名称,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控制台仅显示与计算环境具有正确信任关系的角色。

    提示

    有关如何创建服务相关角色的说明,请参阅对 Amazon Batch 使用角色

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