故障診斷 AWS CloudFormation Guard - AWS CloudFormation Guard

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

故障診斷 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常值為單位的內嵌逸出字串。

  • 確認您的!=比較比較比較相容的資料類型。例如, stringint不是用於比較的相容資料類型。執行!=比較時,如果值不相容,則內部發生錯誤。目前,錯誤會遭到隱藏並轉換為 false,以滿足 Rust 中的 PartialEq 特性。