本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
故障診斷 AWS CloudFormation Guard
如果您在使用 時遇到問題 AWS CloudFormation Guard,請參閱本節中的主題。
當沒有所選類型的資源時,子句失敗
當查詢使用類似 的篩選條件時Resources.*[ Type == 'AWS::ApiGateway::RestApi' ]
,如果輸入中沒有AWS::ApiGateway::RestApi
資源,子句會評估為 FAIL
。
%api_gws.Properties.EndpointConfiguration.Types[*] == "PRIVATE"
若要避免此結果,請將篩選條件指派給變數,並使用when
條件檢查。
let api_gws = Resources.*[ Type == 'AWS::ApiGateway::RestApi' ] when %api_gws !empty { ...}
Guard 不會評估具有短格式 Fn::GetAtt 參考的 CloudFormation 範本
Guard 不支援短形式的內部函數。例如,不支援在 YAML 格式 AWS CloudFormation 範本!Join
!Sub
中使用 。反之,請使用擴充形式的 CloudFormation 內部函數。例如,在 YAML 格式 CloudFormation 範本Fn::Sub
中使用 Fn::Join
,根據 Guard 規則進行評估。
如需內部函數的詳細資訊,請參閱AWS CloudFormation 《 使用者指南》中的內部函數參考。
一般故障診斷主題
-
確認
string
常值不包含內嵌逸出字串。目前,Guard 不支援以string
常值為單位的內嵌逸出字串。 -
確認您的
!=
比較比較比較相容的資料類型。例如,string
和int
不是用於比較的相容資料類型。執行!=
比較時,如果值不相容,則內部發生錯誤。目前,錯誤會遭到隱藏並轉換為false
,以滿足 Rust 中的 PartialEq特性。