Formatos de plantilla - AWS CloudFormation

Formatos de plantilla

Puede crear plantillas de CloudFormation en formatos JSON o YAML. Ambos formatos tienen el mismo propósito, pero ofrecen claras ventajas en términos de legibilidad y complejidad.

  • JSON: JSON es un formato de intercambio de datos ligero que las máquinas pueden analizar y generar fácilmente. Sin embargo, leer y escribir puede ser engorroso para los humanos, en especial en configuraciones complejas. En JSON, la plantilla se estructura mediante llaves {} y corchetes [] anidados para definir los recursos, los parámetros y otros componentes. Su sintaxis requiere una declaración explícita de cada elemento, lo que puede hacer que la plantilla sea más detallada, pero garantiza el cumplimiento estricto de un formato estructurado.

  • YAML: YAML está diseñado para ser más legible y menos detallado que JSON. Usa indentación en lugar de llaves y corchetes para indicar el anidamiento, lo que puede facilitar la visualización de la jerarquía de recursos y parámetros. A menudo se prefiere YAML por su claridad y facilidad de uso, en especial cuando se trata de plantillas más complejas. Sin embargo, el hecho de que YAML dependa de la indentación puede provocar errores si el espaciado no es uniforme, lo que requiere una atención cuidadosa para mantener la precisión.

Estructura de la plantilla

Las plantillas de CloudFormation se dividen en diversas secciones y cada una de ellas está diseñada para contener un tipo específico de información. Algunas secciones deben declararse en un orden específico y, en el caso de otras, el orden no importa. Sin embargo, al crear la plantilla, puede ser útil utilizar el orden lógico del siguiente ejemplo, ya que los valores de una sección podrían estar relacionados con los valores de una sección anterior.

Al crear plantillas, no use secciones principales duplicadas, por ejemplo, la sección Resources. Aunque CloudFormation puede aceptar la plantilla, esta puede tener un comportamiento indefinido al procesarla, lo que podría resultar en el aprovisionamiento incorrecto de recursos o en la devolución de errores inexplicables.

JSON

En el siguiente ejemplo se muestra la estructura de una plantilla con formato JSON con todas las secciones disponibles.

{ "AWSTemplateFormatVersion" : "version date", "Description" : "JSON string", "Metadata" : { template metadata }, "Parameters" : { set of parameters }, "Rules" : { set of rules }, "Mappings" : { set of mappings }, "Conditions" : { set of conditions }, "Transform" : { set of transforms }, "Resources" : { set of resources }, "Outputs" : { set of outputs } }

YAML

En el siguiente ejemplo se muestra la estructura de una plantilla en formato YAML con todas las secciones disponibles.

--- AWSTemplateFormatVersion: version date Description: String Metadata: template metadata Parameters: set of parameters Rules: set of rules Mappings: set of mappings Conditions: set of conditions Transform: set of transforms Resources: set of resources Outputs: set of outputs

Comentarios

En las plantillas con formato JSON, no se admiten comentarios. JSON, por diseño, no incluye una sintaxis para los comentarios, lo que significa que no se pueden agregar comentarios directamente dentro de la estructura de JSON. Sin embargo, si necesita incluir notas explicativas o documentación, puede agregar metadatos. Para obtener más información, consulte Atributo Metadata.

En las plantillas con formato YAML, puede incluir comentarios en línea con el símbolo #.

El siguiente ejemplo muestra una plantilla YAML con comentarios en línea.

AWSTemplateFormatVersion: 2010-09-09 Description: A sample CloudFormation template with YAML comments. # Resources section Resources: MyEC2Instance: Type: AWS::EC2::Instance Properties: # Linux AMI ImageId: ami-1234567890abcdef0 InstanceType: t2.micro KeyName: MyKey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20

Especificaciones

CloudFormation es compatible con las siguientes especificaciones de JSON y YAML:

JSON

CloudFormation sigue el estándar JSON ECMA-404. Para obtener más información sobre el formato JSON, consulte http://www.json.org.

YAML

CloudFormation admite la especificación YAML versión 1.1 con algunas excepciones. CloudFormation no admite las siguientes características:

  • Las etiquetas binary, omap, pairs, set y timestamp

  • Alias

  • Fusiones de hash

Para obtener más información acerca de YAML, consulte http://yaml.org/.

Más información

Para cada recurso que especifique en su plantilla, debe definir sus propiedades y valores mediante las reglas de sintaxis específicas de JSON o YAML. Para obtener más información acerca de la sintaxis de la plantilla para cada formato, consulte Secciones de la plantilla.