概述:lambda是指在aws上的一段代码,可以由外部时间触发运行,按运行收费。
一、上aws,进入lambda
- 登陆aws
- 在 find service 的搜索框内搜索 lambda 关键字,可进入lambda控制台界面
二、创建 lambda 函数
进入lambda 之后会自动进入 函数 标签页
- 点击右上角 创建函数 按钮
- 填写函数名字(自定义,如:test-function)
- 选择node版本(这里我选择8.1)
- 选择角色(如果没有角色要创建角色,具体又是另一个额外教程,这里跳过)
- 点击右下角创建函数按钮
这样一个lambda函数就简单的创建完成了
三、关联触发器
进入到函数设置页面,我们可以看到一个 Designer 的tab,中间是刚才我们创建的函数的名字,左边有触发器字样,我们可以在左边选择我们想要的触发器(比如:cloudwatch)
触发器选择之后,实际的设置其实需要在相应的触发器中设置,这边仅仅是做一个预设关联,点击函数名(test-function)旁边的触发器之后,我们可以在稍微下面一点的地方看到一个禁用按钮,在这里可以设置是否开启。
四、编辑函数
触发器创建完成之后,我们再次点击函数名(test-function)使得整体界面切换会我们的函数设置,需要在这个函数里面丰富代码,这里先做一个简单的示范
我们可以看到,刚创建好函数的时候,代码可以在线编辑,运行语言是我们的node版本,处理程序写着index.handler,说明这个就是lambda默认的触发函数,而且可以看到,编辑器里面已经默认为我们搭建了一个简单的函数
可以看到handler函数有一个参数event,如果对这个函数进行触发的时候需要传参,则是通过这个参数传进来的(如:event.test_argument)
除了上面放这种直接可以在页面编辑的简版代码,我们还可以编辑复杂的代码:(可以跳过本步骤)
创建文件夹:test-function
创建文件:index.js
```index.js
const moment = require('moment');
export.handler = async (event) => {
try {
const time =moment().format('YYYY-MM-DD');
return `Now time is ${time}`;
} catch (error) {
console.log(error);
throw error;
}
}
```
这次的文件中使用的npm包 moment (使用npm包就是直接在线编辑的方式无法做到的)
接下来我们需要将这个文件打包称zip文件,并上传到我们创建的lambda函数中
创建部署文件:./scripts/deploy.js
```scripts/deploy.js
const AWS = require('aws-sdk');
const fs = require('fs');
const path = require('path');
AWS.config.region = 'us-east-1';
const lambda = new AWS.Lambda();
const functionName = process.argv[2];
lambda.getFunction({
FunctionName: functionName,
},
(err, data) => {
if (err) {
console.log(JSON.stringify(err));
}
const deployPackage = path.join(__dirname, '..', 'build.zip');
fs.readFile(deployPackage, (err2, data2) => {
if (err2) {
console.log(`Could not read package file (${deployPackage}), verify the lambda package location is correct`);
}
const codeParams = {
FunctionName: functionName,
ZipFile: data2,
};
lambda.updateFunctionCode(codeParams, (err3, data3) => {
if (err3) {
console.log(JSON.stringify(err));
}
console.log('Package deployed.');
});
});
});
```
创建Makefile文件(如果是windows,无法使用Makefile文件,请直接在终端执行以下命令)
```Makefile
deploy:
zip -r build.zip * .[^.]*
node ./scripts/deploy.js test-function
```
最后在终端中执行 make deploy
Finish
五、设置环境变量
再下一个tab,就是环境变量的设置,lambda上的环境变量在这里设置,方式跟普通的key,value写法一致,填写完成之后记得在右上角点击保存
六、设置最大内存及超时时间
下一个tab是标签,可以跳过,然后是角色 tab,我们在创建函数的时候已经填写过了,因此也可以跳过
然后是 基本设置 tab,这个tab主要是设置内存和超时时间,根据实际情况设置。
七、选择网络
下一个是网络tab,这个也是需要预先设置好,再在这里选择,网络设置比较重要,如果没有选择网络的话,可能会影响到与外部的网络通信(如api trigger,数据库连接)
剩下还有三个tab,可以保持默认
八、完成测试
截止到现在,lambda函数就算完成了,需要外部事件(如SNS, cloudwatch, 程序)触发,在此之前,我们可以通过测试按钮查看lambda程序的运行状况。
右上角有一个测试按钮,在点击这个按钮之间,先点击它左边的 配置/选择 测试事件,即,如果说我们的lambda函数代码被触发,则可以通过这个按钮调用上面我们写好的handler函数。
配置测试事件,我们可以取好名字,预设传输的参数(将通过handler函数的event参数传入),保存后点击测试
成功返回
END