AWS Lambda написать в DynamoDB и отправить электронное письмо

Это работает, но я знаю, что это неправильно. Я только учусь AWSи знаете, что я могу использовать потоки и (возможно) Kinesis? На данный момент мне легче понять этот подход, хотя я все еще новичок в JS а также async/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();
}

Спасибо.

0 ответов

Другие вопросы по тегам