2017-05-17 23 views
1

我正在使用无服务器框架编写后端服务。无服务器框架'dev'和'prod'分离

分离“Dev”和“Prod”环境的最佳方式是什么?

比方说,我希望我的开发人员配置文件部署在某个地区,我的产品配置文件要部署在另一个地区?有没有办法在无服务器框架中实现这一点?

我想这样做:

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

CloudFormation将让你这样做很愉快。 – Henry

回答

4

您可以部署使用阶段与无服务器架构不同的环境。 deploy命令具有stage选项,您可以使用--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}访问环境变量。

还有一种方法可以使用嵌套变量对变量阶段/区域进行特定。

从文档:

让您的变量舞台/地区的:

serverless.env.yml允许你有不同的价值观基于 相同 变量舞台/您正在部署的区域。您可以使用新变量系统的嵌套功能实现相同的结果 。例如,如果您有两个不同的ARN,一个用于开发阶段,另一个用于产品阶段,则可以执行以下操作: $ {env:$ {opt:stage} _arn}。这将确保根据作为选项提供的阶段引用正确的env var 。当然,您需要在您的本地 系统上导出dev_arn和prod_arn环境变量。

链接无服务器文档:

部署

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/