首页 > 解决方案 > 为 AWS Lambda 函数提取事件变量数据

问题描述

我有一个 AWS Lambda 函数,它通过 SNS 发送电子邮件,带有 Node.js 10.x 运行时。事件对象包含一个名为 client_id 的变量,它对应于 IoT Core 服务中的 Raspberry Pi 设备 ID。我在 Lambda 函数的 Cloudwatch 日志中看到以下内容:

console.log("EVENT: \n" + JSON.stringify(event, null, 2));

2020-09-05T00:21:35.587Z 229b8110-852a-4abe-8b9c-4d06a121d63f 信息事件:{“client_id”:“RaspberryPi001”}

我需要从事件中提取 client_id 并将其包含在电子邮件的消息文本中,以指定哪个设备正在发出电子邮件警报。如何提取 client_id 并将其包含在电子邮件消息文本中?

'use strict';

var AWS = require('aws-sdk');
AWS.config.update({region: 'us-west-2'});

exports.handler = async (event, context, callback) => {
// Create publish parameters
var params = {

            Message: `The air quality in your building has triggered a High Risk Alert.`,
            Subject: `Air Quality - High Risk Alert`,
            TopicArn: `arn:aws:sns:us-west-2:xyz`,
        };

// Create promise and SNS service object
var publishTextPromise = new AWS.SNS({apiVersion: '2010-03-31'}).publish(params).promise();

// Handle promise's fulfilled/rejected states

publishTextPromise.then(
  function(data) {
    console.log("Message: " + params.Message);
    console.log("Sent to the topic: " + params.TopicArn);
    console.log("MessageID is " + data.MessageId);
    console.log("EVENT: \n" + JSON.stringify(event, null, 2));
  }).catch(
    function(err) {
    console.error(err, err.stack);
  });
  
  const data = await publishTextPromise;
  return data;

};

谢谢!

标签: javascriptnode.jsamazon-web-servicesaws-lambdaevent-handling

解决方案


推荐阅读