

# Secciones de la plantilla de CloudFormation
<a name="template-anatomy"></a>

Cada plantilla de CloudFormation consta de una o más secciones, cada una con un propósito específico. 

La sección **Recursos** es obligatoria en todas las plantillas de CloudFormation y constituye el núcleo de la plantilla. Esta sección especifica los recursos de la pila y sus propiedades, como una instancia de Amazon EC2 o un bucket de Amazon S3. Cada recurso se define con un identificador lógico único, un tipo y detalles de configuración específicos. 

La sección de **Parámetros**, si bien es opcional, desempeña un rol importante a la hora de hacer que las plantillas sean más flexibles. Permite a los usuarios pasar valores en tiempo de ejecución al crear o actualizar una pila. Se puede referenciar estos parámetros en las secciones `Resources` y `Outputs` y, de este modo, se puede personalizar sin alterar la propia plantilla. Por ejemplo, puede usar los parámetros para especificar los tipos de instancias o la configuración del entorno que varían de una implementación a otra.

La sección **Salidas**, también opcional, define los valores que se devuelven al ver las propiedades de una pila. Los resultados ofrecen información útil, como identificadores de recursos o URL, que se pueden utilizar con fines operativos o para integrarlos con otras pilas. Esta sección ayuda a los usuarios a recuperar y utilizar detalles importantes sobre los recursos creados por la plantilla.

Otras secciones opcionales incluyen las **Asignaciones**, que funcionan como tablas de búsqueda para administrar los valores condicionales. Con las asignaciones, se definen pares clave-valor y se utilizan con la función intrínseca `Fn::FindInMap` en las secciones `Resources` y `Outputs`. Esto resulta útil en situaciones en las que es necesario ajustar las configuraciones según condiciones tales como Región de AWS o el entorno.

Las secciones **Metadatos** y **Reglas**, aunque se utilizan con menos frecuencia, ofrecen funciones adicionales. `Metadata` puede incluir información adicional sobre la plantilla, mientras que `Rules` valida un parámetro o una combinación de parámetros durante la creación o las actualizaciones de la pila, lo que garantiza que se cumplan criterios específicos. La sección **Condiciones** mejora aún más la flexibilidad al controlar si determinados recursos se crean o si a las propiedades se les asigna un valor según condiciones como el tipo de entorno.

Por último, la sección **Transformar** se utiliza para aplicar macros durante el procesamiento de la plantilla. Para las aplicaciones sin servidor (también denominadas aplicaciones de Lambda), especifica la versión de [AWS Serverless Application Model (AWS SAM)](https://github.com/awslabs/serverless-application-specification) que hay que utilizar. Cuando especifique una transformación, puede utilizar sintaxis AWS SAM para declarar los recursos en la plantilla. El modelo define la sintaxis que puede utilizar y la forma en la que se procesa. También puede usar la transformación `AWS::Include` para incluir fragmentos de plantilla que se almacenan por separado de la plantilla principal de CloudFormation. 

Los siguientes temas brindan más información y ejemplos de uso de cada sección.

**Topics**
+ [Resources](resources-section-structure.md)
+ [Parameters](parameters-section-structure.md)
+ [Outputs](outputs-section-structure.md)
+ [Mappings](mappings-section-structure.md)
+ [Metadata](metadata-section-structure.md)
+ [Rules](rules-section-structure.md)
+ [Conditions](conditions-section-structure.md)
+ [Transform](transform-section-structure.md)
+ [Versión del formato](format-version-structure.md)
+ [Description](template-description-structure.md)