一个项目的开发上线流程大致如下:
在开发项目的每个阶段,我们都需要一个独立运行的环境来对开发的操作进行隔离。
在 serverless.yml 文件中定义 stage,并把 stage 作为参数写入到组件的资源名称中,部署时以实例名-{stage}-应用名
的方式生成资源。这样我们在不同阶段只要定义不同的 stage 就可以生成不同的资源,达到环境隔离的目的。
以 SCF 组件的 serverless.yml 为例:
#应用信息
app: myApp
stage: dev #定义了环境为dev
#组件信息
component: scf
name: scfdemo
#组件参数
inputs:
name: ${name}-${stage}-${app} #函数名称,以变量${stage}作为资源名称的一部分
src: ./
handler: index.main_handler
runtime: Nodejs10.15
region: ap-guangzhou
events:
- apigw:
parameters:
endpoints:
- path: /
method: GET
${name}-${stage}-${app}
。dev
,部署后云函数为 scfdemo-dev-myApp。pro
,部署后云函数为 scfdemo-pro-myApp。说明:
stage 可以直接在 serverless.yml 文件中定义,也可以通过
sls deploy --stage dev
直接传参。
在开发项目中,需要对不同的人员进行权限分配和管理。例如对于开发人员,只允许其访问某个项目某个环境下的权限,可以参考 账号和权限配置,授予子账号 Serverless Framework 特定资源的操作权限。
以 myApp 项目 dev 环境为例,配置如下:
{
"version": "2.0",
"statement": [
{
"action": [
"sls:*"
],
"resource": "qcs::sls:ap-guangzhou::appname/myApp/stagename/dev", #app为myApp,stage为dev
"effect": "allow"
}
]
}
灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式 。为保证线上业务的稳定性,开发上线项目推荐使用灰度发布。
Serverless应用的灰度发布支持两种方式:默认别名与自定义别名。更多详情参考 Serverless 灰度发布。
对比项 | 配置 | 流量规则设置 | 适用组件 |
---|---|---|---|
默认别名 | 配置简单 | 只能在最后一次发布的函数版本和 $latest 版本间进行 | |
配置灵活 | 可以在两个任意函数版本间进行 | 云函数组件 |
开发项目到上线过程中,需要用到一些Serverless 的相关命令。更多命令请查看 Serverless 支持命令列表。
#初始化项目
sls
#下载模板项目scf-demo,模板支持可通过sls registry查询
sls init scf-demo
#下载模板项目scf-demo,并初始化该项目为myapp
sls init scf-demo --name my-app
#部署应用
sls deploy
#部署应用,指定stage为dev
sls deploy --stage dev
#部署应用,并打印部署信息
sls deploy --debug
#部署并发布函数版本
sls deploy --inputs publish=trues
#部署并切换20%流量到 $latest 版本
sls deploy --inputs traffic=0.2
本页内容是否解决了您的问题?