看起来加密的无服务器 Cloudwatch 事件

Serverless Cloudwatch events appearing encrypted

我正在测试 Cloudwatch 日志作为无服务器功能的触发器。然而,当我的无服务器功能被触发时,它只是输出乱码,我认为这是某种形式的加密。不幸的是我不知道那个加密是什么。

这是输出:

{"awslogs":{"data":"H4sIAAAAAAAAAGVR...4BmF05wEAAA=="}}

这里是函数的代码:

const handler = async (event) => {
  console.log('*********RECEIVED EVENT FROM CLOUDWATCH**********')
  console.log(JSON.stringify(event));
  return {
    statusCode: 200,
    body: JSON.stringify(
      event,
      null,
      2
    )
  }
};

export { handler };

您返回的 "data" 部分经过 base64 编码和压缩。要从事件中获取信息,您只需要解码 base64 信息并解压缩数据。

这是一个代码片段,基本上显示了读取日志数据需要执行的操作。

...
    const payload = Buffer.from(event.awslogs.data, 'base64');
    zlib.gunzip(payload, (err, res) => {
        if (err) {
            ...
        }
        const parsed = JSON.parse(res.toString('utf8'));

        ...
    });