# 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/3.5.0/agent-fluentbit-aws/#create-docker)
- [Deploy Fluent Bit Container in ECS](https://docs.kloudfuse.com/platform/3.5.0/agent-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)
