カスタムログルーティング - Amazon ECS

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

カスタムログルーティング

Amazon ECS 対応 FireLens では、タスク定義パラメータを使用して AWS のサービスや AWS パートナーネットワーク (APN ) の宛先にログをルーティングし、ログを保存および分析できます。FireLens は Fluentd および Fluent Bitで動作します。提供されている AWS for Fluent Bit イメージを使用することも、独自の Fluentd または Fluent Bit イメージを使用することもできます。

FireLens 設定を使用した Amazon ECS タスク定義の作成は、AWS SDK、AWS CLI、および AWS マネジメントコンソール でサポートされています。

考慮事項

Amazon ECS 対応 FireLens を使用する際は、以下の点を考慮してください。

  • FireLens for Amazon ECS は、AWS Fargate と Amazon EC2 の両方でホストされるタスクでサポートされています。

  • Amazon ECS の FireLensは、AWS CloudFormation テンプレートでサポートされています。詳細については、AWS CloudFormation ユーザーガイド の「AWS:: ECS::TaskDefinition FirelensConfiguration」を参照してください。

  • bridge ネットワークモードを使用するタスクの場合、FireLens 設定のコンテナは、それに依存するアプリケーションコンテナが開始する前に開始する必要があります。コンテナの開始順序を制御するには、タスク定義の依存関係条件を使用します。詳細については、「コンテナの依存関係」を参照してください。

    注記

    FireLens 設定のコンテナ定義で依存関係条件パラメータを使用する場合は、各コンテナに START または HEALTHY 条件要件があることを確認してください。

必要な IAM アクセス許可

この機能を使用するには、タスク用の IAM ロールを作成し、AWS のサービスを使用するために必要なアクセス許可をタスクに付与する必要があります。たとえば、コンテナから Kinesis Data Firehose にログをルーティングする場合、タスクには firehose:PutRecordBatch API を呼び出すためのアクセス許可が必要です。詳細については、IAM ユーザーガイドの「IAM ID アクセス許可の追加と削除」を参照してください。

次の IAM ポリシー例では、ログを Kinesis Data Firehose にルーティングするために必要なアクセス許可を追加します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecordBatch" ], "Resource": [ "*" ] } ] }

以下の場合は、タスクに Amazon ECS タスク実行ロールが必要になることもあります。詳細については、「Amazon ECS タスク実行 IAM ロール」を参照してください。

  • タスクが Fargate でホストされていて、Amazon ECR からコンテナイメージをプルしたり、ログ設定で AWS Secrets Manager の機密データを参照したりする場合は、タスク実行 IAM ロールを含める必要があります。

  • Amazon S3 でホストされるカスタム設定ファイルを指定する場合、タスク実行 IAM ロールには、設定ファイル用の s3:GetObject アクセス許可と、ファイルが格納されている Amazon S3 バケットに対する s3:GetBucketLocation アクセス許可を含める必要があります。詳細については、Amazon Simple Storage Service コンソールユーザーガイドの「ポリシーでのアクセス許可の指定」を参照してください。

    次の IAM ポリシー例では、Amazon S3 からファイルを取得するために必要なアクセス許可を追加します。Amazon S3 バケットの名前と設定ファイル名を指定します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::examplebucket/folder_name/config_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::examplebucket" ] } ] }

Fluent ロガーライブラリの使用

awsfirelens ログドライバーがタスク定義で指定されている場合、ECS エージェントは次の環境変数をコンテナに挿入します。

FLUENT_HOST

FireLens コンテナに割り当てられた IP アドレス。

FLUENT_PORT

Fluent Forward プロトコルがリッスンしているポート。

FLUENT_HOST 環境変数および FLUENT_PORT 環境変数を使用すると、stdout を介することなく、コードからログルーターに直接ログを記録できます。詳細については、GitHub の「flluent-logger-golang」 を参照してください。