如何解决在尝试为我的 Amazon ECS 集群设置新的容量提供商或更新现有容量提供商时出现的问题?

2 分钟阅读
0

我无法为我的 Amazon Elastic Container Service (Amazon ECS) 集群设置新的容量提供商或更新现有容量提供商。

解决方法

以下是您为 ECS 集群设置新的容量提供商或更新现有容量提供商时常会遇到的问题:

当您使用 AWS CLI 创建 AWS Auto Scaling 组容量提供商时,收到错误

当您使用 AWS CLI 创建容量提供商时,请查看您的 AWS CloudTrail 事件以检查 CreateCapacityProvider API。以下是常见的 CapacityProvider API 错误:

  • ClientException: 这些错误可能是由客户端操作引起的。客户端操作代表 AWS Identity and Access Management (IAM) 用户使用操作或资源。但是,客户端操作没有使用该操作或资源所需的权限。此错误还可能指定标识符无效。
  • UpdateInProgressException: 您收到此错误是因为您指定的容器实例上已在进行当前 ECS 容器代理更新。如果容器代理在过渡阶段(例如 PENDING 或 STAGING)断开连接,则更新可能会卡滞在该状态。但当代理重新连接时,更新会恢复到以前停止的位置。

有关详细信息,请参阅错误

**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

您收到错误: “指定的容量提供商已存在。要更改现有容量提供商的配置,请更新容量提供商”

当您创建容量提供商时,请使用与之前使用的容量提供商不同的名称。或者,删除具有该名称的现有容量提供商,然后创建新的容量提供商。

要查看创建的所有容量提供商的列表,请运行 describe-capacity-providers AWS CLI 命令:

aws ecs describe-capacity-providers --query capacityProviders\[\].name --region example-region

输出类似于以下内容:

[
    "FARGATE",
    "FARGATE_SPOT",
    "ecs-capacityprovider-1"
]

要删除容量提供商,请运行 delete-capacity-provider AWS CLI 命令:

aws ecs delete-capacity-provider --capacity-provider ecs-capacityprovider-1 --region example-region

要创建新的容量提供商,请运行 create-capacity-provider AWS CLI 命令:

aws ecs create-capacity-provider --name "example-capacity=provider" --auto-scaling-group-provider "autoScalingGroupArn=arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111:autoScalingGroupName/MyAutoScalingGroup,managedScaling={status=ENABLED,targetCapacity=100,minimumScalingStepSize=1,maximumScalingStepSize=100},managedTerminationProtection=ENABLED"

您收到错误: “其他容量提供商已在使用指定的自动扩缩组 ARN。请指定一个唯一自动扩缩组 ARN,然后重试”

AWS Auto Scaling 组和容量提供商必须存在一对一关系。确认您的容量提供商仅与一个 AWS Auto Scaling 组相关联。确认该组仅与一个容量提供商相关联。

当您创建容量提供商策略时收到错误: “指定的集群处于繁忙状态。群集附件必须处于 UPDATE_COMPLETE 或 UPDATE_FAILED 状态才能更新。请稍候,然后重试”

此错误会在几分钟后自动解决。错误解决后,请尝试再次更新容量提供商。或者,运行 describe-clusters AWS CLI 命令以查看附件的当前状态。然后,等到附件处于 UPDATE_COMPLETE 状态:

aws ecs describe-clusters --clusters example-ARN --include ATTACHMENTS --query clusters\[\].attachmentsStatus --region example-region

已完成的更新状态输出类似于以下内容:

[
    "UPDATE_COMPLETE"
]

由于容量提供商的限制,您收到错误

确认您的容量提供商满足以下条件:

  • 对于一个容量策略,不能指定六个以上的容量提供商。
  • 在集群策略中使用 AWS Auto Scaling 组容量提供商或 AWS Fargate 容量提供商。您不能同时使用这两种类型。
  • 只有当您运行任务时,才支持容量提供商策略的基本值。

容量提供商是使用 CloudFormation 成功创建的,但它未显示在控制台中

当您没有将容量提供商与 AWS CloudFormation 模板中的集群相关联时,就会发生这种情况。为避免此问题,请在您的 CloudFormation 模板中使用以下代码段将容量提供商与集群相关联:

...
ECSCluster:
  Type: 'AWS::ECS::Cluster'
  Properties:
    ClusterName: example-cluster
    CapacityProviders:
      - !Ref ECSCapacityProvider
...

相关信息

适用于 EC2 启动类型的 Amazon ECS 容量提供商

如何解决在 Amazon ECS 中删除容量提供商时出现的 DELETE_FAILED 错误?

AWS 官方
AWS 官方已更新 7 个月前