cloudformation资源部分是否有全局属性?

时间:2018-06-26 22:11:00

标签: amazon-web-services amazon-cloudformation

我有用于lambda的cloudformation模板:

Resources:
  Resource1:
    Type: AWS::Res
    Properties:
      StreamArn: 
         "Fn::Sub": "${var1}-${var2}"
  Resource2:
    Type: AWS::Res
    Properties:
      StreamArn: 
         "Fn::Sub": "${var1}-${var2}"

是否可以将此属性移到Properties部分的Resources或其他任何地方以跳过重复项?

Resources:
   Properties:
       StreamArn: 
           "Fn::Sub": "${var1}-${var2}"

我已经尝试过,但是似乎不起作用。

3 个答案:

答案 0 :(得分:2)

您可以使用带有默认值的Parameters条目来创建等效于常量的变量,但是它不能接受Resources部分中的任何值(因为尚未创建它们)此时)。

否则,不-您需要重复这些值。 (截至撰写此答案时。)

答案 1 :(得分:1)

如果您使用的是AWS::Serverless::Function,则可以使用Globals部分在一个地方的堆栈中拥有通用属性。因此,您可以将它们提到的资源放在堆栈中,并定义一个包含StreamArn

的Globals部分。

请参见docs

答案 2 :(得分:0)

到目前为止,我发现的最方便的方法是使用如下映射:

Mappings:
  ParametersMap:
    Var1:
      Value: "A"
    Var2:
      Value: "B"

然后将!FindInMap: [ "ParametersMap", "Var1", "Value" ]行放在需要Var1参数的所有地方