我正在尝试使用Fn :: GetAtt内部函数创建条件块,但它失败并出现以下错误 -
“模板验证错误:模板格式错误:未解析的依赖项。无法在模板的条件块中引用资源。”
My condition -
"SomeCondition":{
"Fn::Equals":[
{
"Fn::GetAtt":[
"CustomResource",
"ID"
]
},
"SOME-UUID"
]
}
有人可以为此建议解决方法吗?我想使用条件在我的用户数据部分中动态选择脚本。
答案 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