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

4 minuto de leitura
0

Usei um modelo do AWS CloudFormation para criar uma instância do Amazon Elastic Compute Cloud (Amazon EC2). Quero definir as propriedades do volume raiz da instância.

Resolução

Observação: Por padrão, a instância do EC2 usa os dispositivos de bloco especificados no mapeamento de dispositivos de blocos para a imagem de máquina da Amazon (AMI). Para substituir o mapeamento de dispositivos de blocos da AMI, use o mapeamento de dispositivos de blocos da instância. 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).

Identificar o nome do dispositivo do volume raiz da sua AMI

Para encontrar o nome do dispositivo, use o console do Amazon EC2 ou a AWS Command Line Interface (AWS CLI).

Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Console do Amazon EC2

Para identificar o nome do dispositivo, conclua as seguintes etapas:

  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 Filtro para encontrar sua AMI e, em seguida, selecione sua AMI.
  5. Na guia Detalhes, copie o valor para Nome do dispositivo raiz.

AWS CLI

Para identificar o nome do dispositivo, execute o comando describe-images:

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

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

A saída do comando retorna o nome do dispositivo como o valor para RootDeviceName.

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 de JSON e YAML a seguir, o CloudFormation cria uma instância do EC2 com as seguintes configurações:

  • O tamanho do volume raiz é definido como 30 GB.
  • A propriedade DeleteOnTermination do volume raiz é verdadeira.
  • O DeviceName é /dev/xvda porque a AMI especificada é uma AMI do Amazon Linux 2.
  • A propriedade criptografada é verdadeira. Essa configuração permite a criptografia padrão no volume raiz.

**Observação:**Em seu modelo, substitua /dev/xvda pelo valor Nome do dispositivo raiz. Se necessário, modifique a propriedade Ebs no modelo.

Exemplo de 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"
            }
          }
        ]
      }
    }
  }
}

Exemplo de modelo YAML:

AWSTemplateFormatVersion: 2010-09-09Description: >-
  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á 6 meses