我有一个AWS SAM模板文件,其中某些资源托管在github上,已经设置了代码管道来检测存储库中的更改,然后创建/更新并在cloudformation堆栈上执行更改。一切正常。 但是现在我需要在同一模板中配置舞台和产品环境。我发现很难正确地进行操作。
也欢迎使用不同的方法。
答案 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)
参数最好
您还可以使用“映射”或“条件”。但是其中任何一个都可能变得混乱