故障診斷 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常值的內嵌逸出字串。如果您的意圖是剖析內嵌 JSON 字串,請使用 Guard 3.0.0 和更新版本中提供的 json_parse()函數。如需詳細資訊,請參閱使用內建函數

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