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

2 分钟阅读
0

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

简短描述

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

  • 当您使用 AWS 命令行界面(AWS CLI)创建自动扩缩组容量提供商时,收到错误。
  • 您收到错误: “指定的容量提供商已存在。要更改现有容量提供商的配置,请更新容量提供商。”
  • 您收到错误: “其他容量提供商已在使用指定的自动扩缩组 ARN。请指定一个唯一的自动扩缩组 ARN,然后重试。”
  • 当您创建容量提供商策略时,收到错误: “指定的集群处于繁忙状态。群集附件必须处于 UPDATE_COMPLETE 或 UPDATE_FAILED 状态才能更新。请稍候,然后重试。”
  • 由于容量提供商的限制,您会收到错误。
  • 使用 AWS CloudFormation 成功创建了容量提供商,但它未显示在控制台中。

解决方法

当您使用 AWS CLI 创建自动扩缩组容量提供商时,收到错误

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

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

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

**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI

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

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

如需查看创建的所有容量提供商列表,请运行下列命令:

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

输出类似于下列内容:

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

如需删除容量提供商,请运行下列命令:

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

有关示例输出和更多选项,请参阅 delete-capacity-provider

如需创建新的容量提供商,请运行下列命令:

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"

有关示例输出和更多选项,请参阅 create-capacity-provider

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

自动扩缩组和容量提供商必须存在一对一关系。您可以将自动扩缩组仅连接到一个容量提供商,反之亦然。确保您的容量提供商仅与一个自动扩缩组相关联。

您收到错误: “指定的集群处于繁忙状态。群集附件必须处于 UPDATE_COMPLETE 或 UPDATE_FAILED 状态才能更新。请稍候,然后重试”

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

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

输出内容必须与以下内容类似:

[
    "UPDATE_COMPLETE"
]

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

在创建或更新容量提供商之前,请查看下面的几点:

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

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

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

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

相关信息

Amazon ECS 容量提供商

自动扩缩组容量提供商

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

AWS 官方
AWS 官方已更新 1 年前