Назад | Перейти на главную страницу

Как заставить AWS CloudFormation воссоздать ресурс, который я удалил вручную?

Я сейчас экспериментирую с CloudFormation. Я развернул стек, который включал AutoScalingGroup (а также LaunchConfig и CloudFormation :: Init), LoadBalancer, один экземпляр EC2 (и CloudFormation :: Init) и пару групп безопасности.

Если я завершу экземпляры EC2, созданные AutoScalingGroup, они будут созданы заново, как и ожидалось. На самом деле это очень полезно для тестирования изменений в моих настройках LaunchConfiguration и CloudFormation :: Init (в основном, чтобы убедиться, что он работает с нуля).

У меня также есть экземпляр EC2 (названный DnsServer1) с публичным IP. Во время работы с данными CloudFormation :: Init я также вручную отключил его экземпляр. Я знаю, что CloudFormation не восстанавливает его, как AutoScalingGroup, но я ожидал, что он будет воссоздан, когда я запустил aws cloudformation update-stack.

Вместо этого я получаю сообщение об ошибке: AWS::EC2::Instance DnsServer1 i-014eee8720c4fb542 does not exist.

Полный журнал обновлений:

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

Что я могу сделать, чтобы CloudFormation воссоздала этот ресурс, кроме удаления стека и его воссоздания?

Самый простой способ - дать экземпляру EC2 другое имя ресурса и обновить стек. Cloudformation интерпретирует это, когда вы создаете совершенно новый экземпляр и создаете его.

Другой альтернативой является изменение значения конфигурации, которое вызывает создание нового экземпляра, например изменение подсети экземпляра.

Я столкнулся с аналогичной проблемой, связанной с уникальным идентификатором, эта ссылка помогла мне решить проблему.

https://aws.amazon.com/premiumsupport/knowledge-center/failing-stack-updates-deleted/