ECS Windows コンテナに Fluent Bit をデプロイするチュートリアルをやってみた
Amazon ECS Windows コンテナに Fluent Bit をデプロイする - Amazon Elastic Container Service
上記チュートリアルをやってみました。
手順通りにできなかった部分もあったので紹介します。
チュートリアルからの変更点
- ECS クラスター名
- ecs-windows-fluent-bit タスクのイメージ
事前準備
ECS クラスターを作成しておきます。
今回は EC2 インスタンスを ECS 外で起動するため、キャパシティプロバイダーは使用しない設定で作成します。

ステップ 1: IAM アクセスロールを作成する
ドキュメントの手順で OK です。
ステップ 2: Amazon ECS Windows コンテナインスタンスを作成する
Amazon ECS に最適化された Windows AMI メタデータを取得する - Amazon Elastic Container Service
まずは使用する AMI ID を確認する必要があります。
後述の手順との兼ね合いもあり、今回は Windows Server 2019 Core の AMI ID を取得します。
$ aws ssm get-parameters \
--names /aws/service/ami-windows-latest/Windows_Server-2019-English-Core-ECS_Optimized
{
"Parameters": [
{
"Name": "/aws/service/ami-windows-latest/Windows_Server-2019-English-Core-ECS_Optimized",
"Type": "String",
"Value": "{\"image_name\":\"Windows_Server-2019-English-Core-ECS_Optimized-2025.04.14\",\"image_id\":\"ami-0b99f4ee36e51da31\",\"ecs_runtime_version\":\"Docker (CE) version 25.0.6\",\"ecs_agent_version\":\"1.91.2\"}",
"Version": 77,
"LastModifiedDate": "2025-04-23T17:31:50.743000+00:00",
"ARN": "arn:aws:ssm:ap-northeast-1::parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Core-ECS_Optimized",
"DataType": "text"
}
],
"InvalidParameters": []
}
AMI ID は ami-0b99f4ee36e51da31 であることがわかりましたので、EC2 コンソールで AMI を検索して EC2 インスタンスを起動します。

EC2 インスタンス起動時の設定はドキュメント通りです。
ユーザーデータの cluster-name は事前準備で作成した ECS クラスター名に置換してください。
今回は test という ECS クラスター名で作成したので、cluster-name を test に置換しました。
<powershell>
Import-Module ECSTools
Initialize-ECSAgent -Cluster test -EnableTaskENI -EnableTaskIAMRole -LoggingDrivers '["awslogs","fluentd"]'
</powershell>
ステップ 3: Fluent Bit の設定
今回は設定せずにデフォルトで進めます。
ステップ 4: ログを CloudWatch にルーティングする Windows Fluent Bit タスク定義を登録する
手順はドキュメント通りで問題ありませんが、使用するイメージを変更しました。
- ドキュメント: public.ecr.aws/aws-observability/aws-for-fluent-bit:windowsservercore-latest
- 変更後: public.ecr.aws/aws-observability/aws-for-fluent-bit:windowsservercore-stable
ドキュメントのイメージだと以下の挙動でした。
- EC2 インスタンスの OS が Windows Server 2022 Full: コンテナ起動
- EC2 インスタンスの OS が Windows Server 2019 Core: コンテナが起動しない
当初は Windows Server 2022 Full で検証していましたが、後述の windows-app-task のイメージが ervercore:ltsc2019 であるため、EC2 インスタンスの OS を Windows Server 2019 Core に変更したところ、ecs-windows-fluent-bit のタスクが起動しなくなりました。
windowsservercore-latest と Windows Server 2019 Core に互換性がなかったことが原因だと思われたため、windowsservercore-stable に変更しました。
変更後の ecs-windows-fluent-bit のタスク定義は以下の通りです。
(イメージを変更したためリビジョンが 2 になっています)
{
"taskDefinitionArn": "arn:aws:ecs:ap-northeast-1:012345678901:task-definition/ecs-windows-fluent-bit:2",
"containerDefinitions": [
{
"name": "fluent-bit",
"image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:windowsservercore-stable",
"cpu": 512,
"memory": 512,
"portMappings": [
{
"name": "fluent-bit-24224-tcp",
"containerPort": 24224,
"hostPort": 24224,
"protocol": "tcp"
}
],
"essential": true,
"entryPoint": [
"Powershell",
"-Command"
],
"command": [
"C:\\entrypoint.ps1 -ConfigFile C:\\ecs_windows_forward_daemon\\cloudwatch.conf"
],
"environment": [
{
"name": "AWS_REGION",
"value": "ap-northeast-1"
}
],
"mountPoints": [],
"volumesFrom": [],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/fluent-bit-logs",
"awslogs-create-group": "true",
"awslogs-region": "ap-northeast-1",
"awslogs-stream-prefix": "flb"
},
"secretOptions": []
},
"systemControls": []
}
],
"family": "ecs-windows-fluent-bit",
"taskRoleArn": "arn:aws:iam::012345678901:role/ecsTaskExecutionRole",
"revision": 2,
"volumes": [],
"status": "ACTIVE",
"requiresAttributes": [
{
"name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
},
{
"name": "com.amazonaws.ecs.capability.task-iam-role"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.29"
}
],
"placementConstraints": [],
"compatibilities": [
"EC2"
],
"cpu": "512",
"memory": "512",
"registeredAt": "2025-05-08T13:04:21.328Z",
"registeredBy": "xxx",
"tags": []
}
ステップ 5: デーモンスケジューリング戦略を使用して ecs-windows-fluent-bit タスク定義を Amazon ECS サービスとして実行する
ドキュメント通りの手順で OK です。
create-service コマンドの --cluster で指定するクラスター名は事前準備で作成した ECS クラスター名です。
$ aws ecs create-service \
--cluster test \
--service-name FluentBitForwardDaemonService \
--task-definition ecs-windows-fluent-bit:1 \
--launch-type EC2 \
--scheduling-strategy DAEMON \
--region ap-northeast-1
タスクが起動するまで数分かかります。
タスク起動後に CloudWatch ロググループ「/ecs/fluent-bit-logs」が作成され、ログストリームも作成されます。

ログストリームには以下のログが記録されていました。
AWS for Fluent Bit Container Image Version 2.31.12
Fluent Bit v1.9.10
* Copyright (C) 2015-2022 The Fluent Bit Authors
* Fluent Bit is a CNCF sub-project under the umbrella of Fluentd
* https://fluentbit.io
[2025/05/09 02:03:58] [ info] [fluent bit] version=1.9.10, commit=b256069337, pid=516
[2025/05/09 02:03:58] [ info] [storage] version=1.4.0, type=memory-only, sync=normal, checksum=disabled, max_chunks_up=128
[2025/05/09 02:03:58] [ info] [cmetrics] version=0.3.7
[2025/05/09 02:03:58] [ info] [input:forward:forward.0] listening on 0.0.0.0:24224
[2025/05/09 02:03:58] [ warn] [aws_credentials] Failed to initialize profile provider: HOME, AWS_CONFIG_FILE, and AWS_SHARED_CREDENTIALS_FILE not set.
[2025/05/09 02:03:59] [ info] [sp] stream processor started
[2025/05/09 02:03:59] [ info] [output:cloudwatch_logs:cloudwatch_logs.0] worker #0 started
ステップ 6: ログを生成する Windows タスク定義を登録する
ドキュメントの手順で OK です。
ステップ 7: windows-app-task タスク定義を実行する
ドキュメントの手順で OK です。
run-task コマンドの --cluster で指定するクラスター名は事前準備で作成した ECS クラスター名です。
$ aws ecs run-task \
--cluster test \
--task-definition windows-app-task:1 \
--count 2 \
--region ap-northeast-1
タスクが起動するまで数分かかります。
タスク起動後に CloudWatch ロググループ「/aws/ecs/FluentBit-cluster.windows-app-task」が作成され、ログストリームも作成されます。

ステップ 8: CloudWatch でログを確認する
以下の 2 つのロググループでログを確認できれば OK です。
- /ecs/fluent-bit-logs
- /aws/ecs/FluentBit-cluster.windows-app-task
後者のログストリームには以下のログが記録されていました。
{
"ecs_cluster": "test",
"ecs_container_name": "sample-container",
"container_id": "ff3747f41f0ed6b5fa8aa4166a3b551b43bad80b78efa4d6cae2f9daa2ac5158",
"source": "stdout",
"ecs_task_definition_family": "windows-app-task",
"ecs_task_arn": "arn:aws:ecs:ap-northeast-1:012345678901:task/test/7fef8bc59b7a4d5d88bfed1fe25ae45e",
"container_name": "/ecs-windows-app-task-1-sample-container-889bf88dd0ffe5c25800",
"log": "1",
"ecs_task_definition_version": "1"
}
まとめ
今回は ECS Windows コンテナに Fluent Bit をデプロイするチュートリアルをやってみました。
どなたかの参考になれば幸いです。
Discussion