Amazon ECS ログを AWS サービスまたは AWS Partner に送信する
FireLens for Amazon ECS では、タスク定義パラメータを使用してログを AWS サービスや AWS Partner Network (APN) の宛先にルーティングし、ログを保存および分析できます。AWS Partner Network は、プログラム、専門知識、リソースを活用して顧客向けサービスの構築、マーケティング、販売を行うパートナーのグローバルコミュニティです。詳細については、「AWS Partner
デフォルトでは、Amazon ECS は、Firelens コンテナを使用するコンテナより前に Firelens コンテナを起動するようにコンテナの依存関係を設定します。また Firelens コンテナは、それを使用するすべてのコンテナが停止した後で停止します。
FireLens for Amazon ECS を使用する際は、以下の点を考慮してください。
-
コンソール上でコンテナ名を簡単に区別できるよう、
my_service_
をログコンテナ名に追加することをおすすめします。 -
Amazon ECS はデフォルトで、アプリケーションコンテナと FireLens コンテナの間に開始コンテナ順序依存関係を追加します。アプリケーションコンテナと FireLens コンテナ間でコンテナ順序を指定すると、デフォルトの開始コンテナ順序が上書きされます。
-
FireLens for Amazon ECS は、Linux の AWS Fargate と Linux の Amazon EC2 の両方でホストされたタスクでサポートされます。Windows コンテナは FireLens をサポートしていません。
Windows コンテナの集中ロギングを設定する方法については、「Centralized logging for Windows containers on Amazon ECS using Fluent Bit
」(Fluent Bit を使用した Amazon ECS での Windows コンテナの集中ロギング) を参照してください。 -
AWS CloudFormation テンプレートを使用して、Amazon ECS 用に FireLens を設定できます。詳細については、AWS CloudFormation ユーザーガイドの「AWS::ECS::TaskDefinition FirelensConfiguration」を参照してください。
-
FireLens はポート
24224
でリッスンするため、FireLens ログルーターがタスク外に到達できないようにするには、タスクが使用するセキュリティグループでポート24224
でのインバウンドトラフィックを許可してはなりません。awsvpc
ネットワークモードを使用するタスクの場合、これは、そのタスクに関連付けられたセキュリティグループです。host
ネットワークモードを使用するタスクでは、そのタスクをホストする Amazon EC2 インスタンスに関連付けられているセキュリティグループです。bridge
ネットワークモードを使用するタスクの場合、ポート24224
を使用するポートマッピングを作成しないでください。 -
bridge
ネットワークモードを使用するタスクの場合、FireLens 設定のコンテナは、それに依存するアプリケーションコンテナが開始する前に開始する必要があります。コンテナの開始順序を制御するには、タスク定義の依存関係条件を使用します。詳細については、「コンテナの依存関係」を参照してください。注記
FireLens 設定のコンテナ定義で依存関係条件パラメータを使用する場合は、各コンテナに
START
またはHEALTHY
条件要件があることを確認してください。 -
デフォルトでは、FireLens はクラスターとタスクの定義名、およびクラスターの Amazon リソースネーム (ARN) をメタデータキーとして stdout/stderr コンテナログに追加します。メタデータ形式の例を次に示します。
"ecs_cluster": "
cluster-name
", "ecs_task_arn": "arn:aws:ecs:region
:111122223333
:task/cluster-name
/f2ad7dba413f45ddb4EXAMPLE
", "ecs_task_definition": "task-def-name:revision",ログにメタデータを含めたくない場合は、タスク定義の「
firelensConfiguration
」セクションでenable-ecs-log-metadata
をfalse
に設定します。"firelensConfiguration":{ "type":"fluentbit", "options":{ "enable-ecs-log-metadata":"false", "config-file-type":"file", "config-file-value":"/extra.conf" }
この機能を使用するには、タスク用の IAM ロールを作成し、AWS のサービスを使用するために必要なアクセス許可をタスクに付与する必要があります。例えば、コンテナから Firehose にログをルーティングする場合、タスクには firehose:PutRecordBatch
API を呼び出すためのアクセス許可が必要です。詳細については、IAM ユーザーガイドの「IAM ID アクセス許可の追加と削除」を参照してください。
以下の場合は、タスクに Amazon ECS タスク実行ロールが必要になることもあります。詳細については、「Amazon ECS タスク実行IAM ロール」を参照してください。
-
タスクが Fargate でホストされていて、Amazon ECR からコンテナイメージをプルしたり、ログ設定で AWS Secrets Manager の機密データを参照したりする場合は、タスク実行 IAM ロールを含める必要があります。
-
Amazon S3 でホストされているカスタム設定ファイルを使用する場合は、タスク実行 IAM ロールに
s3:GetObject
アクセス許可が含まれている必要があります。
Amazon S3 でホストするファイルや Amazon S3 内のファイルなど、Amazon ECS で複数の設定ファイルを使用する方法については、「Init process for Fluent Bit on ECS, multi-config support