FireLens 設定を使用するタスク定義の作成 - Amazon ECS

FireLens 設定を使用するタスク定義の作成

FireLens でカスタムログルーティングを使用するには、タスク定義で以下を指定する必要があります。

  • FireLens 設定を含むログルーターコンテナ。コンテナは essential とマークすることが推奨されます。

  • awsfirelens ログドライバーを指定するログ設定を含む 1 つ以上のアプリケーションコンテナ。

  • タスクでログをルーティングするために必要なアクセス許可を含むタスク IAM ロール ARN。

AWS Management Console を使用して新しいタスク定義を作成する場合、ログルーターコンテナを簡単に追加できる FireLens 統合セクションがあります。詳細については、「タスク定義の作成」を参照してください。

Amazon ECS はログ設定を変換し、Fluentd または Fluent Bit 出力設定を生成します。出力設定は、/fluent-bit/etc/fluent-bit.conf (Fluent Bit) および /fluentd/etc/fluent.conf (Fluentd) のログルーティングコンテナにマウントされます。

重要

FireLens はポート 24224 を待ち受けるため、FireLens ログルーターがタスクが使用するセキュリティグループ内のポート 24224 で、イングレストラフィックを許可しないタスクの外に到達できないことを確認します。awsvpc ネットワークモードを使用する場合、これはタスクに関連付けられたセキュリティグループです。host ネットワークモードを使用する場合、これはタスクをホストする Amazon EC2 インスタンスに関連付けられているセキュリティグループです。bridge ネットワークモードを使用する場合、24224 ポートを使用するポートマッピングを作成しないでください。

以下のタスク定義の例では、Fluent Bit を使用してログを CloudWatch Logs にルーティングするログルーターコンテナを定義しています。また、ログ設定を使用してログをAmazon Kinesis Data Firehose にルーティングするアプリケーションコンテナも定義しています。

{ "family": "firelens-example-firehose", "taskRoleArn": "arn:aws:iam::123456789012:role/ecs_task_iam_role", "containerDefinitions": [ { "essential": true, "image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:latest", "name": "log_router", "firelensConfiguration": { "type": "fluentbit" }, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "firelens-container", "awslogs-region": "us-west-2", "awslogs-create-group": "true", "awslogs-stream-prefix": "firelens" } }, "memoryReservation": 50 }, { "essential": true, "image": "httpd", "name": "app", "logConfiguration": { "logDriver":"awsfirelens", "options": { "Name": "firehose", "region": "us-west-2", "delivery_stream": "my-stream" } }, "memoryReservation": 100 } ] }

logConfiguration オブジェクトのオプションとして指定されたキーと値のペアは、Fluentd または Fluent Bit 出力設定の生成に使用されます。Fluent Bit 出力定義のコード例は次のとおりです。

[OUTPUT] Name firehose Match app-firelens* region us-west-2 delivery_stream my-stream
注記

FireLens は match 設定を管理します。この設定は、タスク定義で指定されません。

Amazon ECS メタデータの使用

タスク定義で FireLens 設定を指定する場合、必要に応じて enable-ecs-log-metadata の値を切り替えることができます。デフォルトでは、Amazon ECS は、ログのソースを識別するのに役立つ追加のフィールドをログエントリに追加します。このアクションを無効にするには、enable-ecs-log-metadatafalse に設定します。

  • ecs_cluster - タスクが所属するクラスターの名前。

  • ecs_task_arn - コンテナが所属するタスクの完全な ARN。

  • ecs_task_definition - タスクが使用しているタスク定義名とリビジョン。

Amazon ECS ログメタデータ設定値を指定するときに必要な構文を次に示します。

{ "containerDefinitions":[ { "essential":true, "image":"906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:latest", "name":"log_router", "firelensConfiguration":{ "type":"fluentbit", "options":{ "enable-ecs-log-metadata":"true | false" } } } ] }

カスタム設定ファイルの指定

FireLens で自動的に生成される設定ファイルに加えて、自分でカスタム設定ファイルを指定することもできます。設定ファイル形式は、使用しているログルーターのネイティブ形式です。詳細については、「Fluentd 設定ファイルの構文」および「Fluent Bit 設定スキーマ」を参照してください。

カスタム設定ファイルの場合、bridge または awsvpc ネットワークモードを使用するタスクでは、TCP 経由で Fluentd または Fluent Bit 転送入力を設定しないでください (FireLens ではそれが入力設定に追加されます)。

カスタム設定ファイルを指定するには、FireLens 設定に次のオプションを含める必要があります。

config-file-type

カスタム設定ファイルのソースの場所。使用できるオプションは、s3 または file です。

注記

AWS Fargate でホストされるタスクは、file 設定ファイルタイプのみをサポートします。

config-file-value

カスタム設定ファイルのソース。s3設定ファイルタイプを使用する場合、設定ファイルの値はAmazon S3バケットとファイルの完全な ARN です。file 設定ファイルタイプを使用する場合、設定ファイルの値は、コンテナイメージ内またはコンテナにマウントされているボリューム上に存在する設定ファイルの完全パスです。

重要

カスタム設定ファイルを使用する場合は、FireLens が使用するパスとは異なるパスを指定する必要があります。Amazon ECS は Fluent Bit に /fluent-bit/etc/fluent-bit.conf ファイルパスと Fluentd に /fluentd/etc/fluent.conf を指定します。

次の例は、カスタム設定を指定するときに必要な構文を示しています。

重要

Amazon S3でホストされるカスタム設定ファイルを指定するには、適切なアクセス許可を持つタスク実行 IAM ロールが作成済みであることを確認します。詳細については、「必要な IAM アクセス許可」を参照してください。

カスタム設定を指定するときに必要な構文を次に示します。

{ "containerDefinitions":[ { "essential":true, "image":"906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:latest", "name":"log_router", "firelensConfiguration":{ "type":"fluentbit", "options":{ "config-file-type":"s3 | file", "config-file-value":"arn:aws:s3:::mybucket/fluent.conf | filepath" } } } ] }
注記

AWS Fargate でホストされるタスクは、file 設定ファイルタイプのみをサポートします。