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();
}
Спасибо.