无服务器框架 'dev' 和 'prod' 分离

Serverless framework 'dev' and 'prod' seperation

我正在使用 Serverless 框架编写后端服务。

分离 "Dev" 和 "Prod" 环境的最佳方法是什么?

假设我希望我的开发配置文件部署在某个区域,而我的产品配置文件部署在另一个区域?有没有办法在 Serverless 框架中实现?

我想做这样的事情:

serverless deploy --profile dev (--> use serverless-dev.yml)
serverless deploy --profile prod (--> use serverless-prod.yml)

您可以使用无服务器框架的阶段部署到不同的环境。部署命令具有阶段选项,您可以使用 --stage-s 指定该选项。地区的选项是 --region-r 下面是一个例子:

serverless deploy --stage dev --region us-east-1

此选项还可用于将单个 lambda 函数部署到特定环境。

serverless deploy --stage production --region eu-west-1 function --function helloworld

您可能还想使用无服务器变量来使您的环境配置动态化。您可以使用语法 ${env:SOME_VAR} 访问环境变量。

还有一种使用嵌套变量使变量 stage/region 特定的方法。

来自文档:

Making your variables stage/region specific:

serverless.env.yml allowed you to have different values for the same variable based on the stage/region you're deploying to. You can achieve the same result by using the nesting functionality of the new variable system. For example, if you have two different ARNs, one for dev stage and the other for prod stage, you can do the following: ${env:${opt:stage}_arn}. This will make sure the correct env var is referenced based on the stage provided as an option. Of course you'll need to export both dev_arn and prod_arn env vars on your local system.

无服务器文档链接:

部署

https://serverless.com/framework/docs/providers/aws/cli-reference/deploy-function/

工作流程建议

https://serverless.com/framework/docs/providers/aws/guide/workflow/#using-stages

无服务器变量

https://serverless.com/framework/docs/providers/aws/guide/variables/