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