

# Datatype converter processors
<a name="CloudWatch-Logs-Transformation-Datatype"></a>

This section contains information about the datatype converter processors that you can use with a log event transformer. 

**Contents**
+ [typeConverter](#CloudWatch-Logs-Transformation-typeConverter)
+ [datetimeConverter](#CloudWatch-Logs-Transformation-datetimeConverter)

## typeConverter
<a name="CloudWatch-Logs-Transformation-typeConverter"></a>

Use the `typeConverter` processor to convert a value type associated with the specified key to the specified type. It's a casting processor that changes the types of the specified fields. Values can be converted into one of the following datatypes: `integer`, `double`, `string` and `boolean`. 


| Field | Description | Required? | Default | Limits | 
| --- | --- | --- | --- | --- | 
| entries | Array of entries. Each item in the array must contain key and type fields. | Yes |  | Maximum entries: 10 | 
| key | The key with the value that is to be converted to a different type | Yes |  | Maximum length: 128<br />Maximum nested key depth: 3 | 
| type | The type to convert to. Valid values are integer, double, string and boolean. | Yes |  |  | 

**Example**

Take the following example log event:

```
{
    "name": "value",
    "status": "200"
}
```

The transformer configuration is this, using `typeConverter` with `parseJSON`:

```
[
    {
        "parseJSON": {}
    },
    {
        "typeConverter": {
            "entries": [
                {
                    "key": "status",
                    "type": "integer"
                }
            ]
        }
    }
]
```

The transformed log event would be the following.

```
{
    "name": "value",
    "status": 200
}
```

## datetimeConverter
<a name="CloudWatch-Logs-Transformation-datetimeConverter"></a>

Use the `datetimeConverter` processor to convert a datetime string into a format that you specify. 


| Field | Description | Required? | Default | Limits | 
| --- | --- | --- | --- | --- | 
| source | The key to apply the date conversion to. | Yes |  | Maximum entries: 10 | 
| matchPatterns | A list of patterns to match against the source field | Yes |  | Maximum entries: 5 | 
| target | The JSON field to store the result in. | Yes |  | Maximum length: 128<br />Maximum nested key depth: 3 | 
| targetFormat | The datetime format to use for the converted data in the target field. | No | ` yyyy-MM-dd'T'HH:mm:ss.SSS'Z` | Maximum length:64 | 
| sourceTimezone | The time zone of the source field.<br />For a list of possible values, see [ Java Supported Zone Ids and Offsets](https://howtodoinjava.com/java/date-time/supported-zone-ids-offsets/#3-java-supported-zone-ids-and-offsets). | No | UTC | Minimum length:1 | 
| targetTimezone | The time zone of the target field.<br />For a list of possible values, see [ Java Supported Zone Ids and Offsets](https://howtodoinjava.com/java/date-time/supported-zone-ids-offsets/#3-java-supported-zone-ids-and-offsets). | No | UTC | Minimum length:1 | 
| locale | The locale of the source field.<br />For a list of possible values, see [ Locale getAvailableLocales() Method in Java with Examples](https://www.geeksforgeeks.org/locale-getavailablelocales-method-in-java-with-examples/). | Yes |  | Minimum length:1 | 

**Example**

Take the following example log event:

```
{"german_datetime": "Samstag 05. Dezember 1998 11:00:00"}
```

The transformer configuration is this, using `dateTimeConverter` with `parseJSON`:

```
[
    {
        "parseJSON": {}
    },
    {
        "dateTimeConverter": {
            "source": "german_datetime",
            "target": "target_1",
            "locale": "de",
            "matchPatterns": ["EEEE dd. MMMM yyyy HH:mm:ss"],
            "sourceTimezone": "Europe/Berlin",
            "targetTimezone": "America/New_York",
            "targetFormat": "yyyy-MM-dd'T'HH:mm:ss z"
        }
    }
]
```

The transformed log event would be the following.

```
{
    "german_datetime": "Samstag 05. Dezember 1998 11:00:00",
    "target_1": "1998-12-05T17:00:00 MEZ"
}
```