Como resolvo o erro do AWS CloudFormation “Não é possível atualizar uma pilha quando um recurso com nome personalizado precisa ser substituído”?

2 minuto de leitura
0

Quando tento atualizar uma pilha do AWS CloudFormation, recebo uma mensagem de erro semelhante à seguinte: “O CloudFormation não pode atualizar uma pilha quando um recurso com nome personalizado precisa ser substituído. Renomeie ‘MYResourceXXX’ e atualize a pilha novamente.” Como posso resolver esse erro?

Breve descrição

Esse erro geralmente ocorre quando uma atualização de pilha tenta substituir recursos que têm propriedades por nomes personalizados. O AWS CloudFormation não substitui um recurso que tenha um nome personalizado, a menos que esse nome personalizado seja alterado para um nome diferente. Para prevenir uma falha na pilha e evitar a mensagem de erro, altere todos os recursos com nomes personalizados para usar nomes diferentes antes de atualizar uma pilha.

A resolução desse erro pressupõe o seguinte:

  • Você está atualizando uma pilha existente e não criando uma nova pilha.
  • Você está alterando os nomes dos recursos com nomes personalizados existentes e não criando novos recursos com nomes personalizados.

Resolução

1.    Em um editor de código, abra o modelo do AWS CloudFormation para a pilha que você deseja atualizar.

2.    Substitua os nomes ou valores de qualquer propriedade de recurso que tenha nomes personalizados por nomes diferentes.

Observação: no exemplo a seguir, a propriedade DBInstanceIdentifier do recurso MyRDS é definida com o nome personalizado PRODdb. A pilha do AWS CloudFormation não pode ser atualizada com sucesso até que o nome PRODdb seja alterado para um nome diferente, como PRODdb1. Ou você pode omitir a propriedade DBInstanceIdentifier do seu modelo. Dessa forma, o AWS CloudFormation gera um ID físico exclusivo para usar na instância de banco de dados.

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

Importante: Quando você renomeia um recurso com nome personalizado, o AWS CloudFormation substitui esse recurso. Para mais informações, consulte Tipo de nome. Sem o backup adequado, a substituição de certos recursos pode causar perda de dados. Para mais informações, consulte Substituição.

3.    Salve as alterações em seu modelo do AWS CloudFormation e, em seguida, use o modelo para atualizar sua pilha.


Informações relacionadas

O AWS CloudFormation acumula atualizações

Atualizar comportamentos dos recursos da pilha

Referência de tipos de recursos e propriedades da AWS

AWS OFICIAL
AWS OFICIALAtualizada há um ano