问题描述
如何在不手动进入AWS控制台的情况下添加自己的lambda,最重要的是,如何从React应用程序中调用它?
当前,如果要执行自己的lambda函数,请转到AWS控制台并在此处手动创建它。显然,有一种方法可以在VS Code中进行本地处理,因为无服务器框架已经使用 fullstack-app 部署创建了其功能。
这是我当前使用控制台在AWS中创建的Lambda函数(使用Amazon SES从联系人表单发送电子邮件)。
var aws = require('aws-sdk');
var ses = new aws.SES({region: 'us-east-1'});
exports.handler = (event,context,callback) => {
var params = {
Destination: {
ToAddresses: [`${event.toEmail}`]
},Message: {
Body: {Html: { Data: `${event.body}`}
},Subject: { Data: `${event.subject}`}
},Source: `${event.fromEmail}`
};
ses.sendEmail(params,function (err,data) {
callback(null,{err: err,data: data});
if (err) {
console.log(err);
context.fail(err);
} else {
console.log(data);
context.succeed(event);
}
});
};
我已经在AWS中为其创建了REST API,并使用axios从我的React应用中调用它:
axios.post(`https://xxxxxxxx.execute-api.us-east-1.amazonaws.com/default/contactFormSend`,email)
.then(res => {console.log(res)})
我的目标是不要在AWS控制台中手动创建lambda函数,而是使用无服务器框架架构在本地编写它并找到一种调用它的方法。
我到处都看过,但是在学习无服务器框架架构的过程中,我感觉好像错过了一些非常重要的事情。
解决方法
如何在不手动进入AWS控制台的情况下添加自己的lambda,并且 最重要的是?
我希望您有带有功能配置的serverless.yml文件。这是带有可能的配置https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml/
的模板如果一切就绪,只需使用serverless deploy
https://www.serverless.com/framework/docs/providers/aws/guide/deploying/
这是来自无服务器示例的非常简单的示例-https://github.com/serverless/examples/tree/master/aws-node-rest-api
如何从我的React应用程序中调用它?
您需要一个公开的公共端点,您可以直接采用API Gateway
生成的公共端点,也可以创建自定义域并将其映射到现有域。