Soporte de Características ROS
InfraGuard soporta una amplia gama de características de plantillas ROS (Resource Orchestration Service) para análisis estático y validación de su código de infraestructura.
Funciones
InfraGuard soporta las siguientes funciones ROS:
Funciones de Cadena
Fn::Join- Une cadenas con un delimitadorFn::Sub- Sustituye variables en una cadenaFn::Split- Divide una cadena en una listaFn::Replace- Reemplaza cadenas en textoFn::Str- Convierte valores a cadenasFn::Indent- Indenta texto
Funciones de Codificación
Fn::Base64Encode- Codifica a Base64Fn::Base64Decode- Decodifica desde Base64
Funciones de Lista
Fn::Select- Selecciona un elemento de una listaFn::Index- Encuentra el índice de un elementoFn::Length- Devuelve la longitud de una lista o cadenaFn::ListMerge- Fusiona múltiples listas
Funciones de Mapa
Fn::FindInMap- Recupera valores de un mapeoFn::SelectMapList- Selecciona valores de una lista de mapasFn::MergeMapToList- Fusiona mapas en una lista
Funciones Matemáticas
Fn::Add- Suma númerosFn::Avg- Calcula promedioFn::Max- Devuelve valor máximoFn::Min- Devuelve valor mínimoFn::Calculate- Evalúa expresiones matemáticas
Funciones Condicionales
Fn::If- Devuelve valores basados en condicionesFn::Equals- Compara dos valoresFn::And- AND lógicoFn::Or- OR lógicoFn::Not- NOT lógicoFn::Contains- Verifica si un valor está en una listaFn::Any- Verifica si alguna condición es verdaderaFn::EachMemberIn- Verifica si todos los elementos están en otra listaFn::MatchPattern- Coincide con un patrón
Funciones de Utilidad
Fn::GetJsonValue- Extrae valores de JSONRef- Referencia parámetros y recursos
Condiciones
InfraGuard soporta completamente la característica Condiciones ROS, incluyendo:
- Definición de Condición - Definir condiciones en la sección
Conditions - Funciones de Condición - Usar
Fn::Equals,Fn::And,Fn::Or,Fn::Not,Fn::Ifen condiciones - Referencias de Condición - Referenciar condiciones en recursos y salidas
- Resolución de Dependencias - Resuelve automáticamente las dependencias de condiciones
Sintaxis Corta YAML
InfraGuard soporta la sintaxis corta YAML (notación de etiqueta) para funciones ROS:
!Ref- Forma corta deRef!GetAtt- Forma corta deFn::GetAtt- Todas las demás funciones
Fn::*pueden escribirse como!FunctionName
El analizador YAML convierte automáticamente estas formas cortas a su representación de mapa estándar durante la carga de la plantilla.
Características No Soportadas
InfraGuard se enfoca en análisis estático y actualmente no soporta las siguientes características en modo estático:
Funciones de Tiempo de Ejecución
Fn::GetAtt- Requiere creación real de recursos para recuperar atributosFn::GetAZs- Requiere consulta en tiempo de ejecución al proveedor de nubeFn::GetStackOutput- Requiere acceso a salidas de otras pilas
Secciones de Plantilla
Locals- Definiciones de variables localesTransform- Transformaciones y macros de plantillaRules- Reglas de validación de plantillaMappings- Mapeos de valores estáticos (no analizados para violaciones de políticas)
Referencias Especiales
- Parámetros pseudo (p. ej.,
ALIYUN::StackId,ALIYUN::Region, etc.) - Parámetros proporcionados por el sistema
Estas características se preservarán tal cual en la salida del análisis sin evaluación o validación cuando se use el modo estático.
Consejo: Para plantillas que usan características no soportadas por análisis estático (como
Fn::GetAtt,Fn::GetAZs, etc.), recomendamos usar--mode previewpara aprovechar la API ROS PreviewStack para un análisis más preciso. El modo preview evalúa plantillas con contexto real del proveedor de nube, permitiendo soporte para funciones de tiempo de ejecución y otras características dinámicas.