Ir para o conteúdo

Como faço para atualizar meu volume do EBS no CloudFormation mesmo quando não substituo minhas instâncias do EC2?

3 minuto de leitura
0

Quero atualizar meu volume do Amazon Elastic Block Store (Amazon EBS) no AWS CloudFormation. No entanto, não quero substituir minhas instâncias do Amazon Elastic Compute Cloud (Amazon EC2).

Resolução

Para evitar a substituição de instâncias, é uma prática recomendada usar o tipo de recurso AWS::EC2::Volume ao atualizar volumes do EBS no CloudFormation.

A substituição da instância ocorre quando você especifica volumes na propriedade BlockDeviceMappings dos tipos de recursos AWS::EC2::Instance e AWS::EC2::Template. Nesse cenário, você deve adicionar um atributo de retenção DeletionPolicy.

Importante: se você modificar manualmente o volume, como de gp2 para gp3, também deverá modificar o volume anexado à instância. Verifique se a instância não está no estado Otimizando ou Modificando. Antes de modificar o volume para gp3, certifique-se de cumprir os requisitos de modificação do volume.

Para evitar a substituição de instâncias ao modificar volumes que você especifica com a propriedade BlockDeviceMappings, conclua as etapas a seguir.

Adicionar um atributo de retenção DeletionPolicy ao recurso de modelo AWS::EC2::Instance de destino

Conclua as etapas a seguir:

  1. Capture um snapshot dos volumes para criar um backup dos workloads críticos.

  2. Defina DeletionPolicy como Reter na pilha do CloudFormation da instância com o volume que você deseja atualizar. Exemplo:

    AWSTemplateFormatVersion: '2010-09-09'
    Resources:
     Myinstance:
      Type: AWS::EC2::Instance
      DeletionPolicy: Retain
      Properties:
       BlockDeviceMappings:
        - DeviceName: /dev/xvda
         Ebs:
          VolumeType: gp2
          VolumeSize: 10
          DeleteOnTermination: true
       EbsOptimized: false
       ImageId: ami-064ff912f78e3e561
       InstanceInitiatedShutdownBehavior: stop
       InstanceType: t2.micro
       Monitoring: false
  3. Atualize a pilha.

Remover o recurso da pilha do CloudFormation e implementar alterações

Conclua as etapas a seguir:

  1. Remova a instância do modelo para removê-la da pilha do CloudFormation, mas não exclua o recurso subjacente. Em seguida, modifique manualmente a instância do EC2.
    Observação: se você tiver apenas um recurso em seu modelo, deverá criar um recurso substituto, como outra instância. É possível excluir o recurso do modelo depois de importar a instância do EC2 de volta para o modelo.
  2. Modifique os atributos de volume do EBS.

Importar o recurso de volta para a pilha do CloudFormation

Conclua as etapas a seguir:

  1. Abra o console do CloudFormation.

  2. No painel de navegação, escolha Pilha.

  3. Escolha Ações de pilha e, em seguida, Importar recursos para a pilha.

  4. Insira o modelo atualizado do CloudFormation. Exemplo:

    AWSTemplateFormatVersion: '2010-09-09'
    Resources:
     Myinstance:
      Type: AWS::EC2::Instance
      DeletionPolicy: Retain
      Properties:
       BlockDeviceMappings:
        - DeviceName: /dev/xvda
          Ebs:
           VolumeType: gp3
           VolumeSize: 100
           DeleteOnTermination: true
        EbsOptimized: false
        ImageId: ami-064ff912f78e3e561
        InstanceInitiatedShutdownBehavior: stop
        InstanceType: t2.micro
        Monitoring: false

    Observação: para importar um recurso, o modelo do CloudFormation deve descrever o recurso com suas configurações atuais.

  5. Em Identificador, insira o ID da instância.

  6. Escolha Importar recurso.

Depois que o CloudFormation atualiza o status para IMPORT_COMPLETE, a instância faz parte da pilha.

É possível receber a mensagem de erro “There was an error creating this change set. As part of the import operation, you cannot modify or add [Outputs]”. Para resolver esse problema, verifique se a seção Saídas do modelo mais recente do CloudFormation corresponde ao modelo que sua pilha usa. Se não forem iguais, atualize o modelo mais recente do CloudFormation para corresponder aos valores na seção Saídas do modelo que sua pilha usa. Em seguida, atualize a pilha novamente.

AWS OFICIALAtualizada há um ano