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"

次のエラーが発生します。 「指定された 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 エラーを解決する方法を教えてください

AWS公式
AWS公式更新しました 4ヶ月前
コメントはありません

関連するコンテンツ