操作场景
本文介绍如何快速创建与部署一个云函数项目。
前提条件
- 已安装 Serverless Framework,详情请参见 安装 Serverless Framework。
- 账号开通 Serverless 相关权限,详情请参见 账号和权限配置。
操作步骤
创建函数
执行以下命令,快速创建一个开发语言为 Node.js 的函数示例。
sls init scf-demo
说明:命令中的 scf-demo 默认为 nodejs 模版,您也可以替换为其它语言的函数模版:
scf-golang
,scf-php
,scf-python
。
函数创建成功后,scf-demo
项目目录下会有一个 serverless.yml 配置文件。该文件定义了每次部署的云函数资源信息,更多配置文件信息请参见 配置文件。
部署函数
在 scf-demo
目录下执行以下命令,进行函数部署。
sls deploy
将会弹出二维码,请直接扫码授权开始部署。部署成功后,会自动创建云函数资源。
说明:如果鉴权失败,请参考 权限配置 进行授权。
查看函数信息
执行以下命令,查看已部署云函数资源信息。
sls info
移除函数
执行以下命令,移除已经部署云函数资源。
sls remove
配置文件
Serverless Framework CLI 创建或更新云函数,均依赖 serverless.yml 文件中的配置。当执行 sls deploy
命令部署函数时,会根据 serverless.yml 文件中的配置对云函数资源进行创建或更新。serverlesss.yml 文件简单示例如下,更多配置信息请参见 全量配置文档。
#scf组件配置样例
#全量配置参考https://github.com/serverless-components/tencent-scf/blob/master/docs/configure.md
#组件信息
component: scf # (必填) 引用 component 的名称,当前用到的是 tencent-scf 组件
name: scfdemo # (必填) 创建的实例名称,请修改成您的实例名称
#组件参数
inputs:
name: ${name}-${stage}-${app} #函数名称
src: ./ #代码路径
handler: index.main_handler #入口
runtime: Nodejs10.15 # 云函数运行时的环境
region: ap-guangzhou # 云函数所在区域
events: # 触发器
- apigw: # 网关触发器
parameters:
endpoints:
- path: /
method: GET
该 serverless.yml 文件包含如下信息:
组件信息
组件名 | 是否必选 | 说明 |
---|---|---|
component | 是 | component 的名称,可使用 sls registry 命令查询可引入的组件。 |
name | 是 | 创建的实例名称,每个组件在部署时将创建一个实例。 |
参数信息
inputs 下的参数为组件配置参数。一个最简单 SCF 组件参数配置具备以下信息:
参数名 | 说明 |
---|---|
name | 云函数名称,同时也作为资源 ID。 |
src | 代码路径。 |
handler | 函数处理方法名称。 |
runtime | 云函数运行环境,目前支持: Python2.7、Python3.6、Nodejs6.10、Nodejs8.9、Nodejs10.15、Nodejs12.16、PHP5、PHP7、Go1、Java8 和 CustomRuntime。 |
region | 云函数所在的区域。 |
events | 触发器。支持的触发器为:timer、apigw、cos、cmq、ckafka 。 |
常用操作命令
Serverless Framework 框架提供了一套部署编排的操作命令,您可使用相关命令快速部署函数资源。详情请参见 支持命令列表。
使用 sls deploy
命令部署成功的云函数,还可使用云函数组件提供的如下常用操作命令。
注意:命令必须在 serverless.yml 同目录下执行。
发布函数版本
执行以下命令,将函数 my-function 云端的$LATEST
版本发布为一个固定版本。sls publish-ver --inputs function=my-function
创建别名
执行以下命令,给云函数 my-function 创建别名 routing-alias,路由规则为版本1流量为50%,版本2流量为50%。sls create-alias --inputs name=routing-alias function=my-function version=1 config='{"weights":{"2":0.5}}'
更新别名
执行以下命令,更新云函数 my-function 别名 routing-alias 的流量规则为版本1流量为10%,版本2流量为90%。sls update-alias --inputs name=routing-alias function=my-function version=1 config='{"weights":{"2":0.9}}'
列举别名
执行以下命令,列举云函数 my-function 别名 routing-alias。sls list-alias --inputs function=my-function
删除别名
执行以下命令,删除云函数 my-function 的别名 routing-alias。sls delete-alias --inputs name=routing-alias function=my-function
触发函数
执行以下命令,云端调用 functionName 函数,并传递 JSON 参数 {"weights":{"2":0.1}}。sls invoke --inputs function=functionName clientContext='{"weights":{"2":0.1}}'