¿Cómo actualizo mi volumen de EBS en CloudFormation sin que se reemplacen las instancias de EC2?

Última actualización: 05/04/2022

Quiero actualizar mi volumen de Amazon Elastic Block Store (Amazon EBS) en AWS CloudFormation sin que se reemplacen las instancias de Amazon Elastic Compute Cloud (Amazon EC2).

Descripción corta

Como práctica recomendada, utilice el tipo de recurso AWS::EC2::Volume para evitar el reemplazo de instancias al actualizar los volúmenes de EBS en CloudFormation.

El reemplazo de instancias se produce cuando se especifican volúmenes en la propiedad BlockDeviceMappings de los tipos de recursos AWS::EC2::Instance y AWS::EC2::Template. En este caso, debe agregar un atributo Retain DeletionPolicy.

Requisitos previos: si modifica el volumen de gp2 a gp3, asegúrese de que el volumen adjunto a la instancia se modifique a gp3. Además, asegúrese de que la instancia no esté en los estados de Optimización o Modificación. Antes de modificar el volumen a gp3, compruebe cuáles son las limitaciones.

Importante: Antes de resolver el problema, tome una instantánea de los volúmenes para crear una copia de seguridad de las cargas de trabajo críticas.

Resolución

1.    Agregue Retain DeletionPolicy a la pila de CloudFormation para la instancia en la que desea actualizar el volumen y, a continuación, actualice la pila:

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

2.    Vuelva a actualizar la pila de CloudFormation eliminando la instancia de la plantilla. Nota: Si solo tiene un recurso en su plantilla, debe crear un recurso sustituto, como otra instancia. Puede eliminar el recurso de la plantilla una vez que haya terminado.

3.    Modifique los atributos del volumen de EBS según sus requisitos.

4.    Vuelva a importar la instancia a la pila de CloudFormation.

Para volver a importar la instancia a la pila de CloudFormation:

1.    Abra la consola de AWS CloudFormation.

2.    En la página de la pila, elija Stack actions (Acciones de la pila) y, a continuación, elija Import resources into stack (Importar recursos a la pila).

3.    Actualice la plantilla:

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

4.    Ingrese el valor ID de instancia en el campo Identificador.

5.    Elija Import resource (Importar recurso).

Cuando CloudFormation pase al estado IMPORT_COMPLETE, las instancias volverán a formar parte de la pila.

Nota: Es posible que reciba el error: Se ha producido un error al crear este conjunto de cambios. Como parte de la operación de importación, no puede modificar ni añadir [Salidas]. Para resolver este problema, verifique que las secciones Salidas de la última plantilla de CloudFormation y la plantilla que utiliza su pila sean las mismas. Si no es así, actualice la última plantilla de CloudFormation para que coincida con los valores de la sección Salidas de la plantilla que utiliza su pila. A continuación, vuelva a actualizar la pila.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?