

# Amazon ECS Windows コンテナに Fluent Bit をデプロイする
<a name="tutorial-deploy-fluentbit-on-windows"></a>

Fluent Bit とは、さまざまなオペレーティングシステムでサポートされている高速で柔軟なログプロセッサおよびルーターです。Amazon CloudWatch Logs、Firehose Amazon S3、Amazon OpenSearch Service など、さまざまな AWS の宛先にログをルーティングするために使用できます。Fluent Bit は、[Datadog](https://www.datadoghq.com/)、[Splunk](https://www.splunk.com/)、カスタム HTTP サーバーなどの一般的なパートナーソリューションをサポートしています。Fluent Bit の詳細については、[https://fluentbit.io/](https://fluentbit.io/) のウェブサイトを参照してください。

**AWS for Fluent Bit** イメージは、高可用性を実現するためにほとんどのリージョンの Amazon ECR Public Gallery と Amazon ECR リポジトリの両方の Amazon ECR で利用できます。この詳細については、GitHub ウェブサイトの「[https://github.com/aws/aws-for-fluent-bit](https://github.com/aws/aws-for-fluent-bit)」を参照してください。

このチュートリアルでは、Amazon ECS で実行されている Windows インスタンスに Fluent Bit コンテナをデプロイし、Windows タスクによって生成されたログを Amazon CloudWatch にストリーミングして集中型ロギングを実現する方法について説明します。

このチュートリアルでは、次のようなアプローチを使用します。
+ Fluent Bit は、デーモンスケジューリングストラテジーを備えたサービスとして実行されます。この戦略により、Fluent Bit の 1 つのインスタンスが常にクラスター内のコンテナインスタンス上で実行されるようになります。
  + 転送入力プラグインを使用して、ポート 24224 でリッスンします。
  + Docker ランタイムがこの公開ポートを使用して Fluent Bit にログを送信できるように、ポート 24224 をホストに公開します。
  + Fluent Bit がログレコードを指定された宛先に送信できるようにする設定があります。
+ fluentd ロギングドライバーを使用して、その他すべての Amazon ECS タスクコンテナを起動します。詳細については、Docker ドキュメントのウェブサイトの「[Fluentd ロギングドライバー](https://docs.docker.com/engine/logging/drivers/fluentd/)」を参照してください。
  + Docker は、ホスト名前空間内のローカルホスト上の TCP ソケット 24224 に接続します。
  + Amazon ECS エージェントは、クラスター名、タスク定義ファミリー名、タスク定義リビジョン番号、タスク ARN、およびコンテナ名を含むラベルをコンテナに追加します。fluentd docker ロギングドライバーの labels オプションを使用して、同じ情報がログレコードに追加されます。詳細については、Docker ドキュメントのウェブサイトの「[ラベル、labels-regex、env、env、env-regex](https://docs.docker.com/config/containers/logging/fluentd/#labels-labels-regex-env-and-env-regex)」を参照してください。
  + fluentd ロギングドライバーの `async` オプションは `true` に設定されているため、Fluent Bit コンテナを再起動すると、docker は Fluent Bit コンテナが再起動されるまでログをバッファー処理します。fluentd-buffer-limit オプションを設定することで、バッファー制限を増やすことができます。詳細については、Docker ドキュメントのウェブサイトの「[fluentd-buffer-limit](https://docs.docker.com/config/containers/logging/fluentd/#fluentd-buffer-limit)」を参照してください。

 ワークフローは次のとおりです。
+ Fluent Bit コンテナは、ホストに公開されているポート 24224 で起動してリッスンします。
+ Fluent Bit では、タスク定義で指定されたタスク IAM ロール認証情報を使用します。
+ 同じインスタンスで起動された他のタスクは、fluentd docker ロギングドライバーを使用してポート 24224 にある Fluent Bit コンテナに接続します。
+ アプリケーションコンテナがログを生成すると、docker ランタイムはそれらのレコードにタグを付け、ラベルに指定されたメタデータを追加して、ホスト名前空間のポート 24224 に転送します。
+ Fluent Bit はホスト名前空間に公開されているため、ポート 24224 でログレコードを受信します。
+ Fluent Bit は内部処理を実行し、指定されたとおりにログをルーティングします。

このチュートリアルでは、以下を行うデフォルトの CloudWatch Fluent Bit 設定を使用します。
+ 各クラスターとタスク定義ファミリーごとに新しいロググループを作成します。
+ 新しいタスクが開始されるたびに、上記で生成されたロググループのタスクコンテナごとに新しいログストリームを作成します。各ストリームは、コンテナが属しているタスク ID でマークされます。
+ クラスター名、タスク ARN、タスクコンテナ名、タスク定義ファミリー、タスク定義リビジョン番号などのを含むメタデータを各ログエントリに追加します。

  例えば、`container_1` と `container_2` のある `task_1` および `container_3` のある t`ask_2` の場合、CloudWatch ログストリームは次のようになります。
  + `/aws/ecs/windows.ecs_task_1`

    `task-out.{{TASK_ID}}.container_1`

    `task-out.{{TASK_ID}}.container_2`
  + `/aws/ecs/windows.ecs_task_2`

    `task-out.{{TASK_ID}}.container_3`

**注記**  
デュアルスタックサービスエンドポイントを使用することで、IPv4 と IPv6 の両方を介して AWS CLI、SDK、および Amazon ECS API から Amazon ECS とやり取りできます。詳細については、「[Amazon ECS デュアルスタックエンドポイントの使用](dual-stack-endpoint.md)」を参照してください。

**Topics**
+ [前提条件](#tutorial-deploy-fluentbit-on-windows-prereqs)
+ [ステップ 1: IAM アクセスロールを作成する](#tutorial-deploy-fluentbit-on-windows-iam-access-role)
+ [ステップ 2: Amazon ECS Windows コンテナインスタンスを作成する](#tutorial-deploy-fluentbit-on-windows-instance)
+ [ステップ 3: Fluent Bit の設定](#tutorial-deploy-fluentbit-on-windows-configure-fluentbit)
+ [ステップ 4: ログを CloudWatch にルーティングする Windows Fluent Bit タスク定義を登録する](#tutorial-deploy-fluentbit-on-windows-register-task-definition)
+ [ステップ 5: デーモンスケジューリング戦略を使用して `ecs-windows-fluent-bit` タスク定義を Amazon ECS サービスとして実行する](#tutorial-deploy-fluentbit-on-windows-run-task)
+ [ステップ 6: ログを生成する Windows タスク定義を登録する](#tutorial-deploy-fluentbit-on-windows-register-task-def-logs)
+ [ステップ 7: `windows-app-task` タスク定義を実行する](#tutorial-deploy-fluentbit-on-windows-run-task-fluentbit)
+ [ステップ 8: CloudWatch でログを確認する](#tutorial-deploy-fluentbit-on-windows-verify)
+ [ステップ 9: クリーンアップする。](#tutorial-deploy-fluentbit-on-windows-cleanup)

## 前提条件
<a name="tutorial-deploy-fluentbit-on-windows-prereqs"></a>

このチュートリアルでは、以下の前提条件が完了済みであることを前提としています。
+ AWS CLI の最新バージョンがインストールされ、設定されていること。詳細については、「[AWS CLIの最新バージョンをインストールまたは更新](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。
+ `aws-for-fluent-bit` コンテナイメージは、次の Windows オペレーティングシステムで使用できます。
  + Windows Server 2019 Core
  + Windows Server 2019 Full
  + Windows Server 2022 Core
  + Windows Server 2022 Full
+ 「[Amazon ECS を使用するようにセットアップする](get-set-up-for-amazon-ecs.md)」のステップを完了していること。
+ クラスターがあります。このチュートリアルでは、クラスター名は **[FluentBit-Cluster]** です。
+ EC2 インスタンスを起動するパブリックサブネットを持つ VPC があります。デフォルトの VPC を使用できます。Amazon CloudWatch エンドポイントがサブネットに到達できるようにするプライベートサブネットを使用することもできます。Amazon CloudWatch エンドポイントの詳細については、「*AWS 全般のリファレンス*」の「[Amazon CloudWatch のエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/cw_region.html)」を参照してください。Amazon VPC ウィザードを使用して VPC を作成する方法の詳細については、「[仮想プライベートクラウドを作成する](get-set-up-for-amazon-ecs.md#create-a-vpc)」を参照してください。

## ステップ 1: IAM アクセスロールを作成する
<a name="tutorial-deploy-fluentbit-on-windows-iam-access-role"></a>

Amazon ECS の IAM ロールを作成します。

1.  「ecsInstanceRole」という名前の Amazon ECS コンテナインスタンスロールを作成します。詳細については、「[Amazon ECS コンテナインスタンス IAM ロール](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html)」を参照してください。

1. `fluentTaskRole` と名付けられた Fluent Bit タスク用の IAM ロールを作成します。詳細については、「[Amazon ECS タスクの IAM ロール](task-iam-roles.md)」を参照してください。

    この IAM ロールで付与される IAM 許可は、タスクコンテナによって引き受けられます。Fluent Bit が CloudWatch にログを送信できるようにするには、タスク IAM ロールに次の権限をアタッチする必要があります。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "logs:CreateLogStream",
               "logs:CreateLogGroup",
               "logs:DescribeLogStreams",
               "logs:PutLogEvents"
           ],
           "Resource": "*"
       }
       ]
   }
   ```

------

1. ロールへのポリシーの付与

   1. 上記の内容を、`fluent-bit-policy.json` という名前のファイルに保存します。

   1. `fluentTaskRole` IAM ロールにインラインポリシーをアタッチするには、次のコマンドを実行します。

      ```
      aws iam put-role-policy --role-name fluentTaskRole --policy-name fluentTaskPolicy --policy-document file://fluent-bit-policy.json
      ```

## ステップ 2: Amazon ECS Windows コンテナインスタンスを作成する
<a name="tutorial-deploy-fluentbit-on-windows-instance"></a>

Amazon ECS Windows コンテナインスタンスを作成します。

**Amazon ECS インスタンスを作成するには**

1. `aws ssm get-parameters` コマンドを使用して、VPC をホストするリージョン用の AMI ID を取得します。詳細については、「[Amazon ECS に最適化された AMI メタデータを取得する](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/retrieve-ecs-optimized_windows_AMI.html)」を参照してください。

1. Amazon EC2 コンソールを使用して、インスタンスを起動します。

   1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

   1. ナビゲーションバーから、使用するリージョンを選択します。

   1. **EC2 ダッシュボード**から、[**Launch Instance**] を選択します。

   1. [**Name (名前)**] に一意の名前を入力します。

   1. **[Application and OS Images (Amazon Machine Image)]** (アプリケーションおよび OS イメージ (Amazon マシンイメージ)) で、最初の手順で取得した AMI を選択します。

   1. [**Instance type (インスタンスタイプ)**] として [`t3.xlarge`] を選択します。

   1. **[Key pair (login)]** (キーペア (ログイン)) には、キーペアを選択します。

   1. **[Network settings]** (ネットワーク設定) にある **[Security group]** (セキュリティグループ) には、既存のセキュリティグループを選択することも、新しいセキュリティグループを作成することもできます。

   1. **[Network settings]** (ネットワーク設定) の **[Auto-assign Public IP]** (パブリック IP の自動割り当て) で、**[Enable]** (有効にする) を選択します。

   1. **[Advanced details]** (高度な詳細) で、**[IAM instance profile]** (IAM インスタンスプロファイル) として **[ecsInstanceRole]** を選択します。

   1. 次のユーザーデータを使用して、Amazon ECS コンテナインスタンスを設定します。**[Advanced Details]** (詳細情報) にある **[User data]** (ユーザーデータ) フィールドに以下のスクリプトを貼り付け、{{cluster\_name}} をクラスターの名前に置き換えます。

      ```
      <powershell>
      Import-Module ECSTools
      Initialize-ECSAgent -Cluster {{cluster-name}} -EnableTaskENI -EnableTaskIAMRole -LoggingDrivers '["awslogs","fluentd"]'
      </powershell>
      ```

   1. 準備ができたら、確認フィールドを選択してから、[**Launch Instances**] を選択します。

   1. 確認ページは、インスタンスが起動中であることを通知します。**[View Instances]** (インスタンスを表示) を選択して確認ページを閉じ、コンソールに戻ります。

## ステップ 3: Fluent Bit の設定
<a name="tutorial-deploy-fluentbit-on-windows-configure-fluentbit"></a>

AWS に用意されている次のデフォルト設定を使用すると、すぐに開始できます。
+ [Amazon CloudWatch](https://github.com/aws/aws-for-fluent-bit/blob/mainline/ecs_windows_forward_daemon/cloudwatch.conf)。「*Fluent Bit 公式マニュアル*」にある [Amazon CloudWatch](https://docs.fluentbit.io/manual/v/1.9-pre/pipeline/outputs/cloudwatch) 用 Fluent Bit プラグインをベースにしています。

または、AWS で提供されている他のデフォルト設定を使用することもできます。詳細については、`aws-for-fluent-bit` Github ウェブサイトの「[Windows イメージのエントリポイントのオーバーライド](https://github.com/aws/aws-for-fluent-bit/tree/mainline/ecs_windows_forward_daemon#overriding-the-entrypoint-for-the-windows-image)」を参照してください。

デフォルトの Amazon CloudWatch Fluent Bit 設定を以下に示します。

以下の変数を置き換えます。
+ {{region}} を、Amazon CloudWatch ログを送信したいリージョンで置き換えます。

```
[SERVICE]
    Flush               5
    Log_Level           info
    Daemon              off

[INPUT]
    Name                forward
    Listen              0.0.0.0
    Port                24224
    Buffer_Chunk_Size   1M
    Buffer_Max_Size     6M
    Tag_Prefix          ecs.

# Amazon ECS agent adds the following log keys as labels to the docker container.
# We would use fluentd logging driver to add these to log record while sending it to Fluent Bit.
[FILTER]
    Name                modify
    Match               ecs.*
    Rename              com.amazonaws.ecs.cluster ecs_cluster
    Rename              com.amazonaws.ecs.container-name ecs_container_name
    Rename              com.amazonaws.ecs.task-arn ecs_task_arn
    Rename              com.amazonaws.ecs.task-definition-family ecs_task_definition_family
    Rename              com.amazonaws.ecs.task-definition-version ecs_task_definition_version

[FILTER]
    Name                rewrite_tag
    Match               ecs.*
    Rule                $ecs_task_arn ^([a-z-:0-9]+)/([a-zA-Z0-9-_]+)/([a-z0-9]+)$  out.$3.$ecs_container_name false
    Emitter_Name        re_emitted

[OUTPUT]
    Name                cloudwatch_logs
    Match               out.*
    region              {{region}}
    log_group_name      fallback-group
    log_group_template  /aws/ecs/$ecs_cluster.$ecs_task_definition_family
    log_stream_prefix   task-
    auto_create_group   On
```

Fluent Bit に入るすべてのログには、ユーザーが指定したタグが付いているか、指定しない場合は自動的に生成されます。タグを使用して、さまざまなログをさまざまな宛先にルーティングできます。追加情報については、「*Fluent Bit 公式マニュアル*」の「[タグ](https://docs.fluentbit.io/manual/concepts/key-concepts#tag)」を参照してください。

前述の Fluent Bit 設定には次のプロパティがあります。
+ 転送入力プラグインは TCP ポート 24224 で受信トラフィックをリッスンします。
+ ポートで受信した各ログエントリにはタグがあり、転送入力プラグインはこれを変更してレコードのプレフィックスに `ecs.` 文字列を付けます。
+ Fluent Bit の内部パイプラインは、Match regex を使用してログエントリをルーティングし、フィルターを変更します。このフィルターは、ログレコード JSON のキーを Fluent Bit が使用できる形式に置き換えます。
+ 変更されたログエントリは、その後 rewrite\_tag フィルターによって使用されます。このフィルターは、ログレコードのタグを out.{{TASK\_ID}}。{{CONTAINER\_NAME}} 形式に変更します。
+ 新しいタグは、CloudWatch 出力プラグインの `log_group_template` オプションおよび `log_stream_prefix` オプションを使用して前述のようにロググループとストリームを作成する出力 cloudwatch\_logs プラグインにルーティングされます。追加情報については、「*Fluent Bit 公式マニュアル*」の「[設定パラメータ](https://docs.fluentbit.io/manual/v/1.9-pre/pipeline/outputs/cloudwatch#configuration-parameters)」を参照してください。

## ステップ 4: ログを CloudWatch にルーティングする Windows Fluent Bit タスク定義を登録する
<a name="tutorial-deploy-fluentbit-on-windows-register-task-definition"></a>

ログを CloudWatch にルーティングする Windows Fluent Bit タスク定義を登録します。

**注記**  
このタスク定義では、Fluent Bit コンテナポート 24224 をホストポート 24224 に公開します。外部からのアクセスを防ぐため、EC2 インスタンスのセキュリティグループでこのポートが開いていないことを確認してください。

**タスク定義を登録するには**

1. 次の内容で、`fluent-bit.json` という名前のファイルを作成します。

   以下の変数を置き換えます。
   + {{task-iam-role}}。タスク IAM ロールの Amazon リソースネーム (ARN) に置き換えます。
   + {{region}}。タスクが実行されるリージョンに置き換えます。

   ```
   {
     "family": "ecs-windows-fluent-bit",
     "taskRoleArn": "{{task-iam-role}}",
     "containerDefinitions": [
       {
         "name": "fluent-bit",
         "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:windowsservercore-latest",
         "cpu": 512,
         "portMappings": [
           {
             "hostPort": 24224,
             "containerPort": 24224,
             "protocol": "tcp"
           }
         ],
         "entryPoint": [
           "Powershell",
           "-Command"
         ],
         "command": [
           "C:\\entrypoint.ps1 -ConfigFile C:\\ecs_windows_forward_daemon\\cloudwatch.conf"
         ],
         "environment": [
           {
             "name": "AWS_REGION",
             "value": "{{region}}"
           }
         ],
         "memory": 512,
         "essential": true,
         "logConfiguration": {
           "logDriver": "awslogs",
           "options": {
             "awslogs-group": "/ecs/fluent-bit-logs",
             "awslogs-region": "{{region}}",
             "awslogs-stream-prefix": "flb",
             "awslogs-create-group": "true"
           }
         }
       }
     ],
     "memory": "512",
     "cpu": "512"
   }
   ```

1. 次のコマンドを実行して、タスク定義を登録します。

   ```
   aws ecs register-task-definition --cli-input-json {{file://fluent-bit.json}} --region {{region}}
   ```

   `list-task-definitions` コマンドを実行して、アカウントのタスク定義をリスト表示できます。出力には、`run-task` または `start-task` と一緒に使用できるファミリーとリビジョンの値が表示されます。

## ステップ 5: デーモンスケジューリング戦略を使用して `ecs-windows-fluent-bit` タスク定義を Amazon ECS サービスとして実行する
<a name="tutorial-deploy-fluentbit-on-windows-run-task"></a>

アカウントのタスク定義を登録したら、クラスターでタスクを実行できます。このチュートリアルでは、`FluentBit-cluster` クラスターで `ecs-windows-fluent-bit:1` タスク定義のインスタンスを 1 つ実行します。デーモンスケジューリング戦略を使用するサービスでタスクを実行することにより、Fluent Bit の単一インスタンスが常に各コンテナインスタンスで実行されます。

**タスクを実行するには**

1. 以下のコマンドを実行して、`ecs-windows-fluent-bit:1` タスク定義 (前のステップで登録済み) をサービスとして起動します。
**注記**  
このタスク定義は `awslogs` ロギングドライバーを使用するため、コンテナインスタンスには必要な権限が必要です。

   以下の変数を置き換えます。
   + {{region}}。サービスが実行されるリージョンに置き換えます。

   ```
   aws ecs create-service \
       --cluster FluentBit-cluster \
       --service-name FluentBitForwardDaemonService \
       --task-definition ecs-windows-fluent-bit:1 \
       --launch-type EC2 \
       --scheduling-strategy DAEMON \
       --region {{region}}
   ```

1. 次のコマンドを実行して、タスクを一覧表示します。

   以下の変数を置き換えます。
   + {{region}}。サービスタスクが実行されるリージョンに置き換えます。

   ```
   aws ecs list-tasks --cluster {{FluentBit-cluster}} --region {{region}}
   ```

## ステップ 6: ログを生成する Windows タスク定義を登録する
<a name="tutorial-deploy-fluentbit-on-windows-register-task-def-logs"></a>

ログを生成するタスク定義を登録します。このタスク定義では、1 秒ごとに増分数を `stdout` に書き込む Windows コンテナイメージをデプロイします。

タスク定義では、Fluent Bit プラグインがリッスンするポート 24224 に接続する fluentd ロギングドライバーを使用します。Amazon ECS エージェントは、クラスター名、タスク ARN、タスク定義ファミリー名、タスク定義リビジョン番号、タスクコンテナ名などを含むタグのある各 Amazon ECS コンテナにラベルを付けます。これらのキー値ラベルは Fluent Bit に渡されます。

**注記**  
このタスクは、`default` ネットワークモードを使用します。ただし、タスクで `awsvpc` ネットワークモードを使用することもできます。

**タスク定義を登録するには**

1. 次の内容で、`windows-app-task.json` という名前のファイルを作成します。

   ```
   {
     "family": "windows-app-task",
     "containerDefinitions": [
       {
         "name": "sample-container",
         "image": "mcr.microsoft.com/windows/servercore:ltsc2019",
         "cpu": 512,
         "memory": 512,
         "essential": true,
         "entryPoint": [
           "Powershell",
           "-Command"
         ],
         "command": [
           "$count=1;while(1) { Write-Host $count; sleep 1; $count=$count+1;}"
         ],
         "logConfiguration": {
           "logDriver": "fluentd",
           "options": {
             "fluentd-address": "localhost:24224",
             "tag": "{{ index .ContainerLabels \"com.amazonaws.ecs.task-definition-family\" }}",
             "fluentd-async": "true",
             "labels": "com.amazonaws.ecs.cluster,com.amazonaws.ecs.container-name,com.amazonaws.ecs.task-arn,com.amazonaws.ecs.task-definition-family,com.amazonaws.ecs.task-definition-version"
           }
         }
       }
     ],
     "memory": "512",
     "cpu": "512"
   }
   ```

1. 次のコマンドを実行して、タスク定義を登録します。

   以下の変数を置き換えます。
   + {{region}}。タスクが実行されるリージョンに置き換えます。

   ```
   aws ecs register-task-definition --cli-input-json {{file://windows-app-task.json}} --region {{region}}
   ```

   `list-task-definitions` コマンドを実行して、アカウントのタスク定義をリスト表示できます。出力には、`run-task` または `start-task` と一緒に使用できるファミリーとリビジョンの値が表示されます。

## ステップ 7: `windows-app-task` タスク定義を実行する
<a name="tutorial-deploy-fluentbit-on-windows-run-task-fluentbit"></a>

`windows-app-task` タスク定義を登録したら、`FluentBit-cluster` クラスターで実行します。

**タスクを実行するには**

1. 前の手順で登録した `windows-app-task:1` タスク定義を実行します。

   以下の変数を置き換えます。
   + {{region}}。タスクが実行されるリージョンに置き換えます。

   ```
   aws ecs run-task --cluster FluentBit-cluster --task-definition windows-app-task:1 --count 2 --region {{region}}
   ```

1. 次のコマンドを実行して、タスクを一覧表示します。

   ```
   aws ecs list-tasks --cluster {{FluentBit-cluster}}
   ```

## ステップ 8: CloudWatch でログを確認する
<a name="tutorial-deploy-fluentbit-on-windows-verify"></a>

Fluent Bit の設定を確認するには、CloudWatch コンソールで次のロググループを確認します。
+ `/ecs/fluent-bit-logs` - これは、コンテナインスタンスで実行されている Fluent Bit デーモンコンテナに対応するロググループです。
+ `/aws/ecs/FluentBit-cluster.windows-app-task` - これは、`FluentBit-cluster` クラスター内の `windows-app-task` タスク定義ファミリーで起動されたすべてのタスクに対応するロググループです。

   `task-out.{{FIRST_TASK_ID}}.sample-container` - このログストリームには、sample-container タスクコンテナ内のタスクの最初のインスタンスによって生成されたすべてのログが含まれます。

  `task-out.{{SECOND_TASK_ID}}.sample-container` - このログストリームには、sample-container タスクコンテナ内のタスクの 2 番目のインスタンスによって生成されたすべてのログが含まれます。

 `task-out.{{TASK_ID}}.sample-container` ログストリームには次のようなフィールドがあります。

```
{
    "source": "stdout",
    "ecs_task_arn": "arn:aws:ecs:{{region}}:0123456789012:task/FluentBit-cluster/13EXAMPLE",
    "container_name": "/ecs-windows-app-task-1-sample-container-cEXAMPLE",
    "ecs_cluster": "FluentBit-cluster",
    "ecs_container_name": "sample-container",
    "ecs_task_definition_version": "1",
    "container_id": "61f5e6EXAMPLE",
    "log": "10",
    "ecs_task_definition_family": "windows-app-task"
}
```

**Fluent Bit 設定を検証するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. ナビゲーションペインで、**[Log groups]** (ロググループ) を選択します。Fluent Bit をコンテナにデプロイしたリージョンにいることを確認してください。

   AWS リージョンのロググループのリストは、以下のように表示されます。
   + `/ecs/fluent-bit-logs`
   + `/aws/ecs/FluentBit-cluster.windows-app-task`

   これらのロググループが表示される場合、Fluent Bit のセットアップは検証済みです。

## ステップ 9: クリーンアップする。
<a name="tutorial-deploy-fluentbit-on-windows-cleanup"></a>

このチュートリアルが終了したら、使用していないリソースに対する料金が発生しないように、チュートリアルに関連付けられたリソースをクリーンアップします。

**チュートリアルリソースをクリーンアップするには**

1. `windows-simple-task` タスクおよび `ecs-fluent-bit` タスクを停止します。詳細については、「[Amazon ECS タスクの停止](standalone-task-stop.md)」を参照してください。

1. 次のコマンドを実行して、`/ecs/fluent-bit-logs` ロググループを削除します。ロググループの削除に関する詳細については、「*AWS Command Line Interfaceリファレンス*」の「[delete-log-group](https://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-group.html)」を参照してください。

   ```
   aws logs delete-log-group --log-group-name /ecs/fluent-bit-logs
   aws logs delete-log-group --log-group-name /aws/ecs/FluentBit-cluster.windows-app-task
   ```

1. 次のコマンドを実行して、インスタンスを停止します。

   ```
   aws ec2 terminate-instances --instance-ids {{instance-id}}
   ```

1. 次のコマンドを実行して、IAM ロールを削除します。

   ```
   aws iam delete-role --role-name ecsInstanceRole
   aws iam delete-role --role-name fluentTaskRole
   ```

1. 次のコマンドを実行して、Amazon ECS クラスターを削除します。

   ```
   aws ecs delete-cluster --cluster {{FluentBit-cluster}}
   ```