# Fluent Bit for AWS ECS/ECS Fargate Container Logs

An Amazon Elastic Container Service (Amazon ECS) task definition allows you to specify only a single log configuration object for a container. This limit means that you can forward logs to a single destination, only. See AWS documentation for [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html). To forward logs to multiple destinations in Amazon ECS on Fargate, you can use FireLens.

You can work around this restriction by integrating with Fluent Bit, through these primary tasks:

- [Create a Custom Fluent Bit docker image](https://docs.kloudfuse.com/platform/4.0.2/data-collection/agents/fluentbit/aws/#create-docker)

- [Deploy Fluent Bit Container in ECS](https://docs.kloudfuse.com/platform/4.0.2/data-collection/agents/fluentbit/aws/#deploy-fluent-bit)

## Create a Custom Fluent Bit docker image

1. Create a custom Fluent Bit configuration file, `logDestinations.conf`, and specify your choice of `[OUTPUT]` definitions.

```yaml
   [OUTPUT]
              Name http
              Match *
              Host <Kloudfuse DNS>
              Port 443
              TLS on
              TLS.debug 4
              URI /ingester/v1/fluent_bit
              Format {json|json_lines|json_stream|msgpack}
   ```

2. Create a Docker image using the custom Fluent Bit output configuration file.

Use the Dockerfile `latest`.

```console
   FROM amazon/aws-for-fluent-bit:latest

ADD logDestinations.conf /logDestinations.conf
   ```

3. Using the Dockerfile from the previous step, run this command:

```console
   docker build -t custom-fluent-bit:latest .
   ```

4. Push your image to the ECR Image repo from where the ECS Containers pull images.

```console
   docker push aws_account_id.dkr.ecr.region.amazonaws.com/custom-fluent-bit:latest
   ```

## Deploy Fluent Bit Container in ECS

1. In the task definition, update the options for your FireLens configuration:

```yaml
   {
        "containerDefinitions": [\
          {\
            "essential": true,\
            "image": "aws_account_id.dkr.ecr.region.amazonaws.com/custom-fluent-bit:latest",\
            "name": "log_router",\
            "firelensConfiguration": {\
              "type": "fluentbit",\
              "options": {\
                "config-file-type": "file", (1)\
                "config-file-value": "/logDestinations.conf"\
              }\
            }\
          }\
        ]
   }
   ```

|     |     |
   | --- | --- |
   | **1** | Add options here. |

2. For details of ECS FluentBit task definition, example see AWS documentation on [Example Amazon ECS task definition: Route logs to FireLens](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/firelens-taskdef.html)
