微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Lambda 写入 DynamoDB 并发送电子邮件

如何解决AWS Lambda 写入 DynamoDB 并发送电子邮件

这有效,但我知道它没有正确编码。我刚刚学习 AWS 并且知道我可以使用 DynamoDB 流和(可能)Kinesis?尽管我仍然是 JSasync/await 的新手,但目前这种方法对我来说更容易掌握。我可以要求一些说明并帮助编写正确的代码,写入 DynamoDB 并向我发送一封包含相同数据的电子邮件

// Loads in the AWS SDK
const AWS = require('aws-sdk'); 
const ses = new AWS.SES({ region: "us-west-1" });

// Creates the document client specifing the region 
const ddb = new AWS.DynamoDB.DocumentClient({region: 'us-west-1'}); 

exports.handler = async (event,context,callback) => {
    
    // Captures the requestId from the context message
    const requestId = context.awsRequestId;

    // Handle promise fulfilled/rejected states
    await createMessage(requestId,event).then(() => {
        // If success return 201
        callback(null,{
            statusCode: 201,body: '',headers: {
                'Access-Control-Allow-Origin' : '*'
            }
        });
    }).catch((err) => {
        // If an error occurs write to the console
        console.error(err)
    })
};

// Function createMessage
// Writes message to DynamoDb table Message
// Returns promise
function createMessage(requestId,event) {
  let params = {
    Destination: {
      ToAddresses: ["myemailaddress@gmail.com"],},Message: {
      Body: {
        Html: { Data: event }
      },Subject: { Data: `Testing IGnorE` }
    },Source: "myemailaddress@gmail.com",};
 
     
    // THIS WORKS BUT I KNow IT IS THE WRONG WAY TO DO IT. I ASSUME THIS SHOULD BE IT'S OWN FUNCTION
    ses.sendEmail(params,function (err,data) {
        if (err) {
            console.log("this is error :" + err);
            return;
        } console.log("this is ok: " + data);

    });
    
    params = {
        TableName: 'mytable',Item: event
    }
    
  return ddb.put(params).promise();
}

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。