Como defino as propriedades de um volume raiz para uma instância do Amazon EC2 que criei usando um modelo do AWS CloudFormation?

5 minuto de leitura
0

Quero definir as propriedades do volume raiz para uma instância do Amazon Elastic Compute Cloud (Amazon EC2) que criei usando um modelo do AWS CloudFormation. Por exemplo, quero alterar o tamanho do volume raiz ou habilitar a criptografia do volume raiz.

Breve descrição

Para definir as propriedades do volume raiz para uma instância do EC2, você deve identificar o nome do dispositivo do volume raiz para sua imagem de máquina da Amazon (AMI). Em seguida, você pode usar a propriedade BlockDeviceMapping de um recurso AWS::EC2::Instance para definir as propriedades do volume raiz.

Observação: por padrão, os dispositivos de bloco especificados no mapeamento de dispositivos de bloco para a AMI são usados pela instância do EC2. Para substituir o mapeamento de dispositivos de bloco da AMI, use o mapeamento de dispositivos de bloco de instâncias. Para o volume raiz, você pode substituir somente o tamanho do volume, o tipo de volume e a configuração DeleteOnTermination. Depois que a instância estiver em execução, você poderá modificar somente a configuração DeleteOnTermination dos volumes anexados do Amazon Elastic Block Store (Amazon EBS).

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está utilizando a versão mais recente da AWS CLI.

Resolução

Identificar o nome do dispositivo do volume raiz da sua AMI

Para encontrar o nome do dispositivo, conclua as etapas a seguir no console do Amazon EC2 ou na CLI da AWS.

Como usar o console do Amazon EC2:

1.    Abra o console do Amazon EC2.

2.    Na barra de navegação, selecione a região da AWS em que você deseja iniciar suas instâncias.

3.    No painel de navegação, selecione AMIs.

4.    Use a opção Filtrar para encontrar sua AMI e, em seguida, selecione sua AMI.

5.    Na guia Detalhes, localize o Nome do dispositivo raiz. É aqui que o nome do seu dispositivo raiz está listado.

Como usar o comando da AWS CLI:

Na AWS CLI, execute o seguinte comando:

aws ec2 describe-images \
    --region us-east-1 \
    --image-ids ami-1234567890AWSEXAMPLE

Observação: substitua us-east-1 pela sua região. Substitua ami-1234567890AWSEXAMPLE pela sua AMI.

A saída do comando anterior retorna o campo RootDeviceName, que mostra o nome do dispositivo do volume raiz.

Definir as propriedades do volume raiz para sua instância do EC2

Use a propriedade BlockDeviceMapping de um recurso AWS::EC2::Instance para definir as propriedades do volume raiz de sua instância do EC2.

Nos exemplos JSON e YAML a seguir, o AWS CloudFormation cria uma instância do EC2 com o tamanho do volume raiz definido como 30 GB.

Nos modelos JSON e YAML, a propriedade DeleteOnTermination do volume raiz é definida como verdadeira. O DeviceName está definido como /dev/xvda porque a AMI especificada é uma AMI do Amazon Linux 2. Finalmente, a propriedade Encrypted é definida como verdadeira, o que habilita a criptografia padrão no volume raiz.

Importante: em seu modelo, substitua /dev/xvda pelo valor da propriedade Root Device Name que você identificou anteriormente. Em seguida, modifique a propriedade Ebs no modelo com base em seus requisitos.

Modelo JSON:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "AWS CloudFormation Sample Template that shows how to increase the size of the root volume. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resource used if you create a stack from this template.",
  "Parameters": {
    "KeyName": {
      "Type": "AWS::EC2::KeyPair::KeyName",
      "Description": "Name of an existing EC2 KeyPair to enable SSH access to the EC2 instance."
    },
    "InstanceType": {
      "Description": "EC2 instance type",
      "Type": "String",
      "Default": "t2.micro",
      "ConstraintDescription": "Please choose a valid instance type."
    },
    "AMIID": {
      "Description": "The Latest Amazon Linux 2 AMI taken from the public AWS Systems Manager Parameter Store",
      "Type": "AWS::SSM::Parameter::Value<String>",
      "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2"
    }
  },
  "Resources": {
    "LinuxInstance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "ImageId": {
          "Ref": "AMIID"
        },
        "InstanceType": {
          "Ref": "InstanceType"
        },
        "KeyName": {
          "Ref": "KeyName"
        },
        "BlockDeviceMappings": [
          {
            "DeviceName": "/dev/xvda",
            "Ebs": {
              "VolumeType": "gp2",
              "VolumeSize": "30",
              "DeleteOnTermination":"false",
              "Encrypted": "true"
            }
          }
        ]
      }
    }
  }
}

Modelo YAML:

AWSTemplateFormatVersion: 2010-09-09
Description: >-
  AWS CloudFormation Sample Template that shows how to increase the size of the root volume. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resource used if you create a stack from this template.
Parameters:
  KeyName:
    Type: 'AWS::EC2::KeyPair::KeyName'
    Description: Name of an existing EC2 KeyPair to enable SSH access to the EC2 instance.
  InstanceType:
    Description: EC2 instance type
    Type: String
    Default: t2.micro
    ConstraintDescription: Please choose a valid instance type.
  AMIID:
    Description: >-
      The Latest Amazon Linux 2 AMI taken from the public Systems Manager
      Parameter Store
    Type: 'AWS::SSM::Parameter::Value<String>'
    Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
Resources:
  LinuxInstance:
    Type: 'AWS::EC2::Instance'
    Properties:
      ImageId: !Ref AMIID
      InstanceType: !Ref InstanceType
      KeyName: !Ref KeyName
      BlockDeviceMappings:
        - DeviceName: /dev/xvda
          Ebs:
            VolumeType: gp2
            VolumeSize: '30'
            DeleteOnTermination: 'false'
            Encrypted: 'true'

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos