将StackName添加到Cloudformation资源

问题描述 投票:1回答:2

我希望基于单个CloudFormation模板有多个堆栈,但我得到了命名冲突。解决这个问题的最简单方法似乎是将StackName预先(或附加)到每个重复的资源上,例如:我的lambda函数或角色。

AWS谈论AWS::StackName中的'Template Reference' section of the documentation,但没有明确证明如何做到这一点。

如何将StackName添加到CloudFormation资源?

MyLambdaFunction
  Type: "AWS:Serverless::Function"
  Properties:
    FunctionName: AWS::StackName + "-myLambdaFunction"
amazon-web-services amazon-cloudformation naming
2个回答
2
投票

你需要Ref伪参数并使用Fn::Join方法来构造名称

MyLambdaFunction
  Type: "AWS:Serverless::Function"
  Properties:
    FunctionName: !Join [ "", [ {"Ref": "AWS::StackName"}, "-myLambdaFunction" ]]

5
投票

我更喜欢使用Fn::Sub,因为我相信它比其他选择更容易阅读:

"RoleName": { "Fn::Sub" : "${AWS::StackName}-InstanceRole" },
© www.soinside.com 2019 - 2024. All rights reserved.