Conceptos de AWS CloudFormation - AWS CloudFormation

Conceptos de AWS CloudFormation

Al utilizar AWS CloudFormation, trabaje con plantillas y pilas. Puede crear plantillas para describir los recursos de AWS y sus propiedades. Cuando se crea una pila, CloudFormation aprovisiona los recursos que se describen en su plantilla.

Plantillas

Una plantilla CloudFormation es un archivo de texto con formato JSON o YAML. Puede guardar estos archivos con cualquier extensión, como .json, .yaml, .template o .txt. CloudFormation usa estas plantillas como proyectos para crear sus recursos de AWS. Por ejemplo, en una plantilla, puede describir una instancia Amazon EC2, como el tipo de instancia, el ID de AMI, mapeos de dispositivos de bloques y el nombre de su par de claves de Amazon EC2. Cuando se crea una pila, debe especificarse una plantilla que CloudFormation utiliza para crear lo que se describe en la plantilla.

Por ejemplo, si creó una pila con la siguiente plantilla, CloudFormation aprovisiona una instancia con un ID de AMI ami-0ff8a91507f77f867, un tipo de instancia t2.micro, el nombre del par de claves testkey y un volumen de Amazon EBS.

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "A sample template", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro", "KeyName": "testkey", "BlockDeviceMappings": [ { "DeviceName": "/dev/sdm", "Ebs": { "VolumeType": "io1", "Iops": 200, "DeleteOnTermination": false, "VolumeSize": 20 } } ] } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Description: A sample template Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20

También puede especificar varios recursos en una única plantilla y configurar dichos recursos para que funcionen conjuntamente. Por ejemplo, puede modificar la plantilla anterior para que incluya una dirección IP elástica (EIP) y asociarla a la instancia de Amazon EC2, tal y como se muestra en el ejemplo siguiente:

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "A sample template", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro", "KeyName": "testkey", "BlockDeviceMappings": [ { "DeviceName": "/dev/sdm", "Ebs": { "VolumeType": "io1", "Iops": 200, "DeleteOnTermination": false, "VolumeSize": 20 } } ] } }, "MyEIP": { "Type": "AWS::EC2::EIP", "Properties": { "InstanceId": { "Ref": "MyEC2Instance" } } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Description: A sample template Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20 MyEIP: Type: 'AWS::EC2::EIP' Properties: InstanceId: !Ref MyEC2Instance

Las plantillas anteriores se centraron en una única instancia Amazon EC2; sin embargo, las plantillas de CloudFormation tienen capacidades adicionales que puede utilizar para crear conjuntos complejos de recursos y reutilizar esas plantillas en múltiples contextos. Por ejemplo, puede agregar parámetros de entrada cuyos valores se especifican al crear una pila de CloudFormation. En otras palabras, puede especificar un valor como el tipo de instancia al crear una pila en lugar de al crear la plantilla, lo que hace a la plantilla más fácil de reutilizar en diferentes situaciones.

Para obtener más información acerca de la creación de plantillas y capacidades, consulte Anatomía de la plantilla.

Para obtener más información sobre la declaración de recursos específicos, consulte Referencia de tipos de recursos y propiedades de AWS.

Para comenzar a diseñar sus propias plantillas con AWS CloudFormation Designer, vaya a https://console.aws.amazon.com/cloudformation/designer.

Pilas

Al utilizar CloudFormation, los recursos relacionados se administran como una sola unidad, denominada pila. Puede crear, actualizar y eliminar una colección de recursos mediante la creación, actualización y eliminación de pilas. Todos los recursos de una pila se definen mediante la plantilla de CloudFormation de la pila. Supongamos que ha creado una plantilla que incluye un grupo de Auto Scaling, un balanceador de carga Elastic Load Balancing y una instancia de base de datos Amazon Relational Database Service (Amazon RDS). Para crear esos recursos, debe crear una pila enviando la plantilla que ha creado y CloudFormation aprovisiona todos esos recursos para usted. También puede trabajar con pilas por medio de la consola, la API o la AWS CLI de CloudFormation.

Para obtener más información sobre la creación, actualización o eliminación de pilas, consulte Trabajo con pilas de .

Conjuntos de cambios

Si necesita realizar cambios en los recursos que están ejecutándose en una pila, actualice la pila. Antes de realizar cambios en los recursos, puede generar un conjunto de cambios, que es un resumen de los cambios propuestos. Los conjuntos de cambios le permiten ver cómo afectan los cambios a sus recursos en ejecución, en especial para los recursos críticos, antes de implementarlos.

Por ejemplo, si cambia el nombre de una instancia de base de datos Amazon RDS, CloudFormation creará una nueva base de datos y eliminará la antigua. Se perderán los datos de la antigua base de datos a menos que ya haya hecho una copia de seguridad. Si genera un cambio conjunto, verá que el cambio provocará la sustitución de la base de datos y usted podrá planificar en consecuencia antes de actualizar la pila. Para obtener más información, consulte Actualización de pilas con conjuntos de cambios.