Como obtenho o AWS CloudFormation para recriar um recurso que eu excluí manualmente?

3

Estou experimentando o CloudFormation agora. Eu implantei uma pilha que incluía um AutoScalingGroup (e LaunchConfig e CloudFormation :: Init), LoadBalancer, uma única instância do EC2 (e CloudFormation :: Init) e alguns grupos de segurança.

Se eu terminar as instâncias do EC2 criadas pelo AutoScalingGroup, elas serão recriadas conforme o esperado. Isso é realmente muito útil para testar as alterações nas configurações LaunchConfiguration e CloudFormation :: Init (basicamente, certificando-se de que funciona do zero).

Eu também tenho uma instância do EC2 (chamada DnsServer1 ) que tem um IP público. Enquanto trabalhava em seus dados CloudFormation :: Init, eu também terminei manualmente sua instância. Eu sei que o CloudFormation não o restaura como um AutoScalingGroup faz, mas eu esperava que fosse recriado quando eu executei aws cloudformation update-stack .

Em vez disso, recebo o erro: AWS::EC2::Instance DnsServer1 i-014eee8720c4fb542 does not exist .

Log de atualização completa:

11:03:40 UTC-0500   UPDATE_ROLLBACK_COMPLETE    AWS::CloudFormation::Stack  GregCFTest1 
11:03:38 UTC-0500   UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS    AWS::CloudFormation::Stack  GregCFTest1 
11:03:36 UTC-0500   UPDATE_COMPLETE AWS::AutoScaling::LaunchConfiguration   WebServerLaunchConfig   
11:03:36 UTC-0500   UPDATE_COMPLETE AWS::EC2::Instance  DnsServer1  
11:03:13 UTC-0500   UPDATE_ROLLBACK_IN_PROGRESS AWS::CloudFormation::Stack  GregCFTest1 The following resource(s) failed to update: [DnsServer1].
11:03:11 UTC-0500   UPDATE_COMPLETE AWS::AutoScaling::LaunchConfiguration   WebServerLaunchConfig   
11:03:10 UTC-0500   UPDATE_FAILED   AWS::EC2::Instance  DnsServer1  i-014eee8720c4fb542 does not exist
11:03:00 UTC-0500   UPDATE_IN_PROGRESS  AWS::CloudFormation::Stack  GregCFTest1 User Initiated

O que posso fazer para o CloudFormation recriar esse recurso, sem excluir a pilha e recriá-lo?

    
por gregmac 31.01.2017 / 19:14

1 resposta

2

A maneira mais fácil é dar à instância do EC2 um nome de recurso diferente e atualizar a pilha. Cloudformation interpretará isso à medida que você criar uma instância inteiramente nova e criá-la.

Outra alternativa é alterar um valor de configuração que force a criação de uma nova instância, como a alteração da sub-rede da instância.

    
por 31.01.2017 / 19:35