Configuración de instancias de Amazon EC2 con AWS CloudFormation - AWS CloudFormation

Configuración de instancias de Amazon EC2 con AWS CloudFormation

Los siguientes fragmentos muestran cómo configurar las instancias de Amazon EC2 mediante AWS CloudFormation.

Configuración general de Amazon EC2

Los siguientes fragmentos muestran las configuraciones generales de las instancias de Amazon EC2 mediante AWS CloudFormation.

Creación de una instancia de Amazon EC2 en una zona de disponibilidad específica

En el siguiente fragmento se crea una instancia de Amazon EC2 en la zona de disponibilidad específica con un recurso AWS::EC2::Instance. El código de la zona de disponibilidad es el código de la región seguido de un identificador de letra. Puede lanzar una instancia en una sola zona de disponibilidad.

JSON

"Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "AvailabilityZone": "aa-example-1a", "ImageId": "ami-1234567890abcdef0" } }

YAML

Ec2Instance: Type: AWS::EC2::Instance Properties: AvailabilityZone: aa-example-1a ImageId: ami-1234567890abcdef0

Configuración de una instancia de Amazon EC2 con un volumen de EBS y datos de usuario

El siguiente fragmento crea una instancia de Amazon EC2 con una etiqueta, un volumen de EBS y datos de usuario. Utiliza un recurso AWS::EC2::Instance. En la misma plantilla, debe definir un recurso AWS::EC2::SecurityGroup, un recurso AWS::SNS::Topic y un recurso AWS::EC2::Volume. Se debe definir KeyName en la sección Parameters de la plantilla.

Las etiquetas permiten clasificar los recursos de AWS de diversas maneras, por ejemplo, según su finalidad, propietario o entorno. Los datos de usuario permiten aprovisionar scripts o datos personalizados a una instancia durante el lanzamiento. Estos datos facilitan la automatización de tareas, la configuración del software, la instalación de paquetes y otras acciones en una instancia durante la inicialización.

Para obtener más información acerca de cómo etiquetar los recursos, consulte Etiquetado de los recursos de Amazon EC2.

Para más información, consulte Metadatos de instancia y datos de usuario.

JSON

"Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "KeyName": { "Ref": "KeyName" }, "SecurityGroups": [ { "Ref": "Ec2SecurityGroup" } ], "UserData": { "Fn::Base64": { "Fn::Join": [ ":", [ "PORT=80", "TOPIC=", { "Ref": "MySNSTopic" } ] ] } }, "InstanceType": "aa.size", "AvailabilityZone": "aa-example-1a", "ImageId": "ami-1234567890abcdef0", "Volumes": [ { "VolumeId": { "Ref": "MyVolumeResource" }, "Device": "/dev/sdk" } ], "Tags": [ { "Key": "Name", "Value": "MyTag" } ] } }

YAML

Ec2Instance: Type: AWS::EC2::Instance Properties: KeyName: !Ref KeyName SecurityGroups: - !Ref Ec2SecurityGroup UserData: Fn::Base64: Fn::Join: - ":" - - "PORT=80" - "TOPIC=" - !Ref MySNSTopic InstanceType: aa.size AvailabilityZone: aa-example-1a ImageId: ami-1234567890abcdef0 Volumes: - VolumeId: !Ref MyVolumeResource Device: "/dev/sdk" Tags: - Key: Name Value: MyTag

Definición del nombre de la tabla de DynamoDB en los datos de usuario para el lanzamiento de la instancia de Amazon EC2

El siguiente fragmento crea una instancia de Amazon EC2 y define un nombre de tabla de DynamoDB en los datos de usuario para pasarlo a la instancia en el momento del lanzamiento. Utiliza un recurso AWS::EC2::Instance. Puede definir parámetros o valores dinámicos en los datos del usuario para transferirlos a una instancia de EC2 en el momento del lanzamiento.

Para más información, consulte Metadatos de instancia y datos de usuario.

JSON

"Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "TableName=", { "Ref": "DynamoDBTableName" } ] ] } }, "AvailabilityZone": "aa-example-1a", "ImageId": "ami-1234567890abcdef0" } }

YAML

Ec2Instance: Type: AWS::EC2::Instance Properties: UserData: Fn::Base64: Fn::Join: - '' - - 'TableName=' - Ref: DynamoDBTableName AvailabilityZone: aa-example-1a ImageId: ami-1234567890abcdef0

Creación de un volumen de Amazon EBS con DeletionPolicy

Los siguientes fragmentos crean un volumen de Amazon EBS mediante un recurso AWS::EC2::Volume de Amazon EC2. Puede usar las propiedades Size o SnapshotID para definir el volumen, pero no ambas. Un atributo DeletionPolicy está configurado para crear una instantánea del volumen cuando se elimina la pila.

Para obtener más información acerca del atributo DeletionPolicy, consulte Atributo DeletionPolicy.

Para más información sobre la creación de una instantánea en EBS, consulte Creación de un volumen de Amazon EBS.

JSON

Este fragmento de código crea un volumen de Amazon EBS con un tamaño especificado. El tamaño está establecido en 10, pero puede ajustarlo según sea necesario. El recurso AWS::EC2::Volume le permite especificar el tamaño o el ID de una instantánea, pero no ambos.

"MyEBSVolume": { "Type": "AWS::EC2::Volume", "Properties": { "Size": "10", "AvailabilityZone": { "Ref": "AvailabilityZone" } }, "DeletionPolicy": "Snapshot" }

Este fragmento de código crea un volumen de Amazon EBS con un ID de instantánea proporcionado. El recurso AWS::EC2::Volume le permite especificar el tamaño o el ID de una instantánea, pero no ambos.

"MyEBSVolume": { "Type": "AWS::EC2::Volume", "Properties": { "SnapshotId" : "snap-1234567890abcdef0", "AvailabilityZone": { "Ref": "AvailabilityZone" } }, "DeletionPolicy": "Snapshot" }

YAML

Este fragmento de código crea un volumen de Amazon EBS con un tamaño especificado. El tamaño está establecido en 10, pero puede ajustarlo según sea necesario. El recurso AWS::EC2::Volume le permite especificar el tamaño o el ID de una instantánea, pero no ambos.

MyEBSVolume: Type: AWS::EC2::Volume Properties: Size: 10 AvailabilityZone: Ref: AvailabilityZone DeletionPolicy: Snapshot

Este fragmento de código crea un volumen de Amazon EBS con un ID de instantánea proporcionado. El recurso AWS::EC2::Volume le permite especificar el tamaño o el ID de una instantánea, pero no ambos.

MyEBSVolume: Type: AWS::EC2::Volume Properties: SnapshotId: snap-1234567890abcdef0 AvailabilityZone: Ref: AvailabilityZone DeletionPolicy: Snapshot

Especificación de las asignaciones de dispositivos de bloques para la instancia.

Una asignación de dispositivos de bloques define los dispositivos de bloques, que incluye volúmenes de almacén de instancias y volúmenes de EBS para asociar a la instancia. Puede especificar una asignación de dispositivos de bloques al crear una AMI para que todas las instancias que se lancen desde la AMI utilicen dicha asignación. También puede especificar una asignación de dispositivos de bloques cuando se lanza una instancia, de forma que esta asignación anula la especificada en la AMI desde la que se lanzó la instancia.

Puede usar los siguientes fragmentos de plantilla para especificar las asignaciones de dispositivos de bloques para sus volúmenes de EBS o de almacén de instancias mediante la propiedad BlockDeviceMappings de un recurso de AWS::EC2::Instance.

Para obtener más información acerca de la asignación de dispositivos de bloques, consulte Asignación de dispositivos de bloques en la Guía del usuario de Amazon EC2.

Especificación de las asignaciones de dispositivos de bloques para dos volúmenes de EBS

JSON

"Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Fn::FindInMap": [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" }, { "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ] } ] }, "KeyName": { "Ref": "KeyName" }, "InstanceType": { "Ref": "InstanceType" }, "SecurityGroups": [{ "Ref": "Ec2SecurityGroup" }], "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "VolumeSize": "50" } }, { "DeviceName": "/dev/sdm", "Ebs": { "VolumeSize": "100" } } ] } } }

YAML

EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap [AWSRegionArch2AMI, !Ref 'AWS::Region', !FindInMap [AWSInstanceType2Arch, !Ref InstanceType, Arch]] KeyName: !Ref KeyName InstanceType: !Ref InstanceType SecurityGroups: - !Ref Ec2SecurityGroup BlockDeviceMappings: - DeviceName: /dev/sda1 Ebs: VolumeSize: 50 - DeviceName: /dev/sdm Ebs: VolumeSize: 100

Cualquier entrada de asignación de dispositivos de bloques para el almacén de instancias.

JSON

"Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, "HVM64" ]}, "KeyName" : { "Ref" : "KeyName" }, "InstanceType": { "Ref": "InstanceType" }, "SecurityGroups" : [{ "Ref" : "Ec2SecurityGroup" }], "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdc", "VirtualName" : "ephemeral0" } ] } }

YAML

EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap - AWSRegionArch2AMI - !Ref AWS::Region - HVM64 KeyName: !Ref KeyName InstanceType: !Ref InstanceType SecurityGroups: - !Ref Ec2SecurityGroup BlockDeviceMappings: - DeviceName: /dev/sdc VirtualName: ephemeral0