現在CloudFormationを実験しています。 AutoScalingGroup(およびLaunchConfigおよびCloudFormation :: Init)、LoadBalancer、単一のEC2インスタンス(およびCloudFormation :: Init)、およびいくつかのセキュリティグループを含むスタックをデプロイしました。
AutoScalingGroupによって作成されたEC2インスタンスを終了すると、期待どおりに再作成されます。これは実際に、LaunchConfigurationおよびCloudFormation :: Init設定への変更をテストするのに非常に役立ちます(基本的に、最初から機能することを確認します)。
また、パブリックIPを持つEC2インスタンス(DnsServer1
という名前)もあります。 CloudFormation :: Initデータの操作中に、インスタンスを手動で終了しました。 CloudFormationがAutoScalingGroupのようにそれを復元しないことは知っていますが、aws cloudformation update-stack
を実行したときにCloudFormationが再作成されることを期待していました。
代わりに、エラー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は、完全に新しいインスタンスを作成してそれを作成すると、それを解釈します。
別の代替方法は、インスタンスのサブネットの変更など、新しいインスタンスの作成を強制する構成値を変更することです。
一意のIDに関連する同様の問題に直面しましたが、このリンクは問題の解決に役立ちました。
https://aws.Amazon.com/premiumsupport/knowledge-center/failing-stack-updates-deleted/