Dan*_*ana 4 json amazon-cloudwatch aws-lambda amazon-cloudwatch-metrics
使用直接来自文档的示例,在 lambda 函数中我输入:
console.log(
{
"eventType": "UpdateTrail",
"sourceIPAddress": "111.111.111.111",
"arrayKey": [
"value",
"another value"
],
"objectList": [
{
"name": "a",
"id": 1
},
{
"name": "b",
"id": 2
}
],
"SomeObject": null,
"ThisFlag": true
})
Run Code Online (Sandbox Code Playgroud)
然后,我使用文档示例中指定的过滤器模式在 CloudWatch 中创建一个日志指标过滤器:
{ $.eventType = "UpdateTrail" }
Run Code Online (Sandbox Code Playgroud)
过滤器不会生成像文档所说的那样的指标 - 这是输出:
2017-10-23T13:27:19.320Z 1143e2b0-eea6-4225-88c0-efcd79055f7b { eventType: 'UpdateTrail',
sourceIPAddress: '111.111.111.111',
arrayKey: [ 'value', 'another value' ],
objectList: [ { name: 'a', id: 1 }, { name: 'b', id: 2 } ],
SomeObject: null,
ThisFlag: true }
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,时间戳和标识符已添加到 JSON 中。
Amazon Cloudwatch 日志过滤 - JSON 语法中的一个答案表示这是因为 Lambda 将日志转换为字符串。如何在 AWS CloudWatch for Log Metric Filter 中解析混合文本和 JSON 日志条目的说法大致相同。这两种情况都没有提供解决方案。如何使用 JSON 指标过滤器从 Lambda 过滤 CloudWatch 日志?
看看日志行实际上是什么样子的。如果您看到类似这样的内容,则它不是有效的 json:
{ eventType: 'UpdateTrail', ... }
Run Code Online (Sandbox Code Playgroud)
你想要的是这样的(注意引用):
{ "eventType": "UpdateTrail", ...}
Run Code Online (Sandbox Code Playgroud)
为此,请尝试将对象包装在 中JSON.stringify(),如下所示:
console.log(
JSON.stringify(
{
"eventType": "UpdateTrail",
"sourceIPAddress": "111.111.111.111",
"arrayKey": [
"value",
"another value"
],
"objectList": [
{
"name": "a",
"id": 1
},
{
"name": "b",
"id": 2
}
],
"SomeObject": null,
"ThisFlag": true
}
)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10658 次 |
| 最近记录: |