

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 字串變動處理器
<a name="CloudWatch-Logs-Transformation-StringMutate"></a>

本節包含您可以與日誌事件轉換器搭配使用的字串變動處理器相關資訊。

**Contents**
+ [

## lowerCaseString
](#CloudWatch-Logs-Transformation-lowerCaseString)
+ [

## upperCaseString
](#CloudWatch-Logs-Transformation-upperCaseString)
+ [

## splitString
](#CloudWatch-Logs-Transformation-splitString)
+ [

## substituteString
](#CloudWatch-Logs-Transformation-substituteString)
+ [

## trimString
](#CloudWatch-Logs-Transformation-trimString)

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

`lowerCaseString` 處理器會將字串轉換為小寫版本。


| 欄位 | Description | 是否為必要？ | 預設 | 限制 | 
| --- | --- | --- | --- | --- | 
|  withKeys | 要轉換為小寫的索引鍵清單 |  是 |  |  項目上限：10 | 

**範例**

採用下列範例日誌事件：

```
{
    "outer_key": {
        "inner_key": "INNER_VALUE"
    }
}
```

轉換器組態是這樣，使用 `lowerCaseString`搭配 `parseJSON`：

```
[
    {
        "parseJSON": {}
    },
    {
        "lowerCaseString": {
            "withKeys":["outer_key.inner_key"]
        }
    }
]
```

轉換的日誌事件如下。

```
{
  "outer_key": {
    "inner_key": "inner_value"
  }
}
```

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

`upperCaseString` 處理器會將字串轉換為其大寫版本。


| 欄位 | Description | 是否為必要？ | 預設 | 限制 | 
| --- | --- | --- | --- | --- | 
|  withKeys | 要轉換為大寫的金鑰清單 |  是 |  |  項目上限：10 | 

**範例**

採用下列範例日誌事件：

```
{
    "outer_key": {
        "inner_key": "inner_value"
    }
}
```

轉換器組態是這樣，使用 `upperCaseString`搭配 `parseJSON`：

```
[
    {
        "parseJSON": {}
    },
    {
        "upperCaseString": {
            "withKeys":["outer_key.inner_key"]
        }
    }
]
```

轉換的日誌事件如下。

```
{
  "outer_key": {
    "inner_key": "INNER_VALUE"
  }
}
```

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

`splitString` 處理器是一種字串變動處理器，使用分隔字元將欄位分割為陣列。


| 欄位 | Description | 是否為必要？ | 預設 | 限制 | 
| --- | --- | --- | --- | --- | 
|  項目 | 項目陣列。陣列中的每個項目都必須包含 source和 delimiter 欄位。 |  是 |  |  項目上限：10 | 
|  source | 要分割之欄位值的索引鍵 |  是 |  |  長度上限：128 | 
|  分隔符號 | 要在 上分割欄位值的分隔符號字串 |  是 |  |  長度上限：128 | 

**範例 1**

採用下列範例日誌事件：

```
{
    "outer_key": {
        "inner_key": "inner_value"
    }
}
```

轉換器組態是如此，使用 `splitString`搭配 `parseJSON`：

```
[
     {
        "parseJSON": {}
    },
    {
         "splitString": {
            "entries": [
                {
                    "source": "outer_key.inner_key",
                    "delimiter": "_"
                }
            ]
        }
    }
]
```

轉換的日誌事件如下。

```
{
  "outer_key": {
    "inner_key": [
      "inner",
      "value"
    ]
  }
}
```

**範例 2**

要在 上分割字串的分隔符號長度可以是多個字元。

採用下列範例日誌事件：

```
{
    "outer_key": {
        "inner_key": "item1, item2, item3"
    }
}
```

轉換器組態如下所示：

```
[
     {
        "parseJSON": {}
    },
    {
         "splitString": {
            "entries": [
                {
                    "source": "outer_key.inner_key",
                    "delimiter": ", "
                }
            ]
        }
    }
]
```

轉換的日誌事件如下。

```
{
  "outer_key": {
    "inner_key": [
      "item1",
      "item2",
      "item3"
    ]
  }
}
```

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

`substituteString` 處理器是一種字串變動處理器，會將索引鍵的值與規則表達式比對，並以取代字串取代所有比對。


| 欄位 | Description | 是否為必要？ | 預設 | 限制 | 
| --- | --- | --- | --- | --- | 
|  項目 | 項目陣列。陣列中的每個項目必須包含 source、 from和 to 欄位。 |  是 |  |  項目上限：10 | 
|  source | 要修改的欄位索引鍵 |  是 |  |  長度上限：128 巢狀金鑰深度上限：3 | 
|  from | 要取代的規則表達式字串。使用雙引號時必須使用 \$1\$1 逸出 【 和 】 等特殊規則運算式字元，使用單引號時或從 設定時必須使用 \$1 逸出 AWS 管理主控台。如需詳細資訊，請參閱 Oracle 網站上的[類別模式](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/regex/Pattern.html)。 您可以在 中包裝模式`(...)`，以建立編號的擷取群組，並建立可在 `to` 欄位中參考的`(?P<group_name>...)`具名擷取群組。 |  是 |  |  長度上限：128 | 
|  至 | 對於擷取群組的每個 from Backreference 配對，可以使用要取代的字串。將 \$1n 格式用於編號群組，例如 \$11，並將 \$1\$1group\$1name\$1用於具名群組，例如 \$1\$1my\$1group\$1。> |  是 |  |  長度上限：128 最大反引數數：10 重複的反向參考數目上限：2 | 

**範例 1**

採用下列範例日誌事件：

```
{
    "outer_key": {
        "inner_key1": "[]",
        "inner_key2": "123-345-567",
        "inner_key3": "A cat takes a catnap."
    }
}
```

轉換器組態是如此，使用 `substituteString`搭配 `parseJSON`：

```
[
    {
        "parseJSON": {}
    },
    {
        "substituteString": {
            "entries": [
                {
                    "source": "outer_key.inner_key1",
                    "from": "\\[\\]",
                    "to": "value1"
                },
                {
                    "source": "outer_key.inner_key2",
                    "from": "[0-9]{3}-[0-9]{3}-[0-9]{3}",
                    "to": "xxx-xxx-xxx"
                },
                {
                    "source": "outer_key.inner_key3",
                    "from": "cat",
                    "to": "dog"
                }
            ]
        }
    }
]
```

轉換的日誌事件如下。

```
{
  "outer_key": {
    "inner_key1": "value1",
    "inner_key2": "xxx-xxx-xxx",
    "inner_key3": "A dog takes a dognap."
  }
}
```

**範例 2**

採用下列範例日誌事件：

```
{
    "outer_key": {
        "inner_key1": "Tom, Dick, and Harry",
        "inner_key2": "arn:aws:sts::123456789012:assumed-role/MyImportantRole/MySession"
    }
}
```

轉換器組態是如此，使用 `substituteString`搭配 `parseJSON`：

```
[
    {
        "parseJSON": {}
    },
    {
        "substituteString": {
            "entries": [
                {
                    "source": "outer_key.inner_key1",
                    "from": "(\w+), (\w+), and (\w+)",
                    "to": "$1 and $3"
                },
                {
                    "source": "outer_key.inner_key2",
                    "from": "^arn:aws:sts::(?P<account_id>\\d{12}):assumed-role/(?P<role_name>[\\w+=,.@-]+)/(?P<role_session_name>[\\w+=,.@-]+)$",
                    "to": "${account_id}:${role_name}:${role_session_name}"
                }
            ]
        }
    }
]
```

轉換的日誌事件如下。

```
{
  "outer_key": {
    "inner_key1": "Tom and Harry",
    "inner_key2": "123456789012:MyImportantRole:MySession"
  }
}
```

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

`trimString` 處理器會從金鑰的開頭和結尾移除空格。


| 欄位 | Description | 是否為必要？ | 預設 | 限制 | 
| --- | --- | --- | --- | --- | 
|  withKeys | 要修剪的金鑰清單 |  是 |  |  項目上限：10 | 

**範例**

採用下列範例日誌事件：

```
{
    "outer_key": {
        "inner_key": "   inner_value  "
    }
}
```

轉換器組態是如此，使用 `trimString`搭配 `parseJSON`：

```
[
    {
        "parseJSON": {}
    },
    {
        "trimString": {
            "withKeys":["outer_key.inner_key"]
        }
    }
]
```

轉換的日誌事件如下。

```
{
  "outer_key": {
    "inner_key": "inner_value"
  }
}
```