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

时间:2017-05-17 12:14:00

标签: amazon-web-services serverless-framework

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

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

假设我希望我的dev配置文件部署在某个区域,而我的prod配置文件则部署在另一个区域?有没有办法在无服务器框架中实现这一目标?

我想做点什么:

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

1 个答案:

答案 0 :(得分:8)

您可以使用无服务器框架的阶段部署到不同的环境。 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,一个用于开发阶段和   对于prod阶段,您可以执行以下操作:   $ {ENV:$ {选择:第一阶段}} _arn。这将确保正确的env var   基于作为选项提供的阶段引用。你当然会   需要在本地导出dev_arn和prod_arn env vars   系统

无服务器文档的链接:

<强>部署

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/