Configurar instâncias do Amazon EC2 com o AWS CloudFormation - AWS CloudFormation

Configurar instâncias do Amazon EC2 com o AWS CloudFormation

Os snippets a seguir demonstram como configurar instâncias do Amazon EC2 usando o AWS CloudFormation.

Configurações gerais do Amazon EC2

Os snippets a seguir demonstram as configurações gerais para as instâncias do Amazon EC2 usando o AWS CloudFormation.

Criar uma instância do Amazon EC2 em uma zona de disponibilidade especificada

O snippet a seguir cria uma instância do Amazon EC2 na zona de disponibilidade especificada usando um recurso AWS::EC2::Instance. O código da zona de disponibilidade é o seu código de região seguido por um identificador de letra. Você pode iniciar uma instância em uma zona de disponibilidade única.

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

Configurar uma instância do Amazon EC2 marcada com um volume do EBS e dados do usuário

O snippet a seguir cria uma instância do Amazon EC2 com uma tag, um volume do EBS e dados do usuário. Ele usa um recurso AWS::EC2::Instance. No mesmo modelo, você deve definir um recurso AWS::EC2::SecurityGroup, AWS::SNS::Topic e AWS::EC2::Volume. Você deve definir o KeyName na seção Parameters do modelo.

As tags ajudam a categorizar os recursos da AWS com base em suas preferências, como finalidade, proprietário ou ambiente. Os dados do usuário permitem o provisionamento de scripts ou dados personalizados para uma instância durante a execução. Esses dados facilitam a automação de tarefas, a configuração de software, a instalação de pacotes e outras ações em uma instância durante a inicialização.

Para obter mais informações sobre marcação de recursos, consulte Marcar com tags os recursos do Amazon EC2.

Para obter informações sobre dados de usuário, consulte Metadados da instância e dados do usuário.

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

Definir o nome da tabela do DynamoDB nos dados de usuário para a execução da instância do Amazon EC2

O snippet a seguir cria uma instância do Amazon EC2 e define um nome de tabela do DynamoDB nos dados de usuário para transmitir para a instância na execução. Ele usa um recurso AWS::EC2::Instance. Você pode definir parâmetros ou valores dinâmicos nos dados de usuário para transmitir uma instância do EC2 na execução.

Para obter mais informações sobre dados de usuário, consulte Metadados da instância e dados do usuário.

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

Criar um volume do Amazon EBS com uma DeletionPolicy

Os snippets a seguir criam um volume do Amazon EBS usando um recurso AWS::EC2::Volume do Amazon EC2. Você pode usar as propriedades Size ou SnapshotID para definir o volume, mas não ambas. Um atributo DeletionPolicy é definido para criar um snapshot do volume quando a pilha é excluída.

Para obter mais informações sobre o atributo DeletionPolicy, consulte Atributo DeletionPolicy.

Para obter mais informações sobre criar volumes do Amazon EBS, consulte Criar um volume do Amazon EBS.

JSON

Esse snippet cria um volume do Amazon EBS com um tamanho especificado. O tamanho está definido como 10, mas você pode ajustá-lo conforme necessário. O recurso AWS::EC2::Volume permite que você especifique o tamanho ou o ID do snapshot, mas não ambos.

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

Esse snippet cria um volume do Amazon EBS usando um ID de snapshot fornecido. O recurso AWS::EC2::Volume permite que você especifique o tamanho ou o ID do snapshot, mas não ambos.

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

YAML

Esse snippet cria um volume do Amazon EBS com um tamanho especificado. O tamanho está definido como 10, mas você pode ajustá-lo conforme necessário. O recurso AWS::EC2::Volume permite que você especifique o tamanho ou o ID do snapshot, mas não ambos.

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

Esse snippet cria um volume do Amazon EBS usando um ID de snapshot fornecido. O recurso AWS::EC2::Volume permite que você especifique o tamanho ou o ID do snapshot, mas não ambos.

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

Especificar os mapeamentos de dispositivos de blocos para uma instância

Um mapeamento de dispositivos de blocos define os dispositivos de blocos, que inclui volumes de armazenamento de instâncias e volumes do EBS, para anexar a uma instância. Você pode especificar um mapeamento de dispositivos de blocos ao criar uma AMI para que o mapeamento seja usado por todas as instâncias executadas da AMI. Como alternativa, você pode especificar um mapeamento de dispositivos de blocos ao executar uma instância para que o mapeamento substitua o especificado na AMI do qual a instância. foi executada.

Você pode usar os snippets de modelo a seguir para especificar os mapeamentos de dispositivos de blocos para seu EBS ou volumes de armazenamento de instâncias usando a propriedade BlockDeviceMappings de um recurso AWS::EC2::Instance.

Para obter mais informações sobre mapeamentos de dispositivos de blocos, consulte Mapeamento de dispositivos de blocos no Guia do usuário do Amazon EC2.

Especificar os mapeamentos de dispositivos de blocos para dois volumes do 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

Especificar os mapeamentos de dispositivos de blocos para um volume de armazenamento de instância

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