Uma abordagem é adicionar um parâmetro de entrada ao modelo do CloudFormation para indicar que um intervalo existente deve ser usado.
Use cláusulas de condição no modelo para criar o bloco somente se o parâmetro indicar que é necessário.
Eu tenho o bucket do S3 como recurso no meu modelo do CloudFormation. Com DeletionPolicy
definido como Retain
. Isso funciona como esperado, ao excluir a pilha, ele retém o depósito. No entanto, quando tento criar a pilha novamente, a criação falha ao tentar criar o mesmo bucket novamente, com uma mensagem de erro reclamando que ela já existe.
O que preciso adicionar ao meu modelo CloudFormation para que não tente recriar um recurso que já existe?
O fragmento relevante do meu modelo é o seguinte:
"Resources": {
"SomeS3Bucket" : {
"Type" : "AWS::S3::Bucket",
"DeletionPolicy" : "Retain",
"Properties": {
"BucketName": "SomeS3Bucket"
}
}
Uma abordagem é adicionar um parâmetro de entrada ao modelo do CloudFormation para indicar que um intervalo existente deve ser usado.
Use cláusulas de condição no modelo para criar o bloco somente se o parâmetro indicar que é necessário.
O CloudFormation usa tags com o prefixo "aws:" para acompanhar quais recursos estão associados a quais entradas em quais pilhas - esse é o estado "ao vivo" que ele usa para comparar com um modelo antes de decidir o que adicionar / excluir / atualização.
Como usuário, você não pode adicionar, editar ou excluir essas tags.
Portanto, se os recursos existentes não tiverem essas tags ou não tiverem os valores corretos para essas tags, elas não serão consideradas parte da nova pilha, e não vejo uma maneira de alterar isso .
Estou tentando automatizar isso também, pois parece que não pode ser feito apenas com o modelo Cloudformation. O processo em que estou pensando seria:
temp-$originalbucketname
$originalbucketname
temp-$originalbucketname
Esse é um processo muito complicado, dependendo do tamanho do bucket que pode levar horas, já que a maioria das etapas é O (n) com o número de chaves.
Você poderia pensar que o Cloudformation é a camada básica de automação da AWS, mas eu acho que é apenas um monstro (bastante limitado) reunindo APIs bizantinas para todos os seus serviços.