メインコンテンツまでスキップ

ROS機能サポート

InfraGuardは、インフラストラクチャコードの静的解析と検証のために、ROS(Resource Orchestration Service)テンプレート機能の広範な範囲をサポートしています。

関数

InfraGuardは以下のROS関数をサポートしています:

文字列関数

  • Fn::Join - 区切り文字で文字列を結合
  • Fn::Sub - 文字列内の変数を置換
  • Fn::Split - 文字列をリストに分割
  • Fn::Replace - テキスト内の文字列を置換
  • Fn::Str - 値を文字列に変換
  • Fn::Indent - テキストをインデント

エンコーディング関数

リスト関数

マップ関数

数学関数

条件関数

ユーティリティ関数

条件

InfraGuardはROS Conditions機能を完全にサポートしており、以下を含みます:

  • 条件定義 - Conditionsセクションで条件を定義
  • 条件関数 - 条件でFn::EqualsFn::AndFn::OrFn::NotFn::Ifを使用
  • 条件参照 - リソースと出力で条件を参照
  • 依存関係の解決 - 条件の依存関係を自動的に解決

YAML短縮構文

InfraGuardはROS関数のYAML短縮構文(タグ表記)をサポートしています:

  • !Ref - Refの短縮形
  • !GetAtt - Fn::GetAttの短縮形
  • 他のすべてのFn::*関数は!FunctionNameとして記述できます

YAMLパーサーは、テンプレートの読み込み中にこれらの短縮形を標準のマップ表現に自動的に変換します。

サポートされていない機能

InfraGuardは静的解析に焦点を当てており、現在、静的モードでは以下の機能をサポートしていません:

ランタイム関数

  • Fn::GetAtt - 属性を取得するために実際のリソース作成が必要
  • Fn::GetAZs - クラウドプロバイダーへのランタイムクエリが必要
  • Fn::GetStackOutput - 他のスタック出力へのアクセスが必要

テンプレートセクション

  • Locals - ローカル変数定義
  • Transform - テンプレート変換とマクロ
  • Rules - テンプレート検証ルール
  • Mappings - 静的値マッピング(ポリシー違反について分析されない)

特別な参照

  • 疑似パラメータ(例:ALIYUN::StackIdALIYUN::Regionなど)- システム提供のパラメータ

これらの機能は、静的モードを使用する場合、評価や検証なしで解析出力にそのまま保持されます。

ヒント: 静的解析でサポートされていない機能(Fn::GetAttFn::GetAZsなど)を使用するテンプレートの場合、より正確な解析のためにROS PreviewStack APIを活用する--mode previewの使用を推奨します。プレビューモードは実際のクラウドプロバイダーコンテキストでテンプレートを評価し、ランタイム関数やその他の動的機能のサポートを可能にします。

関連リソース