跳至内容

如何修复 AWS Batch 中无效的计算环境?

3 分钟阅读
0

我在 AWS Batch 中的计算环境处于“无效”状态,并且收到了 "CLIENT_ERROR" 错误消息。

简短描述

在 AWS Batch 中,您可能会收到 "CLIENT_ERROR" 错误消息。发生这种情况时,AWS Batch 会将您的计算环境移至“无效”状态。

**注意:**有关 Amazon Elastic Kubernetes Service (Amazon EKS) 计算环境上的 AWS Batch,请参阅无效的计算环境

解决方法

如果您的计算环境处于“无效”状态,请根据您收到的 "CLIENT_ERROR" 错误消息执行以下故障排除操作。

"CLIENT_ERROR - Not authorized to perform sts:AssumeRole" 错误

要解决 "CLIENT_ERROR - Not authorized to perform sts:AssumeRole" 错误,请修复无效的服务角色。完成以下步骤:

  1. 打开 AWS Batch 控制台
  2. 在导航窗格中,选择 Compute environments(计算环境)。
  3. 选择处于“无效”状态的计算环境。
    **注意:**如果您的计算环境处于“已禁用”状态,请选择 Enable(启用)激活您的计算环境。
  4. 选择 Edit(编辑)。
  5. 对于 Service role(服务角色),选择一个具有相应权限的服务角色,以便 AWS Batch 调用其他 AWS 服务。
    **注意:**您在服务中使用的资源由您的服务角色管理。在使用该服务之前,您必须拥有提供所需权限的 AWS Identity and Access Management (IAM) 策略和角色。如果您没有具有所需权限的 IAM 角色,请创建一个角色
  6. 选择 Save(保存)。

"CLIENT_ERROR - Parameter: SpotFleetRequestConfig.IamFleetRole is invalid" 错误

如果您使用 Amazon Elastic Compute Cloud (Amazon EC2) 竞价型实例集,则可能会收到 "CLIENT_ERROR - Parameter: SpotFleetRequestConfig.IamFleetRole is invalid" 错误消息。

对于使用竞价型实例集的托管计算环境,请创建一个可授予使用竞价型实例集所需权限的角色。对于一般用途,请将 AmazonEC2SpotFleetTaggingRole AWS 托管式策略添加到该角色中。

**注意:**使用您新建的竞价型实例集角色来创建新的计算环境。现有计算环境无法更改竞价型实例集角色。要移除不再需要的现有环境,请先停用该环境,然后将其删除。有关说明,请继续阅读下一部分。

"CLIENT_ERROR - The specified launch template...does not exist" 错误

如果您与计算环境关联的启动模板不存在,则会收到以下错误消息:

"CLIENT_ERROR - The specified launch template, with template ID [###], does not exist"

要对此问题进行故障排除,请完成以下步骤以停用并删除您的计算环境:

  1. 打开 AWS Batch 控制台
  2. 在导航窗格中,选择 Compute environments(计算环境)。
  3. 选择处于“无效”状态的计算环境。然后,选择 Disable(禁用)。
  4. 选择 Delete(删除)。
  5. 创建新的计算环境

"CLIENT_ERROR - Your compute environment has been INVALIDATED and scaled down" 错误

当 AWS Batch 横向扩展计算环境时,容器实例会加入 Amazon Elastic Container Service (Amazon ECS) 集群。如果实例无法加入集群,则 AWS Batch 会将计算环境标记为 INVALID(无效)。当实例上的 Amazon ECS 代理未在既定时间范围内调用 RegisterContainerInstanc API 时,就会发生这种情况。作为响应,AWS Batch 会终止该实例,并且您会收到以下错误:

"CLIENT_ERROR - Your compute environment has been INVALIDATED and scaled down" because none of the instances joined the underlying ECS Cluster."

在以下场景中,您的实例无法加入 Amazon ECS 集群:

  • Amazon Virtual Private Cloud (Amazon VPC) 子网配置设置阻止了与 Amazon ECS 的成功通信。
  • 不正确的实例配置文件策略设置阻止了对 Amazon ECS 的授权。
  • 自定义亚马逊机器映像 (AMI) 或启动模板配置影响了 Amazon ECS 代理。

要对此问题进行故障排除,请完成以下步骤:

  1. 打开 AWS Batch 控制台
  2. 在导航窗格中,选择 Compute environments(计算环境)。
  3. 选择处于“无效”状态的计算环境。然后,选择 Disable(禁用)。
  4. 选择同一个计算环境,然后选择 Enable(启用)。

上述步骤会重新激活计算环境,AWS Batch 会将该环境标记为“有效”。要启动一个实例并强制进行横向扩展,请将 minVcpus 参数更新为 1。然后,使用正在运行的实例来排查实例无法加入 Amazon ECS 集群的原因

"CLIENT_ERROR - Access denied" 错误

要解决 "CLIENT_ERROR - Access denied" 错误,请创建具有正确权限的服务角色。或者,选择具有正确权限的现有服务角色。

"CLIENT_ERROR - Internal error" 错误

要解决 "CLIENT_ERROR - Internal error" 错误,请先停用您的计算环境。然后再将其重新激活。有关步骤,请参阅 "CLIENT_ERROR - Your compute environment has been INVALIDATED and scaled down" 错误部分。

"CLIENT_ERROR - The request uses the same client token... non-identical request" 错误

要解决 "CLIENT_ERROR - The request uses the same client token as previous, but non-identical request" 错误,请先停用您的计算环境,然后再将其激活。有关步骤,请参阅 "CLIENT_ERROR - Your compute environment has been INVALIDATED and scaled down" 错误部分。

"CLIENT_ERROR - You are not authorized to use launch template" 错误

要解决 "CLIENT_ERROR - You are not authorized to use launch template" 错误,请执行以下操作:

  • 确认您的服务角色具有所需的权限。然后,完成 "CLIENT_ERROR - Not authorized to perform sts:AssumeRole" 错误部分中的步骤。
  • 检查您的 AWS 账户是否属于 AWS Organizations。如果是,请确保服务控制策略 (SCP) 不会阻止对 Amazon EC2 的访问权限。

要进一步排查 IAM 策略问题,请参阅如何使用 IAM 策略对访问遭拒或未经授权的操作错误进行故障排除?

相关信息

对 AWS Batch 进行故障排除

为什么我的 AWS Batch 作业卡滞在“可运行”状态?

AWS 官方已更新 1 年前