Amazon ECS コンテナログが CloudWatch ログに配信されないのはなぜですか?

所要時間2分
0

Amazon CloudWatch ログに自分の Amazon Elastic Container Service (Amazon ECS) タスクのコンテナログが見つかりません。

簡単な説明

Amazon ECS コンテナログは、次のいずれかの理由で CloudWatch Logs に配信されない場合があります。

  • awslogs ログドライバが Amazon ECS タスク定義で正しく設定されていません。
  • AWS Identity and Access Management (IAM) ロールに必要な権限がありません。
  • ネットワークが正しく設定されていない。
  • コンテナのログレベルが正しく設定されていません。

解決策

awslogs ログドライバが正しく設定されていません

コンテナログ情報を CloudWatch Logs に送信するには、タスク内のコンテナを正しく設定する必要があります。コンテナのパラメータを定義するときはLogConfiguration パラメータを正しく設定してください。Amazon ECS タスク定義に複数のコンテナが含まれる場合は、コンテナごとにこのパラメータを設定する必要があります。また、awslogs ログドライバーをタスク定義の LogConfiguration パラメーターに追加する必要があります。

Amazon Elastic Compute Cloud (Amazon EC2) 起動タイプの場合は、次の追加タスクを実行します。

  • Amazon ECS コンテナインスタンスをコンテナエージェントのバージョン 1.9.0 以降に更新します。詳細については、「Amazon ECS コンテナエージェントの更新」を参照してください。
  • Amazon ECS に最適化された AMI を使用しないコンテナインスタンスの場合は、コンテナインスタンスで awslogs ログドライバを指定します。次の環境変数を使用してエージェントを起動する場合、awslogs ログドライバーを指定します。
    ECS_AVAILABLE_LOGGING_DRIVERS='["json-file","awslogs"]'

詳細については、「Amazon ECS コンテナエージェントのインストール」を参照してください。

IAM ロールには必要な権限がありません

次の手順を実行します:

  • Amazon ECS コンテナインスタンスの IAM ロールには、logs:CreateLogStream 権限と logs:PutLogEvents 権限を追加します。
  • AWS Fargate 起動タイプについては、logs:CreateLogStream 権限と logs:PutLogEvents 権限を持つ Amazon ECS タスク実行 IAM ロールを使用してください。詳細については、「Amazon ECS タスク実行 IAM ロール」を参照してください。
  • Amazon EC2 起動タイプについては、以下を確認してください。
    Amazon ECS タスク実行 IAM ロールを使用しないタスクについては、コンテナインスタンスの IAM ロールlogs:CreateLogStream 権限と logs:PutLogEvents 権限を付与してください。
    Amazon ECS タスク実行 IAM ロールを使用するタスクについては、コンテナエージェントパラメータ ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE の値を true に更新してください。
    **注:**Amazon ECS に最適化された AMI を ecs-init パッケージのバージョン 1.16.0 -1 以降で使用する場合、このパラメータのデフォルト値は true です。Windows では、このパラメーターのデフォルト値は false です。詳細については、「Amazon ECS コンテナエージェント設定」を参照してください。

ネットワークが正しく設定されていない。

インターネットゲートウェイなしで Amazon Virtual Private Cloud (Amazon VPC) で awslogs ログドライバーを使用するタスクでは、CloudWatch Logs エンドポイントを作成する必要があります。詳細については、「インターフェイス VPC エンドポイントを備えた CloudWatch Logs の使用」を参照してください。

コンテナのログレベルが正しく設定されていません

awslogs ログドライバーは、Docker からの STDOUT および STDERR I/O ストリームであるコンテナーログを CloudWatch ログに渡します。ログを STDOUT および STDERR I/O ストリームに送信するようにアプリケーションを更新します。コンテナのビルド中に、アプリケーションの正しいログレベルを設定します。アプリケーションによっては、環境変数または設定ファイルを使用してログレベルを設定できます。

関連情報

Amazon ECS のモニタリングツール

Amazon ECS または Amazon Elastic Kubernetes Service (Amazon EKS) のコンテナログが見つからない場合のトラブルシューティング方法を教えてください。

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

関連するコンテンツ