gpt4 book ai didi

node.js - AWS CloudWatch 日志订阅过滤器解码

转载 作者:搜寻专家 更新时间:2023-10-31 23:36:41 27 4
gpt4 key购买 nike

我正在使用 CloudWatch 日志订阅过滤器流式传输到 Lambda 并将消息发布到 SNS 主题。但是会输出乱码,无法成功解码。

我的输出:

k
%"
jVbB

如果不解码会输出如下:

{ "awslogs": {"data": "BASE64ENCODED_GZIP_COMPRESSED_DATA"} }

我的代码在下面,它使用的是 nodejs:

console.log("Loading function");
var AWS = require("aws-sdk");

exports.handler = function(event, context) {
var eventText = JSON.stringify(event, null, 2);
var decodeText = new Buffer(eventText, 'base64').toString('ascii');
console.log("Received event:", eventText);
var sns = new AWS.SNS();
var params = {
Message: decodeText,
Subject: "Test SNS From Lambda",
TopicArn: "arn:aws:sns:region:account:snsTopic"
};
sns.publish(params, context.done);
};

最佳答案

CloudWatch Logs 作为经过 gzip 压缩和 base64 编码的列表传送到订阅的 Lambda 函数。

这是一个如何解码和解压缩日志列表的示例:

const zlib = require('zlib');

exports.handler = async (event, context) => {
if (event.awslogs && event.awslogs.data) {
const payload = Buffer.from(event.awslogs.data, 'base64');

const logevents = JSON.parse(zlib.unzipSync(payload).toString()).logEvents;

for (const logevent of logevents) {
const log = JSON.parse(logevent.message);
console.log(log);
}
}
};

关于node.js - AWS CloudWatch 日志订阅过滤器解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50327304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com