如何检查CloudFormation模板中未定义的资源属性



是否有方法检查CloudFormation模板中未定义的资源属性(由Fn::GetAtt返回(?

只有在定义了指定资源的属性时,我才希望使用Fn::GetAtt将这些属性包含在堆栈的输出中。

例如,使用以下模板创建堆栈会出现错误:

">属性:找不到资源的StreamArn:MyTestStack-DBTable-1C0T2MJZA1J0I。用户请求的回滚";

因为流规范不包括在该特定表的资源属性中。

当然,解决这个问题的简单方法就是从堆栈输出列表中删除StreamArn。但是,我仍然想知道如何检查是否为指定的资源定义了属性。

如有任何建议,我们将不胜感激。

  • Pat

{
"Resources":{
"DDBTable":{
"Type":"AWS::DynamoDB::Table",
"Properties":{
"AttributeDefinitions":[
{
"AttributeName":"ArtistId",
"AttributeType":"S"
},
{
"AttributeName":"Concert",
"AttributeType":"S"
},
{
"AttributeName":"TicketSales",
"AttributeType":"S"
}
],
"GlobalSecondaryIndexes":[
{
"IndexName":"GSI",
"KeySchema":[
{
"AttributeName":"TicketSales",
"KeyType":"HASH"
}
],
"Projection":{
"ProjectionType":"KEYS_ONLY"
},
"ProvisionedThroughput":{
"ReadCapacityUnits":5,
"WriteCapacityUnits":5
}
}
],
"KeySchema":[
{
"AttributeName":"ArtistId",
"KeyType":"HASH"
},
{
"AttributeName":"Concert",
"KeyType":"RANGE"
}
],
"ProvisionedThroughput":{
"ReadCapacityUnits":5,
"WriteCapacityUnits":5
}
}
}
},
"Outputs":{
"DDBTablePhysicalID":{
"Value":{
"Ref":"DDBTable"
}
},
"DDBTableArn":{
"Value":{
"Fn::GetAtt":[
"DDBTable",
"Arn"
]
}
},
"DDBTableStreamArn":{
"Value":{
"Fn::GetAtt":[
"DDBTable",
"StreamArn"
]
}
}
}
}

仅当定义了这些属性时。

它的在普通CFN中不受支持。您必须以lambda函数的形式定义自己的宏或自定义资源。

相关内容

最新更新