我现在正在试验CloudFormation。 我部署了一个包含AutoScalingGroup(和LaunchConfig和CloudFormation :: Init),LoadBalancer,单个EC2实例(和CloudFormation :: Init)以及一对安全组的堆栈。
如果我终止由AutoScalingGroup创build的EC2实例,它们将按照预期重新创build。 这对于testing对LaunchConfiguration和CloudFormation :: Init设置的改变(基本上确保它从头开始工作)非常有用。
我也有一个EC2实例(名为DnsServer1 )具有公共IP。 在处理CloudFormation :: Init数据时,我也手动终止了它的实例。 我知道CloudFormation不像AutoScalingGroup那样恢复它,但是当我运行aws cloudformation update-stack时,我期待它会被重新创build。
相反,我收到错误: 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重新创build这个资源,而不是删除堆栈并重新创build它?
最简单的方法是给EC2实例一个不同的资源名称并更新堆栈。 在您创build一个全新的实例并创build它的过程中,Cloudformation将解释这一点。
另一种方法是更改强制创build新实例的configuration值,例如更改实例的子网。