Amazon ECS マネージドインスタンスのトラブルシューティング - Amazon Elastic Container Service

Amazon ECS マネージドインスタンスのトラブルシューティング

Amazon ECS マネージドインスタンスでタスクを起動する場合、Amazon ECS は、まず既存の容量へのタスク配置を試行し、配置できないタスクに対する追加の容量を要求します。インスタンスのプロビジョニングが失敗した場合、Amazon EC2 リクエスト ID がタスク失敗メッセージに含まれています。このリクエスト ID を使用して、CloudTrail で失敗したリクエストの詳細を検索し、トラブルシューティングに活用することができます。

注記

AmazonECSInstanceRolePolicyForManagedInstances 管理ポリシーを使用する代わりに、アクセスの最小特権を適用し、インスタンスプロファイルに独自のアクセス許可を指定する場合は、次のアクセス権限を追加して、Amazon ECS マネージドインスタンスのタスク関連の問題のトラブルシューティングに役立てることができます。

  • ecs:StartTelemetrySession

  • ecs:PutSystemLogEvents

タスク定義に Amazon ECS マネージドインスタンスとの互換性がありません

一般的な原因

このエラーは、Amazon ECS マネージドインスタンスでサポートされていないパラメータや設定がタスク定義に含まれている場合に発生します。一般的には、サポートされていないネットワークモード、タスクロール、リソース要件などが互換性のない原因になります。

解決策

  1. タスク定義で、MANAGED_INSTANCES に設定した requiresCompatibilities を使用していることを確認します。

  2. タスク定義で awsvpc ネットワークモードを使用していることを確認します。

  3. CPU とメモリの値が、Amazon ECS マネージドインスタンスのサポート範囲内にあることを確認します。

  4. 特定の互換性問題の詳細については、エラーメッセージの細部を確認してください。

キャパシティプロバイダーがクラスターに関連付けられていません

一般的な原因

このエラーは、キャパシティプロバイダー戦略で指定されたキャパシティプロバイダーがクラスターに関連付けられていないか、当該のプロバイダーが存在しない場合に発生します。

解決策

  1. キャパシティプロバイダーがアカウントとリージョンに存在することを確認します。

  2. Amazon ECS コンソールまたは CLI を使用して、キャパシティプロバイダーをクラスターに関連付けます。

  3. 使用する前に、キャパシティプロバイダーが ACTIVE 状態であることを確認します。

インフラストラクチャロールのアクセス許可エラー

一般的な原因

このエラーは、Amazon ECS インフラストラクチャロールに、ユーザーに代わって Amazon EC2 オペレーションを実行するために必要なアクセス許可がない場合、または信頼関係の問題によりロールを引き受けることができない場合に発生します。

解決策

  1. インフラストラクチャロールに Amazon ECS との適切な信頼関係があることを確認します。

  2. ロールに必要な Amazon EC2 アクセス許可 (ec2:RunInstancesec2:DescribeInstancesiam:PassRole など) があることを確認します。

  3. 特定のアクセス許可の詳細については、CloudTrail のエンコードされた認可失敗メッセージを確認してください。

  4. ロールポリシーを更新して、不足しているアクセス許可 (エラーメッセージで確認する) を含めます。

VcpuLimitExceeded エラー

一般的な原因

このエラーは、現在のリージョンでインスタンスタイプファミリーの vCPU サービスクォータに達した場合に発生します。Amazon ECS マネージドインスタンスは、容量が利用可能になるまで追加のインスタンスを起動できません。

解決策

  1. AWS サポートセンターを通じて、影響を受けるインスタンスタイプファミリー用のサービスクォータの引き上げをリクエストします。

  2. 異なる vCPU クォータカテゴリに分類されるインスタンスタイプを別に使用することを検討してください。

  3. 未使用の Amazon EC2 インスタンスを終了して vCPU 容量を解放します。

  4. vCPU 要件が低いインスタンスタイプを使用する場合は、キャパシティプロバイダーの設定を確認します。

InsufficientCapacity と関連するキャパシティエラー

一般的な原因

これらのエラーは、インスタンスリクエストに対応する十分な容量が AWS にない場合に発生します。この場合、リクエストされたアベイラビリティーゾーンのインスタンス容量、アドレス容量、ボリューム容量などが不足してる可能性があります。

解決策

  1. キャパシティプロバイダーで複数のサブネットを設定して、別のアベイラビリティーゾーンでインスタンスを起動してみてください。

  2. 使用可能な容量が多い可能性のある別のインスタンスタイプを使用することを検討してください。

  3. キャパシティの可用性は頻繁に変化しますので、オペレーションを待機して再試行します。

  4. 永続的な容量が必要な場合は、リザーブドインスタンスまたは Savings Plans の使用を検討してください。

UnauthorizedOperation エラー

一般的な原因

このエラーは、Amazon ECS サービスに Amazon EC2 オペレーションを実行した場合や、IAM ロールを渡すために必要なアクセス許可がない場合に発生します。一般的なシナリオとして、インスタンスプロファイルの ec2:RunInstances アクセス許可または iam:PassRole アクセス許可が不足していることが挙げられます。

解決策

  1. Amazon ECS インフラストラクチャロールに、Amazon EC2 インスタンスの起動に必要なアクセス許可があることを確認します。

  2. インフラストラクチャロールに、Amazon ECS マネージドインスタンスで使用されるインスタンスプロファイルに対する iam:PassRole アクセス許可があることを確認します。

  3. 特定のアクセス許可の詳細については、CloudTrail のエンコードされた認可失敗メッセージを確認してください。

  4. ロールポリシーを更新して、不足しているアクセス許可 (エラーメッセージで確認する) を含めます。

キャパシティの待機中にタスクがタイムアウトしました

一般的な原因

このエラーは、インスタンスの起動とクラスターへの登録に想定以上の時間を要する場合に発生します。これは、Amazon EC2 の容量の制約、インスタンスの起動の失敗、ネットワーク接続の問題が原因で発生する可能性があります。

解決策

  1. 進行中の問題がないか、リージョンの Amazon EC2 サービスの健全性を確認します。

  2. サブネットに十分な IP アドレスがあることを確認します。

  3. セキュリティグループで Amazon ECS エージェント通信に必要なトラフィックを許可していることを確認します。

  4. キャパシティの可用性を向上させるには、複数のアベイラビリティーゾーンを使用することを検討してください。

  5. キャパシティの制約は一時的である場合が多いため、タスク起動オペレーションを再試行します。

ネットワーク設定エラー

一般的な原因

これらのエラーは、タスクのネットワーク要件と、キャパシティプロバイダーのネットワーク設定の間に不一致がある場合に発生します (VPC の不一致やネットワーク設定の不足など)。

解決策

  1. キャパシティプロバイダーが正しい VPC とサブネットで設定されていることを確認します。

  2. セキュリティグループとサブネットが同じ VPC に属していることを確認します。

  3. タスク定義のネットワーク設定にキャパシティプロバイダーとの互換性があることを確認します。

  4. 正しいネットワーク設定でキャパシティプロバイダー設定を更新します。

インスタンスがスタックしているためキャパシティプロバイダーを削除できません

一般的な原因

これらのエラーは、Amazon ECS マネージドインスタンスが ACTIVE または DRAINING の状態でスタックしているが、インスタンスに実行中のタスクがない場合に発生します。

解決策

キャパシティプロバイダーの削除を続行できるようにするには、次のコマンドを使用して、スタックしているインスタンスを強制的に登録解除します。

aws ecs deregister-container-instance \ --cluster arn:aws:ecs:us-east-1:111122223333:cluster/MyCluster \ --container-instance arn:aws:ecs:us-east-1:111122223333:container-instance/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE \ --force