从网站接收数据,然后触发lambda发送电子邮件并备份到DynamoDB



我是初学者,我在网上找到了两个说明来获取数据(联系我们-电子邮件,电话等)到AWS - Lambda然后发送到我的电子邮件

https://aws.amazon.com/blogs/architecture/create-dynamic-contact-forms-for-s3-static-websites-using-aws-lambda-amazon-api-gateway-and-amazon-ses/

另一个是创建一个AWS - Lambda函数,发送到Dynamo进行备份。

https://www.vairix.com/tech-blog/get-and-put-data-using-lambda-and-dynamodb-simple-and-clear

我把它们放在一起,但是它们没有联系。例如,Lamba触发器将信息从网站发送到我的电子邮件,但其他功能不会收集项目并将其发送到Dynamo

Lambda发送邮件:

var AWS = require('aws-sdk');
var ses = new AWS.SES();

var RECEIVER = 'contactus@example.com';
var SENDER = 'contactus@example.com';
var response = {
"isBase64Encoded": false,
"headers": { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': 'example.com'},
"statusCode": 200,
"body": "{"result": "Success."}"
};
exports.handler = function (event, context) {
console.log('Received event:', event);
sendEmail(event, function (err, data) {
context.done(err, null);
});
};

function sendEmail (event, done) {
var params = {
Destination: {
ToAddresses: [
RECEIVER
]
},
Message: {
Body: {
Text: {
Data: 'name: ' + event.name + 'nphone: ' + event.phone + 'nemail: ' + event.email + 'ndesc: ' + event.desc,
Charset: 'UTF-8'
}
},
Subject: {
Data: 'Website Referral Form: ' + event.name,
Charset: 'UTF-8'
}
},
Source: SENDER
};
ses.sendEmail(params, done);
}

Lambda在DynamoDB中存储信息:

"use strict";
AWS.config.update({ region: "us-east-1" });

exports.handler = async() => {
const documentCilent = new AWS.DynamoDB.DocumentClient({region: "us-east-1"});
const params = {
TableName: "Users",

//  This part, I need the variable connect with the top part. 
Item:{
id : "test",     
name: "name",
phone: "phone",
desc: "desc",
email: "email"


}

};
try {
const data = await documentCilent.put(params).promise();
console.log(data);
} catch (err) {
console.log(err);
}
};

Lambda是相互独立的,只有在接收到Event时才会触发。这个事件可以是几个东西——它可以是一个从API网关发送到lambda的事件(这是将API连接到lambda的事情——为API事件提供一个要去的目标)。它可以是您的SDK生成的事件(使用您的语言SDK调用另一个lambda)。它可以来自DynamoDB流或S3 put_object事件。

几乎任何事情发生在AWS资源输出某种事件,和正确的命令/设置你可以有一个λ侦听事件。

然而,在这种情况下,由于它们都是非常轻的权重,将它们组合在一个lambda下会更划算。API获取信息,将其发送给触发电子邮件的lambda,然后将其添加到Dynamodb中。在这种情况下,任何其他方法都是多余的,会增加你的成本。

相关内容

最新更新