在AWS SAM / Cloudformation模板中管理舞台和产品环境以及CI / CD支持

时间:2020-03-27 15:37:25

标签: amazon-web-services amazon-cloudformation aws-codepipeline aws-sam aws-sam-cli

我有一个AWS SAM模板文件,其中某些资源托管在github上,已经设置了代码管道来检测存储库中的更改,然后创建/更新并在cloudformation堆栈上执行更改。一切正常。 但是现在我需要在同一模板中配置舞台和产品环境。我发现很难正确地进行操作。

也欢迎使用不同的方法。

2 个答案:

答案 0 :(得分:1)

PROD和STAGE是在同一帐户中还是在不同帐户中?我会假设相同

Transform: AWS::Serverless-2016-10-31

Parameters:
  Environment:
    Type: String
    AllowedValues:
      - STAGE
      - PROD

Resources:
  MyLambda:
    Type: AWS::Serverless::Function
    Properties:
      Handler: lambda_function.lambda_handler
      FunctionName: !Sub ${Environment}_my_lambda
      CodeUri: my_lambda

这将根据环境为您的lambda赋予唯一的名称

然后,在部署模板时,使用--parameter-overrides=Environment=STAGE--parameter-overrides=Environment=PROD

您可以设置CloudWatch来收听CodeCommit。如果STAGE分支发生更改,请调用CodeBuild以使用STAGE分支,然后通过STAGE参数调用CloudFormation。与PROD相同

答案 1 :(得分:0)

参数最好

您还可以使用“映射”或“条件”。但是其中任何一个都可能变得混乱