最近项目架构升级,迁移到AWS,使用了AWS Serverless 架构 Lambda,项目使用了Claudia做项目自动部署。
Claudia可以轻松地将Node.js项目部署到AWS Lambda和API Gateway。它可以自动执行所有容易出错的部署和配置任务,并将所有内容设置为JavaScript开发人员开箱即用的方式。这意味着您可以轻松开始使用Lambda和API Gateway,并专注于解决重要的业务问题,而不是处理AWS部署工作流。
创建一个新的NPM项目,并给它一个描述性的名称(例如claudia-test):
mkdir claudia-test
cd claudia-test
npm init
将Claudia.js安装为全局NPM实用程序:
npm install claudia -g
现在,创建一个简单的JavaScript Lambda函数 - 例如,在一个名为的文件中lambda.js
exports.handler = function (event, context) {
context.succeed('hello world');};
使用Claudia将此功能发送给AWS。您需要指定Lambda执行的主要方法(在Lambda术语中,就是这样handler)。语法是module.method。因为主要的微服务模块是lambda.js,而且方法是handler,这个论点应该是lambda.handler。(请注意,您需要使用模块名称,而不是文件名)
claudia create --region us-east-1 --handler lambda.handler
};
部署完成后,Claudia将claudia.json在项目目录中保存一个新文件,其中包含功能详细信息,因此您可以轻松地调用和更新它。
您现在可以直接从控制台调用Lambda函数:
claudia test-lambda
你应该得到以下回应:
{
"StatusCode": 200,
"Payload": "\"hello world\""
}
这意味着该功能已部署到AWS,现在可以处理事件了。对于更严重的事情,您可以将此Lambda连接到各种事件源,例如S3文件系统,SNS队列,CloudWatch日志事件,DynamoDB流等。
更新现有的Lambda函数
让我们做一些更有活力的事情。我们会给它发一个名字,并期待一个问候作为回报。我们还将使用CloudWatch记录请求。修改lambda.js文件:
exports.handler = function (event, context) {
console.log(event);
context.succeed('hello ' + event.name);}
将新版本发送到AWS:
claudia update
现在使用请求数据创建一个测试事件,例如在一个名为的文件中event.json:
{
"name": "Tom"
}
现在使用测试事件调用Lambda函数:
claudia test-lambda --event event.json
响应应该来自事件的名称:
{
"StatusCode": 200,
"Payload": "\"hello Tom\""
}
您现在可以使用AWS Web Console或AWS命令行工具检出日志:
aws logs filter-log-events --log-group-name /aws/lambda/claudia-test