View a markdown version of this page

INVALID 计算环境 - AWS Batch

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

INVALID 计算环境

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

重要

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

角色名称或 ARN 不正确

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

但是,假设在 AWS CLI 命令或 SDK 代码中手动输入 IAM 资源的名称或 ARN。在这种情况下, AWS Batch 无法验证字符串。相反, AWS Batch 必须接受坏值并尝试创造环境。如果 AWS 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

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

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

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

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

如果您将 AWS 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 ...

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

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

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

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

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

修复 INVALID 计算环境

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

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

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

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

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

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

    提示

    有关如何创建服务相关角色的说明,请参阅将角色用于 AWS Batch

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