我希望基于单个CloudFormation模板有多个堆栈,但我得到了命名冲突。解决这个问题的最简单方法似乎是将StackName
预先(或附加)到每个重复的资源上,例如:我的lambda函数或角色。
AWS谈论AWS::StackName
中的'Template Reference' section of the documentation,但没有明确证明如何做到这一点。
如何将StackName
添加到CloudFormation资源?
MyLambdaFunction
Type: "AWS:Serverless::Function"
Properties:
FunctionName: AWS::StackName + "-myLambdaFunction"
你需要Ref
伪参数并使用Fn::Join
方法来构造名称
MyLambdaFunction
Type: "AWS:Serverless::Function"
Properties:
FunctionName: !Join [ "", [ {"Ref": "AWS::StackName"}, "-myLambdaFunction" ]]
我更喜欢使用Fn::Sub,因为我相信它比其他选择更容易阅读:
"RoleName": { "Fn::Sub" : "${AWS::StackName}-InstanceRole" },