web-dev-qa-db-ja.com

手動で削除したリソースをAWS CloudFormationに再作成するにはどうすればよいですか?

現在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にこのリソースを再作成させるにはどうすればよいですか?

6
gregmac

最も簡単な方法は、EC2インスタンスに別のリソース名を付け、スタックを更新することです。 Cloudformationは、完全に新しいインスタンスを作成してそれを作成すると、それを解釈します。

別の代替方法は、インスタンスのサブネットの変更など、新しいインスタンスの作成を強制する構成値を変更することです。

2
Peter Dolberg

一意のIDに関連する同様の問題に直面しましたが、このリンクは問題の解決に役立ちました。

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

0
hebbar10