タスク定義の例 - Amazon ECS

タスク定義の例

次に示すのは、一般的なカスタムログルーティングオプションを示すタスク定義の例です。その他の例については、GitHub の「Amazon ECS FireLens の例」を参照してください。

ログを CloudWatch Logs に転送する

注記

その他の例については、GitHub の「Amazon ECS FireLens の例」を参照してください。

次のタスク定義の例は、CloudWatch Logs ロググループにログを転送するログ設定を指定する方法を示しています。詳細については、Amazon CloudWatch Logs ユーザーガイドの「Amazon CloudWatch Logs とは」を参照してください。

ログ設定オプションで、ロググループ名とロググループが存在するリージョンを指定します。Fluent Bit で自動的にロググループを作成するには、"auto_create_group":"true" を指定します。フィルタリングに役立つログストリームプレフィックスとしてタスク ID を指定することもできます。詳細については、「CloudWatch Logs 用の Fluent Bit プラグイン」を参照してください。

{ "family": "firelens-example-cloudwatch", "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": "nginx", "name": "app", "logConfiguration": { "logDriver":"awsfirelens", "options": { "Name": "cloudwatch", "region": "us-west-2", "log_key": "log", "log_group_name": "/aws/ecs/containerinsights/$(ecs_cluster)/application", "auto_create_group": "true", "log_stream_prefix": "log_stream_name" } }, "memoryReservation": 100 } ] }

Amazon Kinesis Data Firehose 配信ストリームへのログの転送

注記

その他の例については、GitHub の「Amazon ECS FireLens の例」を参照してください。

次のタスク定義の例は、Amazon Kinesis Data Firehose 配信ストリームにログを転送するログ設定を指定する方法を示しています。Kinesis Data Firehose の配信ストリームの名前は、すでに存在している必要があります。詳細については、Amazon Kinesis Data Firehose 開発者ガイドの「Amazon Kinesis Data Firehose 配信ストリームの作成」を参照してください。

ログ設定オプションで、配信ストリーム名と配信ストリームが存在するリージョンを指定します。詳細については、「 Amazon Kinesis Firehose 用の Fluent Bit プラグイン」を参照してください。

{ "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 } ] }

Amazon OpenSearch Serviceドメインへのログの転送

注記

その他の例については、GitHub の「Amazon ECS FireLens の例」を参照してください。

次のタスク定義の例は、Amazon OpenSearch Service ドメインにログを転送するログ設定を指定する方法を示しています。Amazon OpenSearch Service ドメインは既に存在している必要があります。詳細については、『Amazon OpenSearch Service 開発者ガイド』の「Amazon OpenSearch Service とは」を参照してください。

ログ設定オプションで、OpenSearch Service 統合に必要なログオプションを指定します。詳細については、「Amazon OpenSearch Service の Fluent Bit」を参照してください。

{ "family": "firelens-example-opensearch", "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": "es", "Host": "vpc-fake-domain-ke7thhzo07jawrhmz6mb7ite7y.us-west-2.es.amazonaws.com", "Port": "443", "Index": "my_index", "Type": "my_type", "AWS_Auth": "On", "AWS_Region": "us-west-2", "tls": "On" } }, "memoryReservation": 100 } ] }

シリアル化された JSON であるコンテナログの解析

注記

その他の例については、GitHub の「Amazon ECS FireLens の例」を参照してください。

AWS for Fluent Bit バージョン 1.3 以降では、AWS for Fluent Bit イメージには JSON パーサーが含まれています。次の例は、タスク定義の FireLens 設定で JSON パーサーを参照する方法を示しています。

"firelensConfiguration": { "type": "fluentbit", "options": { "config-file-type": "file", "config-file-value": "/fluent-bit/configs/parse-json.conf" } },

Fluent Bit 設定ファイルは、JSON にあるログを解析します。例えば、JSON 解析を行わずに、送信先のログが次のようになっているとします。

{ "source": "stdout", "log": "{\"requestID\": \"b5d716fca19a4252ad90e7b8ec7cc8d2\", \"requestInfo\": {\"ipAddress\": \"204.16.5.19\", \"path\": \"/activate\", \"user\": \"TheDoctor\"}}", "container_id": "e54cccfac2b87417f71877907f67879068420042828067ae0867e60a63529d35", "container_name": "/ecs-demo-6-container2-a4eafbb3d4c7f1e16e00" "ecs_cluster": "mycluster", "ecs_task_arn": "arn:aws:ecs:us-east-2:01234567891011:task/mycluster/3de392df-6bfa-470b-97ed-aa6f482cd7a6", "ecs_task_definition": "demo:7" "ec2_instance_id": "i-06bc83dbc2ac2fdf8" }

JSON 解析では、ログは次のようになります。

{ "source": "stdout", "container_id": "e54cccfac2b87417f71877907f67879068420042828067ae0867e60a63529d35", "container_name": "/ecs-demo-6-container2-a4eafbb3d4c7f1e16e00" "ecs_cluster": "mycluster", "ecs_task_arn": "arn:aws:ecs:us-east-2:01234567891011:task/mycluster/3de392df-6bfa-470b-97ed-aa6f482cd7a6", "ecs_task_definition": "demo:7" "ec2_instance_id": "i-06bc83dbc2ac2fdf8" "requestID": "b5d716fca19a4252ad90e7b8ec7cc8d2", "requestInfo": { "ipAddress": "204.16.5.19", "path": "/activate", "user": "TheDoctor" } }

シリアル化された JSON は、最終的な JSON 出力の最上位フィールドに展開されます。JSON 解析の詳細については、Fluent Bit ドキュメントの「Parser」を参照してください。

外部の Fluentd または Fluent Bit への転送

注記

その他の例については、GitHub の「Amazon ECS FireLens の例」を参照してください。

次のタスク定義の例は、外部の Fluentd または Fluent Bit ホストにログを転送するログ設定を指定する方法を示しています。環境の hostport を指定します。

{ "family": "firelens-example-forward", "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": "forward", "Host": "fluentdhost", "Port": "24224" } }, "memoryReservation": 100 } ] }