2017-05-17 29 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/