本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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:actionon 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 不正确,可以使用正确的服务角色更新计算环境。
修复配置错误的计算环境
-
打开 AWS Batch 控制台,网址为https://console.aws.amazon.com/batch/
。 -
在导航栏中,选择 AWS 区域 要使用的。
-
在导航窗格中,选择计算环境。
-
在计算环境页面上,选择要编辑的计算环境旁边的单选按钮,然后选择编辑。
-
在更新计算环境页面上,对于服务角色,请选择要用于计算环境的 IAM 角色。 AWS Batch 控制台仅显示与计算环境具有正确信任关系的角色。
提示
有关如何创建服务相关角色的说明,请参阅将角色用于 AWS Batch。
-
选择保存以更新计算环境。