Amazon EC2 インスタンスが Amazon ECS クラスターに参加できない理由を知りたいです。

所要時間2分
0

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを Amazon Elastic Container Service (Amazon ECS) クラスターに登録できません。

解決策

まず、AWS Systems Manager ランブック AWSSupport-TroubleshootECSContainerInstance を使用して潜在的な問題を自動的に確認します。AWSSupport-TroubleshootECSContainerInstance ランブックは、Amazon EC2 インスタンスがクラスターを登録したり、クラスターに参加したりできない一般的な原因を自動的にトラブルシューティングします。

注: ECS クラスターと EC2 インスタンスが配置されているリージョンと同じ AWS リージョンで AWSSupport-TroubleshootECSContainerInstance ランブックを使用してください。

ランブックの出力に推奨事項が含まれていない場合は、次の手順を実行し、問題を手動でトラブルシューティングしてください。

前提条件

  • EC2 インスタンスには、Amazon ECS 設定と通信するために必要なアクセス許可が付与された AWS Identity and Access Management (IAM) ロールが必要です。インスタンスの IAM ロールには、Amazon ECS がコンテナインスタンスをクラスターに登録するための ecs:RegisterContainerInstance アクセス許可も必要です。IAM ロールをカスタマイズする必要がない場合は、AmazonEC2ContainerServiceforEC2Role を使用します。
  • コンテナインスタンスのネットワーク設定が正確であることを確認します。詳細については、「Amazon ECS ECS2 の起動タイプタスクで、"CannotPullContainerError" というエラーを解決する方法を教えてください」の「Amazon ECS コンテナインスタンスのネットワーク設定が誤っている」を参照してください。

Amazon Linux 2 インスタンス上の Amazon ECS エージェントのステータスを確認する

次のコマンドを実行し、インスタンス上の Amazon ECS コンテナエージェントが実行中かどうかを確認します。

sudo systemctl status ecs

Amazon ECS コンテナエージェントがインスタンスで実行されていない場合は、次のコマンドを実行してエージェントを起動します:

sudo systemctl start ecs

start コマンドの出力は、次の例に類似したものになります。

Active: active (running)

次のコマンドを実行し、Docker サービスが実行されているかどうかを確認します。

sudo systemctl status docker

Docker サービスが実行状態でない場合は、次のコマンドを実行してサービスを開始します。

sudo systemctl start docker

start コマンドの出力は、次の例に類似したものになります。

Active: active (running)

起動設定を確認する

起動インスタンスが Auto Scaling グループに属している場合は、Auto Scaling グループの起動設定が正しいことを確認します。詳細については、5. 起動設定を新規作成する の手順 (新規 Amazon マシンイメージ (AMI) を使用して Amazon ECS コンテナインスタンスのクラスターを更新する) を参照してください。

コンテナインスタンスの AMI を確認する

コンテナインスタンスの AMI がコピーされた AMI またはカスタム AMI の場合は、インスタンスが次の要件を満たしている必要があります。

これらの要件は、Amazon ECS 最適化 AMI で事前設定されています。アプリケーションに必要なバージョンを Amazon ECS 最適化 AMI では使用できない場合以外は、Amazon ECS 最適化 AMI を使用することがベストプラクティスです。詳細については、「Amazon ECS 最適化 Linux AMI のメタデータを取得する」を参照してください。

インスタンスのユーザーデータに正しいクラスター情報が含まれているかどうかを確認する

インスタンスのユーザーデータに正しいクラスター情報が含まれているかどうかを確認するには、次のコマンドを実行します。

#!/bin/bash  echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config

注: cluster-name は、実際のクラスター名に置き換えます。

ログファイルを確認する

問題が解決しない場合は、Amazon ECS ログコレクターを使用してログを収集し、それらを確認して原因を特定します。コンテナホストのログファイルで、Amazon ECS コンテナエージェントおよび Docker について確認することもできます。

コンテナエージェントおよび Docker のログファイルを確認するには、次のコマンドを実行します。

sudo cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-**sudo cat /var/log/docker

注: YYYY-MM-DD は、ログファイルを確認する日付に置き換えます。

一般的なエラーのトラブルシューティング

エラー: 新しいEC2インスタンスの起動。ステータスの理由: このアカウントは現在ブロックされており、有効なアカウントとして認識されていません。ご質問は まで。EC2インスタンスの起動に失敗しました。

このエラーは、アカウントがブロックされており、Amazon がアカウントを認識できない場合に発生します。アカウントのブロックを解除するには、AWS にアカウントのブロック解除をリクエストする旨を にメールで送信してください。

エラー:再登録: ClientException: コンテナインスタンス 12345678910abcdefghixzy は非アクティブです。\n\tステータスコード: 400、リクエスト ID: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go

このエラーは、EC2 インスタンスが非アクティブであるため、Amazon ECS コンテナエージェントがクラスターを使用して EC2 コンテナインスタンスを登録できない場合に発生します。このエラーは、インスタンスで実行するアプリケーションに関連するものです。エラーの原因を特定するには、最初にアプリケーションを確認します。エラーが解消されない場合は、Amazon ECS コンテナエージェントのログを確認します。

エラー: いくつかのインスタンスはクラスターに参加できますが、他のインスタンスは同じ設定ではクラスターに参加できません。

このエラーの原因は、特定の API コールがレートクォータを超えたことであり、ThrottlingException が発生します。詳細については、「Amazon ECS API に対するリクエストのスロットリング」を参照してください。このエラーを解決するには、アカウントレベルのレート制限を増やします。AWS CloudTrail を使用して ListTasksRegisterContainerInstance などの一般的な API コールを確認します。

エラー: インスタンスタイプを変更すると、新しいインスタンスがクラスターに参加できなくなります。

このエラーは、ECS エージェントの状態が Pending で止まっており、インスタンスタイプを変更できない場合に発生します。Amazon ECS でインスタンスタイプを変更するには、次の手順を実行します:

  1. コンテナインスタンスを削除します
  2. 新しいインスタンスタイプを持つ新しいコンテナインスタンスを起動します。
    注: クラスターでは Amazon ECS 最適化 Amazon Linux 2 AMI を使用してインスタンスを起動することがベストプラクティスです。

または、新しい起動設定を作成した後、Auto Scaling グループの起動設定を更新します。

詳細については、「Amazon ECS でコンテナのインスタンスタイプを変更する方法を教えてください」を参照してください。

エラー: ECSにコンテナインスタンスとして登録できません: アクセス拒否例外: ユーザー: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-00aa11bb22cc33def は、リソース: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster に対して次の操作を行う権限がありません。 status code: 400、リクエストID: 0a123456-7899-10101-a987-6543210deff

または

エラー: 2019-06-29T16:10:09Z [ERROR] 再登録エラー: アクセス拒否例外: ユーザー: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-0052b2e858b1891ef は、リソース: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster に対して次の操作を行う権限がありません。status code: 400、リクエストID: 0a123456-7899-10101-a987-123456pqrs

これらのエラーは、必要な IAM アクセス許可が欠けている場合に発生します。これらのエラーを解決するには、コンテナインスタンスの IAM ロールを作成します。次に、AWSSupport-TroubleshootECSContainerInstance ランブックを実行し、コンテナインスタンスのロールに欠けているアクセス許可を特定します。

関連情報

Amazon Linux 1 AMI を使用する Amazon ECS コンテナインスタンスが切断される理由を知りたいです

Amazon ECS のトラブルシューティング

コメントはありません

関連するコンテンツ