Suporte a Recursos ROS
O InfraGuard suporta uma ampla gama de recursos de modelos ROS (Resource Orchestration Service) para análise estática e validação do seu código de infraestrutura.
Funções
O InfraGuard suporta as seguintes funções ROS:
Funções de String
Fn::Join- Junta strings com um delimitadorFn::Sub- Substitui variáveis em uma stringFn::Split- Divide uma string em uma listaFn::Replace- Substitui strings no textoFn::Str- Converte valores para stringsFn::Indent- Indenta texto
Funções de Codificação
Fn::Base64Encode- Codifica para Base64Fn::Base64Decode- Decodifica de Base64
Funções de Lista
Fn::Select- Seleciona um elemento de uma listaFn::Index- Encontra o índice de um elementoFn::Length- Retorna o comprimento de uma lista ou stringFn::ListMerge- Mescla múltiplas listas
Funções de Mapa
Fn::FindInMap- Recupera valores de um mapeamentoFn::SelectMapList- Seleciona valores de uma lista de mapasFn::MergeMapToList- Mescla mapas em uma lista
Funções Matemáticas
Fn::Add- Adiciona númerosFn::Avg- Calcula médiaFn::Max- Retorna valor máximoFn::Min- Retorna valor mínimoFn::Calculate- Avalia expressões matemáticas
Funções Condicionais
Fn::If- Retorna valores com base em condiçõesFn::Equals- Compara dois valoresFn::And- E lógicoFn::Or- OU lógicoFn::Not- NÃO lógicoFn::Contains- Verifica se um valor está em uma listaFn::Any- Verifica se alguma condição é verdadeiraFn::EachMemberIn- Verifica se todos os elementos estão em outra listaFn::MatchPattern- Corresponde a um padrão
Funções Utilitárias
Fn::GetJsonValue- Extrai valores de JSONRef- Referencia parâmetros e recursos
Condições
O InfraGuard suporta completamente o recurso Condições ROS, incluindo:
- Definição de Condição - Definir condições na seção
Conditions - Funções de Condição - Usar
Fn::Equals,Fn::And,Fn::Or,Fn::Not,Fn::Ifem condições - Referências de Condição - Referenciar condições em recursos e saídas
- Resolução de Dependências - Resolve automaticamente dependências de condições
Sintaxe YAML Curta
O InfraGuard suporta a sintaxe YAML curta (notação de tag) para funções ROS:
!Ref- Forma curta deRef!GetAtt- Forma curta deFn::GetAtt- Todas as outras funções
Fn::*podem ser escritas como!FunctionName
O analisador YAML converte automaticamente essas formas curtas para sua representação de mapa padrão durante o carregamento do modelo.
Recursos Não Suportados
O InfraGuard foca em análise estática e atualmente não suporta os seguintes recursos no modo estático:
Funções de Tempo de Execução
Fn::GetAtt- Requer criação real de recursos para recuperar atributosFn::GetAZs- Requer consulta em tempo de execução ao provedor de nuvemFn::GetStackOutput- Requer acesso a saídas de outras pilhas
Seções de Modelo
Locals- Definições de variáveis locaisTransform- Transformações e macros de modeloRules- Regras de validação de modeloMappings- Mapeamentos de valores estáticos (não analisados para violações de políticas)
Referências Especiais
- Parâmetros pseudo (ex.:
ALIYUN::StackId,ALIYUN::Region, etc.) - Parâmetros fornecidos pelo sistema
Esses recursos serão preservados como estão na saída da análise sem avaliação ou validação ao usar o modo estático.
Dica: Para modelos que usam recursos não suportados por análise estática (como
Fn::GetAtt,Fn::GetAZs, etc.), recomendamos usar--mode previewpara aproveitar a API ROS PreviewStack para análise mais precisa. O modo preview avalia modelos com contexto real do provedor de nuvem, permitindo suporte para funções de tempo de execução e outros recursos dinâmicos.