本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
JSON 變動處理器
本節包含您可以與日誌事件轉換器搭配使用的 JSON 變動處理器相關資訊。
addKeys
使用addKeys處理器將新的鍵/值對新增至日誌事件。
| 欄位 | 描述 | 是否為必要? | 預設 | 限制 |
|---|---|---|---|---|
|
項目 |
項目陣列。陣列中的每個項目都可以包含 key、 value和 overwriteIfExists 欄位。 |
是 |
項目上限:5 |
|
|
金鑰 |
要新增之新項目的索引鍵 |
是 |
長度上限:128 巢狀金鑰深度上限:3 |
|
|
value |
要新增的新項目值 |
是 |
長度上限:256 |
|
|
overwriteIfExists |
如果您將此設定為 true,則如果事件中key已存在,則會覆寫現有的值。預設值為 false。 |
否 |
false |
沒有限制 |
範例
採用下列範例日誌事件:
{ "outer_key": { "inner_key": "inner_value" } }
轉換器組態是這樣,使用 addKeys搭配 parseJSON:
[ { "parseJSON": {} }, { "addKeys": { "entries": [ { "source": "outer_key.new_key", "value": "new_value" } ] } } ]
轉換的日誌事件如下。
{ "outer_key": { "inner_key": "inner_value", "new_key": "new_value" } }
deleteKeys
使用deleteKeys處理器從日誌事件中刪除欄位。這些欄位可以包含鍵/值對。
| 欄位 | 描述 | 是否為必要? | 預設 | 限制 |
|---|---|---|---|---|
|
withKeys |
要刪除的金鑰清單。 |
是 |
沒有限制 |
項目上限:5 |
範例
採用下列範例日誌事件:
{ "outer_key": { "inner_key": "inner_value" } }
轉換器組態是如此,使用 deleteKeys搭配 parseJSON:
[ { "parseJSON": {} }, { "deleteKeys": { "withKeys":["outer_key.inner_key"] } } ]
轉換的日誌事件如下。
{ "outer_key": {} }
moveKeys
使用moveKeys處理器將金鑰從一個欄位移至另一個欄位。
| 欄位 | 描述 | 是否為必要? | 預設 | 限制 |
|---|---|---|---|---|
|
項目 |
項目陣列。陣列中的每個項目都可以包含 source、 target和 overwriteIfExists 欄位。 |
是 |
項目上限:5 |
|
|
source |
要移動的金鑰 |
是 |
長度上限:128 巢狀金鑰深度上限:3 |
|
|
目標 |
要移至 的金鑰 |
是 |
長度上限:128 巢狀金鑰深度上限:3 |
|
|
overwriteIfExists |
如果您將此設定為 true,則如果事件中key已存在,則會覆寫現有的值。預設值為 false。 |
否 |
false |
沒有限制 |
範例
採用下列範例日誌事件:
{ "outer_key1": { "inner_key1": "inner_value1" }, "outer_key2": { "inner_key2": "inner_value2" } }
轉換器組態是這樣,使用 moveKeys搭配 parseJSON:
[ { "parseJSON": {} }, { "moveKeys": { "entries": [ { "source": "outer_key1.inner_key1", "target": "outer_key2" } ] } } ]
轉換的日誌事件如下。
{ "outer_key1": {}, "outer_key2": { "inner_key2": "inner_value2", "inner_key1": "inner_value1" } }
renameKeys
使用renameKeys處理器重新命名日誌事件中的金鑰。
| 欄位 | 描述 | 是否為必要? | 預設 | 限制 |
|---|---|---|---|---|
|
項目 |
項目陣列。陣列中的每個項目都可以包含 key、 target和 overwriteIfExists 欄位。 |
是 |
沒有限制 |
項目上限:5 |
|
金鑰 |
要重新命名的金鑰 |
是 |
沒有限制 |
長度上限:128 |
|
目標 |
新的金鑰名稱 |
是 |
沒有限制 |
長度上限:128 巢狀金鑰深度上限:3 |
|
overwriteIfExists |
如果您將此設定為 true,則如果事件中key已存在,則會覆寫現有的值。預設值為 false。 |
否 |
false |
沒有限制 |
範例
採用下列範例日誌事件:
{ "outer_key": { "inner_key": "inner_value" } }
轉換器組態是這樣,使用 renameKeys搭配 parseJSON:
[ { "parseJSON": {} }, { "renameKeys": { "entries": [ { "key": "outer_key", "target": "new_key" } ] } } ]
轉換的日誌事件如下。
{ "new_key": { "inner_key": "inner_value" } }
copyValue
使用copyValue處理器在日誌事件中複製值。您也可以使用此處理器,透過將下列中繼資料金鑰的值複製到日誌事件,將中繼資料新增至日誌事件:@logGroupName、@logGroupStream、@accountId、@regionName。如下列範例所示。
| 欄位 | 描述 | 是否為必要? | 預設 | 限制 |
|---|---|---|---|---|
|
項目 |
項目陣列。陣列中的每個項目都可以包含 source、 target和 overwriteIfExists 欄位。 |
是 |
項目上限:5 |
|
|
source |
要複製的金鑰 |
是 |
長度上限:128 巢狀金鑰深度上限:3 |
|
|
目標 |
將值複製到 的金鑰 |
是 |
沒有限制 |
長度上限:128 巢狀金鑰深度上限:3 |
|
overwriteIfExists |
如果您將此設定為 true,則如果事件中key已存在,則會覆寫現有的值。預設值為 false。 |
否 |
false |
沒有限制 |
範例
採用下列範例日誌事件:
{ "outer_key": { "inner_key": "inner_value" } }
轉換器組態是如此,使用 copyValue搭配 parseJSON:
[ { "parseJSON": {} }, { "copyValue": { "entries": [ { "source": "outer_key.new_key", "target": "new_key" }, { "source": "@logGroupName", "target": "log_group_name" }, { "source": "@logGroupStream", "target": "log_group_stream" }, { "source": "@accountId", "target": "account_id" }, { "source": "@regionName", "target": "region_name" } ] } } ]
轉換的日誌事件如下。
{ "outer_key": { "inner_key": "inner_value" }, "new_key": "inner_value", "log_group_name": "myLogGroupName", "log_group_stream": "myLogStreamName", "account_id": "012345678912", "region_name": "us-east-1" }
listToMap
listToMap 處理器會取得包含金鑰欄位的物件清單,並將其轉換為目標金鑰的映射。
| 欄位 | 描述 | 是否為必要? | 預設 | 限制 |
|---|---|---|---|---|
|
source |
ProcessingEvent 中的金鑰,其中包含將轉換為映射的物件清單 |
是 |
長度上限:128 巢狀金鑰深度上限:3 |
|
|
金鑰 |
要擷取為所產生映射中索引鍵的欄位索引鍵 |
是 |
長度上限:128 |
|
|
valueKey |
如果指定此值,您在此參數中指定的值將從source物件中擷取,並放入產生的映射值中。否則,來源清單中的原始物件會放入產生的映射值中。 |
否 |
長度上限:128 |
|
|
目標 |
將存放所產生映射之欄位的索引鍵 |
否 |
根節點 |
長度上限:128 巢狀金鑰深度上限:3 |
|
flatten |
布林值,指出清單是否將扁平化為單一項目,或產生的對應中的值是否將是清單。 根據預設,相符索引鍵的值會以陣列表示。 |
否 |
false |
|
|
flattenedElement |
如果您將 flatten設定為 true,請使用 flattenedElement指定要保留的元素 lastfirst或 。 |
|
值只能為 first或 last |
範例
採用下列範例日誌事件:
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ] }
使用案例 1 的轉換器: flatten是 false
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": false } } ]
轉換的日誌事件如下。
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": [ "val-a" ], "b": [ "val-b1", "val-b2" ], "c": [ "val-c" ] }
使用案例 2 的轉換器: flatten 是 true, flattenedElement是 first
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": true, "flattenedElement": "first" } } ]
轉換的日誌事件如下。
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": "val-a", "b": "val-b1", "c": "val-c" }
使用案例 3 的轉換器: flatten 是 true, flattenedElement是 last
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": true, "flattenedElement": "last" } } ]
轉換的日誌事件如下。
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": "val-a", "b": "val-b2", "c": "val-c" }