Support des Fonctionnalités ROS
InfraGuard supporte une large gamme de fonctionnalités de modèles ROS (Resource Orchestration Service) pour l'analyse statique et la validation de votre code d'infrastructure.
Fonctions
InfraGuard supporte les fonctions ROS suivantes :
Fonctions de Chaîne
Fn::Join- Joint des chaînes avec un délimiteurFn::Sub- Substitue des variables dans une chaîneFn::Split- Divise une chaîne en listeFn::Replace- Remplace des chaînes dans le texteFn::Str- Convertit des valeurs en chaînesFn::Indent- Indente le texte
Fonctions d'Encodage
Fn::Base64Encode- Encode en Base64Fn::Base64Decode- Décode depuis Base64
Fonctions de Liste
Fn::Select- Sélectionne un élément d'une listeFn::Index- Trouve l'index d'un élémentFn::Length- Retourne la longueur d'une liste ou chaîneFn::ListMerge- Fusionne plusieurs listes
Fonctions de Carte
Fn::FindInMap- Récupère des valeurs d'un mappageFn::SelectMapList- Sélectionne des valeurs d'une liste de cartesFn::MergeMapToList- Fusionne des cartes en liste
Fonctions Mathématiques
Fn::Add- Additionne des nombresFn::Avg- Calcule la moyenneFn::Max- Retourne la valeur maximaleFn::Min- Retourne la valeur minimaleFn::Calculate- Évalue des expressions mathématiques
Fonctions Conditionnelles
Fn::If- Retourne des valeurs basées sur des conditionsFn::Equals- Compare deux valeursFn::And- ET logiqueFn::Or- OU logiqueFn::Not- NON logiqueFn::Contains- Vérifie si une valeur est dans une listeFn::Any- Vérifie si une condition est vraieFn::EachMemberIn- Vérifie si tous les éléments sont dans une autre listeFn::MatchPattern- Correspond à un motif
Fonctions Utilitaires
Fn::GetJsonValue- Extrait des valeurs de JSONRef- Référence des paramètres et ressources
Conditions
InfraGuard supporte entièrement la fonctionnalité Conditions ROS, incluant :
- Définition de Condition - Définir des conditions dans la section
Conditions - Fonctions de Condition - Utiliser
Fn::Equals,Fn::And,Fn::Or,Fn::Not,Fn::Ifdans les conditions - Références de Condition - Référencer des conditions dans les ressources et sorties
- Résolution de Dépendances - Résout automatiquement les dépendances de conditions
Syntaxe YAML Courte
InfraGuard supporte la syntaxe YAML courte (notation de tag) pour les fonctions ROS :
!Ref- Forme courte deRef!GetAtt- Forme courte deFn::GetAtt- Toutes les autres fonctions
Fn::*peuvent être écrites comme!FunctionName
L'analyseur YAML convertit automatiquement ces formes courtes en leur représentation de carte standard lors du chargement du modèle.
Fonctionnalités Non Supportées
InfraGuard se concentre sur l'analyse statique et ne supporte actuellement pas les fonctionnalités suivantes en mode statique :
Fonctions d'Exécution
Fn::GetAtt- Nécessite la création réelle de ressources pour récupérer les attributsFn::GetAZs- Nécessite une requête d'exécution au fournisseur de cloudFn::GetStackOutput- Nécessite l'accès aux sorties d'autres piles
Sections de Modèle
Locals- Définitions de variables localesTransform- Transformations et macros de modèleRules- Règles de validation de modèleMappings- Mappages de valeurs statiques (non analysés pour violations de politiques)
Références Spéciales
- Paramètres pseudo (p. ex.,
ALIYUN::StackId,ALIYUN::Region, etc.) - Paramètres fournis par le système
Ces fonctionnalités seront préservées telles quelles dans la sortie d'analyse sans évaluation ou validation lors de l'utilisation du mode statique.
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.