Funciones y Sintaxis en AWS CloudFormation

Clase 21 de 38Curso de Infraestructura Como Código en AWS

Resumen

¿Qué es Sub y cómo se utiliza?

La función Sub dentro de CloudFormation te permitirá sustituir valores por un valor específico que tú definas. Esta funcionalidad es esencial para el trabajo con plantillas (templates) de CloudFormation más dinámicas y flexibles. Desde las variables, pasando por los pseudo parámetros, Sub optimiza la manera en que se manejan los valores.

Syntaxis de Sub:

  1. YAML:

    NombreVariable:
      !Sub 
        - "String con ${Variable}"
        - Variables:
            Variable: "Valor"
    
  2. JSON:

    "NombreVariable": { 
      "Fn::Sub": [ 
        "String con ${Variable}", 
        { "Variable": "Valor" }
      ]
    }
    

Uso práctico:

  • Reemplazar valores: Ideal cuando deseas replicar un template sin modificar manualmente valores propios de cada entorno.
  • Con pseudo parámetros: Utiliza constructos como ${AWS::Region} o ${AWS::AccountId} para obtener valores dinámicos de la cuenta y región donde despliegas el template.

¿Cuándo utilizar Ref y cómo es su sintaxis?

La función Ref es fundamental para hacer referencia a recursos o parámetros dentro de los templates de CloudFormation. Es comúnmente utilizada en proyectos para vincular diversos recursos.

Sintaxis de Ref:

NombreVariable:
  !Ref "NombreDelRecursoOParámetro"

Usos principales:

  • Referencia a parámetros: Si tu template tiene parámetros, Ref puede vincularlos dentro de tus recursos. Por ejemplo, al definir un Runtime para una función Lambda.
  • Referencia a recursos: Cuando necesitas acceder a un atributo específico dentro del mismo stack de resources.

Importante:

Aunque Ref y Fn::GetAtt (Get Attribute) pueden parecer similares, tienen roles ligeramente distintos. Mientras Ref obtiene un valor de retorno predefinido, GetAtt permite acceder a atributos específicos de ciertos recursos. Consulta la documentación de AWS para entender las distinciones específicas para cada recurso.

¿Qué es ImportValue y cómo se utiliza en stacks anidados?

ImportValue es una función crítica para el trabajo con stacks anidados de CloudFormation. Permite reutilizar valores de outputs exportados de un stack en otro, fomentando la eficiencia en los despliegues interrelacionados.

Sintaxis y ejemplo:

NombreVariable:
  !ImportValue "NombreDelValorExportado"

Práctica de uso:

  • En stacks anidados: Supón que tienes un stack A que necesita utilizar un valor exportado por el stack B. Con ImportValue, este proceso se simplifica enormemente.

  • Exportación desde otros stacks: Asegúrate siempre que el valor a utilizar desde otro stack esté exportado usando Fn::Export.

Caso de ejemplo: Tienes un stack que exporta un identificador de rol IAM (Identity and Access Management) que luego puede ser utilizado por diferentes funciones Lambda en diversos stacks, garantizando permisos consistentes a través de todos ellos.

La correcta comprensión y aplicación de estas funciones no solo optimizará tus procesos de deploy en AWS, sino que también facilitará una gestión más ágil y dinámica de tus recursos en la nube. Si deseas profundizar más, te recomiendo consultar la documentación oficial de AWS para cada una de estas funcionalidades.