トラブルシューティング 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 組み込み関数の拡張形式を使用します。例えば、Guard ルールに照らして評価する場合はFn::Join、YAML 形式の CloudFormation テンプレートFn::Subで を使用します。

組み込み関数の詳細については、 AWS CloudFormation ユーザーガイド組み込み関数リファレンスを参照してください。

一般的なトラブルシューティングのトピック

  • string リテラルにエスケープされた文字列が埋め込まれていないことを確認します。Guard はリstringテラルの埋め込みエスケープ文字列をサポートしていません。インライン JSON 文字列を解析する場合は、Guard 3.0.0 以降で利用可能な json_parse()関数を使用します。詳細については、「組み込み関数の使用」を参照してください。

  • != 比較で互換性のあるデータ型が比較されていることを確認します。たとえば、 stringintは、比較用の互換性のないデータ型です。!= 比較を実行するときに、値が互換性がない場合、内部でエラーが発生します。現在、エラーは抑制され、Rust の PartialEq 特性を満たすfalseために に変換されます。