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.
Categorias de snippets
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.
Trechos de exemplo
- Criar uma instância do Amazon EC2 em uma zona de disponibilidade especificada
- Configurar uma instância do Amazon EC2 marcada com um volume do EBS e dados do usuário
- Definir o nome da tabela do DynamoDB nos dados de usuário para a execução da instância do Amazon EC2
- Criar um volume do Amazon EBS com uma DeletionPolicy
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 Usar metadados da instância para gerenciar a instância do EC2.
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 Usar metadados da instância para gerenciar a instância do EC2.
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.
Cenários
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