¿Cómo puedo retener algunos de mis recursos cuando elimino una pila de AWS CloudFormation?

4 minutos de lectura
0

Quiero eliminar una pila de AWS CloudFormation nueva o existente, pero no quiero eliminar todos los recursos de la pila.

Breve descripción

Para conservar ciertos recursos cuando elimine una pila, utilice el atributo DeletionPolicy en la plantilla de CloudFormation.

Antes de eliminar una pila, asegúrese de especificar la opción de política Retener, Instantánea o Eliminar para cada recurso que desee conservar:

  • La opción Retener conserva el recurso en caso de que se elimine una pila.
  • La opción Instantánea crea una instantánea del recurso antes de eliminarlo.
    Nota: Esta opción solo está disponible para los recursos que admiten instantáneas.
  • La opción Eliminar elimina el recurso junto con la pila.
    Nota: Esta opción es el resultado predeterminado si no se configura DeletionPolicy.

Solución

En los siguientes pasos se explica cómo usar la opción Retener para DeletionPolicy con el fin de evitar que se eliminen los recursos cuando se elimine una pila de CloudFormation.

Especificación de los atributos DeletionPolicy en la plantilla de AWS CloudFormation

En la plantilla de CloudFormation, introduzca Retener como DeletionPolicy para los recursos que desee conservar. En los siguientes ejemplos de plantillas JSON y YAML se ha especificado la política Retener para los recursos AWS::EC2::SecurityGroup.

JSON:

{
  "Description": "AWS CloudFormation DeletionPolicy demo",
  "Resources": {
    "SGroup1": {
      "Type": "AWS::EC2::SecurityGroup",
      "DeletionPolicy": "Retain",
      "Properties": {
        "GroupDescription": "EC2 Instance access"
      }
    },
    "SGroup2": {
      "Type": "AWS::EC2::SecurityGroup",
      "DeletionPolicy": "Retain",
      "Properties": {
        "GroupDescription": "EC2 Instance access"
      }
    },
    "SGroup1Ingress": {
      "Type": "AWS::EC2::SecurityGroupIngress",
      "DeletionPolicy": "Retain",
      "Properties": {
        "GroupName": {
          "Ref": "SGroup1"
        },
        "IpProtocol": "tcp",
        "ToPort": "80",
        "FromPort": "80",
        "CidrIp": "0.0.0.0/0"
      }
    },
    "SGroup2Ingress": {
      "Type": "AWS::EC2::SecurityGroupIngress",
      "DeletionPolicy": "Retain",
      "Properties": {
        "GroupName": {
          "Ref": "SGroup2"
        },
        "IpProtocol": "tcp",
        "ToPort": "80",
        "FromPort": "80",
        "CidrIp": "0.0.0.0/0"
      }
    }
  }
}

YAML:

Description: AWS CloudFormation DeletionPolicy demo
Resources:
  SGroup1:
    Type: 'AWS::EC2::SecurityGroup'
    DeletionPolicy: Retain
    Properties:
      GroupDescription: EC2 Instance access
  SGroup2:
    Type: 'AWS::EC2::SecurityGroup'
    DeletionPolicy: Retain
    Properties:
      GroupDescription: EC2 Instance access
  SGroup1Ingress:
    Type: 'AWS::EC2::SecurityGroupIngress'
    DeletionPolicy: Retain
    Properties:
      GroupName: !Ref SGroup1
      IpProtocol: tcp
      ToPort: '80'
      FromPort: '80'
      CidrIp: 0.0.0.0/0
  SGroup2Ingress:
    Type: 'AWS::EC2::SecurityGroupIngress'
    DeletionPolicy: Retain
    Properties:
      GroupName: !Ref SGroup2
      IpProtocol: tcp
      ToPort: '80'
      FromPort: '80'
      CidrIp: 0.0.0.0/0

Carga de la plantilla de CloudFormation actualizada

  1. Abra la consola de AWS CloudFormation.
  2. Elija Crear pila para crear una pila nueva. Si la pila que desea actualizar ya existe, selecciónela y, a continuación, elija Actualizar pila.
  3. En Elegir una plantilla, seleccione Cargar una plantilla en Amazon S3 y, a continuación, elija la plantilla de CloudFormation que ha modificado para que incluya políticas de eliminación.
  4. Elija Siguiente.
  5. Si está creando una pila nueva, introduzca un nombre para ella en Nombre de la pila y, a continuación, elija Siguiente.
  6. En la página Opciones, seleccione las opciones adecuadas para su pila y, a continuación, elija Siguiente.
  7. Elija Crear.

Prueba del atributo DeletionPolicy

  1. Elimine la pila de AWS CloudFormation.
  2. Confirme si los recursos con la opción Retener para DeletionPolicy siguen disponibles una vez completada la eliminación de la pila. Puede comprobar los recursos de sus respectivos servicios mediante la consola de administración de AWS o la AWS CLI.

Por ejemplo, para comprobar si la política Retener ha surtido efecto en el caso de las plantillas anteriores, siga estos pasos después de eliminar la pila de CloudFormation.

  1. Abra la consola de Amazon EC2.
  2. En el panel de navegación, en la sección Red y seguridad, elija Grupos de seguridad.
  3. Confirme si los grupos de seguridad con la política Retener asociada siguen disponibles.

Información relacionada

Creación de una pila en la consola AWS CloudFormation

¿Cómo puedo evitar que los recursos de mi pila de CloudFormation se eliminen o actualicen?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años