使用Fn :: GetAtt失败的AWS CloudFormation条件

时间:2016-12-15 18:40:29

标签: amazon-web-services amazon-cloudformation

我正在尝试使用Fn :: GetAtt内部函数创建条件块,但它失败并出现以下错误 -

“模板验证错误:模板格式错误:未解析的依赖项。无法在模板的条件块中引用资源。”

My condition - 
"SomeCondition":{  
        "Fn::Equals":[  
            {  
                "Fn::GetAtt":[  
                    "CustomResource",
                    "ID"
                ]
            },
            "SOME-UUID"
        ]
    }

有人可以为此建议解决方法吗?我想使用条件在我的用户数据部分中动态选择脚本。

1 个答案:

答案 0 :(得分:1)

"无法在模板的条件块中引用资源" Condition Functions文档中解释了错误消息:

  

注意

     

您只能从模板的“参数”和“映射”部分引用其他条件和值。例如,您可以引用输入参数中的值,但不能引用条件中资源的逻辑ID。

对于在用户数据部分中动态选择脚本的变通方法,您可以将条件逻辑从CloudFormation直接移动到用户数据脚本中,例如,使用Bash conditional construct和{{3} }:

UserData:
  "Fn::Base64":
    !Sub |
      #!/bin/bash -xe
      if [[ ${CustomResource.ID} == "SOME-UUID" ]]; then
        # some commands
      else
        # other commands
      fi