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"
次のエラーが発生します。 「指定された Auto Scaling グループ ARN は、既に別のキャパシティプロバイダーによって使用されています。一意の Auto Scaling グループ (ARN) を指定してから再試行してください」
AWS Auto Scaling グループとキャパシティプロバイダーには、1 対 1 の関係が必要です。キャパシティプロバイダーは、1 つの AWS Auto Scaling グループにのみ関連付けられていることを確認します。グループが 1 つのキャパシティプロバイダーのみに関連付けられていることを確認します。
キャパシティプロバイダー戦略の策定時に、次のエラーが発生する: 「指定されたクラスターは、ビジー状態です。クラスターの添付ファイルは、更新する前に、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"
]
キャパシティプロバイダーの制限が原因でエラーが発生する
キャパシティプロバイダーが次の条件を満たしていることを確認します。
- 1 つのキャパシティ戦略で、6 つを超えるキャパシティプロバイダーを指定することはできません。
- クラスター戦略では、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 エラーを解決する方法を教えてください