ROS-Funktionsunterstützung
InfraGuard unterstützt eine breite Palette von ROS (Resource Orchestration Service)-Vorlagenfunktionen für die statische Analyse und Validierung Ihres Infrastrukturcodes.
Funktionen
InfraGuard unterstützt die folgenden ROS-Funktionen:
String-Funktionen
Fn::Join- Verbindet Strings mit einem TrennzeichenFn::Sub- Ersetzt Variablen in einem StringFn::Split- Teilt einen String in eine ListeFn::Replace- Ersetzt Strings im TextFn::Str- Konvertiert Werte zu StringsFn::Indent- Rückt Text ein
Kodierungsfunktionen
Fn::Base64Encode- Kodiert zu Base64Fn::Base64Decode- Dekodiert von Base64
Listenfunktionen
Fn::Select- Wählt ein Element aus einer ListeFn::Index- Findet den Index eines ElementsFn::Length- Gibt die Länge einer Liste oder eines Strings zurückFn::ListMerge- Führt mehrere Listen zusammen
Map-Funktionen
Fn::FindInMap- Ruft Werte aus einer Zuordnung abFn::SelectMapList- Wählt Werte aus einer Liste von Maps ausFn::MergeMapToList- Führt Maps in eine Liste zusammen
Mathematische Funktionen
Fn::Add- Addiert ZahlenFn::Avg- Berechnet den DurchschnittFn::Max- Gibt den Maximalwert zurückFn::Min- Gibt den Minimalwert zurückFn::Calculate- Wertet mathematische Ausdrücke aus
Bedingte Funktionen
Fn::If- Gibt Werte basierend auf Bedingungen zurückFn::Equals- Vergleicht zwei WerteFn::And- Logisches UNDFn::Or- Logisches ODERFn::Not- Logisches NICHTFn::Contains- Prüft, ob ein Wert in einer Liste istFn::Any- Prüft, ob eine Bedingung wahr istFn::EachMemberIn- Prüft, ob alle Elemente in einer anderen Liste sindFn::MatchPattern- Entspricht einem Muster
Hilfsfunktionen
Fn::GetJsonValue- Extrahiert Werte aus JSONRef- Verweist auf Parameter und Ressourcen
Bedingungen
InfraGuard unterstützt vollständig die Funktion ROS Conditions, einschließlich:
- Bedingungsdefinition - Definieren Sie Bedingungen im Abschnitt
Conditions - Bedingungsfunktionen - Verwenden Sie
Fn::Equals,Fn::And,Fn::Or,Fn::Not,Fn::Ifin Bedingungen - Bedingungsreferenzen - Verweisen Sie auf Bedingungen in Ressourcen und Ausgaben
- Abhängigkeitsauflösung - Löst automatisch Bedingungsabhängigkeiten auf
YAML-Kurzsyntax
InfraGuard unterstützt die YAML-Kurzsyntax (Tag-Notation) für ROS-Funktionen:
!Ref- Kurzform vonRef!GetAtt- Kurzform vonFn::GetAtt- Alle anderen
Fn::*-Funktionen können als!FunctionNamegeschrieben werden
Der YAML-Parser konvertiert diese Kurzformen automatisch in ihre Standard-Map-Darstellung beim Laden der Vorlage.
Nicht Unterstützte Funktionen
InfraGuard konzentriert sich auf statische Analyse und unterstützt derzeit die folgenden Funktionen im statischen Modus nicht:
Laufzeitfunktionen
Fn::GetAtt- Erfordert tatsächliche Ressourcenerstellung, um Attribute abzurufenFn::GetAZs- Erfordert Laufzeitabfrage an den Cloud-AnbieterFn::GetStackOutput- Erfordert Zugriff auf andere Stack-Ausgaben
Vorlagenabschnitte
Locals- Lokale VariablendefinitionenTransform- Vorlagentransformationen und MakrosRules- VorlagenvalidierungsregelnMappings- Statische Wertzuordnungen (nicht auf Richtlinienverstöße analysiert)
Spezielle Referenzen
- Pseudo-Parameter (z. B.
ALIYUN::StackId,ALIYUN::Region, etc.) - Vom System bereitgestellte Parameter
Diese Funktionen werden unverändert in der Analyseausgabe erhalten, ohne Auswertung oder Validierung bei Verwendung des statischen Modus.
Astuce : Pour les modèles utilisant des fonctionnalités non supportées par l'analyse statique (telles que
Fn::GetAtt,Fn::GetAZs, etc.), nous recommandons d'utiliser--mode previewpour tirer parti de l'API ROS PreviewStack pour une analyse plus précise. Le mode preview évalue les modèles avec le contexte réel du fournisseur de cloud, permettant le support des fonctions d'exécution et d'autres fonctionnalités dynamiques.