serverless 项目配置及创建helloworld应用

 

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
如下图所示:

serverless 项目配置及创建helloworld应用

 因此在我项目目录下,会生成 hello-world 文件夹,该文件夹包含两个文件:handler.js 和 serverless.yml。 如下图所示:

serverless 项目配置及创建helloworld应用

1. .gitignore 代码如下:

serverless 项目配置及创建helloworld应用

.gitignore里面有3个忽略项,分别如下:
node_modules, 是Node.js包管理安装后的目录。
jspm_packages: jspm是javascript包管理器,它是基于 SystemJS这种通用模块加载器之上的包管理器。
.serverless: 它是一个serverless部署时的打包生成目录,当我们执行 serverless deploy 时才会生成。

2. handler.js 代码如下:

serverless 项目配置及创建helloworld应用

 

 

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 查看即可:

 
上一篇:__new__与__init__的区别


下一篇:委托在窗体中应用<4>