1.1 使用serverless环境搭建
在实践demo之前,我们需要注册一个AWS账号,AWS提供了一年的免费使用。去官网注册下(https://aws.amazon.com/cn/)
1.2 安装 serverless
首先我们需要安装serverless框架,如下命令:
npm install -g serverless
1.3设置AWS凭证
来源:https://www.cnblogs.com/tugenhua0707/p/11094157.html
创建我们的第一个应用,maebarai-backend 服务
使用命令如下所示:
serverless create --template aws-nodejs --path maebarai-backend
如下图所示:
因此在我项目目录下,会生成 hello-world 文件夹,该文件夹包含两个文件:handler.js 和 serverless.yml。 如下图所示:
1. .gitignore 代码如下:
.gitignore里面有3个忽略项,分别如下:
node_modules, 是Node.js包管理安装后的目录。
jspm_packages: jspm是javascript包管理器,它是基于 SystemJS这种通用模块加载器之上的包管理器。
.serverless: 它是一个serverless部署时的打包生成目录,当我们执行 serverless deploy 时才会生成。
2. handler.js 代码如下:
handler.js 是通过如上命令 serverless create --template aws-nodejs --path maebarai-backend 中的 --template aws-nodejs 参数生成出来的js文件,如上hello函数代码就是返回一个json文件。
3. serverless.yml 的内容如下:
service: maebarai-backend # NOTE: update this with your service name provider: name: aws runtime: nodejs8.10 functions: hello: handler: handler.hello
该文件是serverless的描述文件,服务名为:maebarai-backend, 服务器提供商为:aws, 运行环境为:nodejs10.x
functions: hello:
这样的,如上hello是调用时的名称。如代码:serverless invoke -f hello -l 这样的语法来触发hello函数。如果我们的hello改成 helloxxx, 那么我们调用的函数命令就变成:serverless invoke -f helloxxx -l
functions: hello: handler: handler.hello
如上代码:handler: 是不能乱改的。handler.hello 这个的含义:点号(.)前面的handler是文件名,也就是我们说的 handler.js,点号后面的 hello 是默认的函数名,也就是说我们的 handler.js中的 module.exports.hello 这个导出的函数名。如果我们现在把handler.js 重命名为 handler2.js 的话,那么我们需要把 serverless.yml里面的内容改成:handler: handler2.hello. 同理如果我们把handler.js中的hello函数改成其他名称的话,那么serverless.yml的调用名也要改了。
4. 部署 hello-world
使用如下命令:
serverless deploy -v
注意:-v 不是显示版本,而是 --verbose 详细信息
如上命令,当我们执行 serverless deploy 命令之后就会变成如下目录:
|----- hello-world | |--- .serverless | | |--- cloudformation-template-create-stack.json | | |--- cloudformation-template-update-stack.json | | |--- hello-world.zip | | |--- serverless-state.json | |--- .gitignore | |--- handler.js | |--- serverless.yml
hello-world.zip 是项目代码文件打包后的压缩文件。
serverless-state.json 是服务部署后的信息,包含服务名称,服务提供商等信息。
5. 调用服务
然后我们需要通过如下命令来触发下该函数,命令如下所示:
serverless invoke -f hello -l
然后我们服务器会返回如上结果,如上返回的结果就是我们项目下的 handler.js 中的hello函数返回的代码。也就意味着,我们的第一个服务已经成功上线了。
如上命令解释:
invoke 是调用服务的意思。
-f 是表示 function 名的含义
-l 是表示log(日志)的含义
如上 serverless 我们也可以写成它的缩写形式 sls,
-d 表示传入的data(数据)
更多的 invoke 解释,我们只需要使用命令: sls invoke -h 查看即可: