¿Cómo puedo resolver el error de AWS CloudFormation «No se puede actualizar una pila cuando es necesario reemplazar un recurso con un nombre personalizado»?

3 minutos de lectura
0

Cuando intento actualizar una pila de AWS CloudFormation, aparece un mensaje de error similar al siguiente: «CloudFormation no puede actualizar una pila cuando es necesario reemplazar un recurso con un nombre personalizado. Cambie el nombre de «MYResourceXXX» y vuelva a actualizar la pila». ¿Cómo puedo resolver este error?

Descripción breve

Este error suele producirse cuando una actualización de pila intenta reemplazar los recursos que tienen propiedades con nombres personalizados. AWS CloudFormation no reemplaza un recurso que tenga un nombre personalizado, a menos que ese nombre personalizado se cambie por un nombre diferente. Para prevenir un error en la pila y evitar el mensaje de error, cambie los recursos con nombres personalizados y utilice nombres diferentes antes de actualizar una pila.

La resolución de este error asume lo siguiente:

  • Está actualizando una pila existente y no creando una pila nueva.
  • Está cambiando los nombres de los recursos personalizados existentes con nombres personalizados y no creando nuevos recursos con nombres personalizados.

Resolución

  1. En un editor de código, abra la plantilla de AWS CloudFormation para la pila que desea actualizar.

  2. Reemplace los nombres o valores de cualquier propiedad de recurso que tenga nombres personalizados por nombres diferentes.

Nota: En el ejemplo siguiente, la propiedad DBInstanceIdentifier del recurso MyRDS se establece en el nombre personalizado PRODdb. La pila de AWS CloudFormation no se puede actualizar correctamente hasta que el nombre PRODdb se cambie por otro nombre, como PRODdb1. También puede omitir la propiedad DBInstanceIdentifier de la plantilla. De este modo, AWS CloudFormation genera un ID físico único que se utilizará en la instancia de base de datos.

"MyRDS": {
    "Type": "AWS::RDS::DBInstance",
    "Properties": {
        "DBInstanceClass": "db.m3.medium",
        "Engine": "MySQL",
        "DBInstanceIdentifier": "PRODdb",
        "AllocatedStorage": "10",
        "AutoMinorVersionUpgrade": "true",
        "BackupRetentionPeriod": "0",
    …
    …
    }
}

Importante: Al cambiar el nombre de un recurso con nombre personalizado, AWS CloudFormation reemplaza ese recurso. Para obtener más información, consulte Tipo de nombre. El reemplazo de determinados recursos puede provocar la pérdida de datos sin una copia de seguridad adecuada. Para obtener más información, consulte Reemplazo.

  1. Guarde los cambios en la plantilla de AWS CloudFormation y, a continuación, utilícela para actualizar la pila.

Información relacionada

Actualizaciones de pilas de AWS CloudFormation

Comportamientos de actualización de los recursos de la pila

Referencia de tipos de recursos y propiedades de AWS

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año