手動で削除したリソースが原因で失敗している CloudFormation スタックを更新するにはどうすればよいですか?
最終更新日: 2021 年 8 月 23 日
AWS CloudFormation スタックのうちのひとつによって作成されたリソースを手動で削除したのですが、スタックが更新されなくなりました。
簡単な説明
CloudFormation スタックによって作成されたリソースを削除すると、スタックの更新に失敗し、エラーメッセージが表示されます。
リソースタイプに応じて、次の解決方法のいずれかを選択してください。
- 固有の名前でリソースを更新する
- 固有の ID でリソースを更新する
解決方法
固有の名前でリソースを更新する
削除されたリソースが固有の名前をサポートしている場合は、リソースを手動で作成してスタックを更新できます。ただし、新しいリソースには削除されたリソースと同じ名前をつける必要があります。例えば、リソース名を変更するときに CloudFormation によるリソースの処理方法に影響を与える可能性があります。これは、AWS Identity and Access Management (IAM) ロールは名前で追跡されるためです。IAM ロールを誤って削除してしまった場合は、同じ名前のロールを手動で再作成できます。
IAM ロールまたはその他のリソースを固有の名前で更新するには、次の手順を実行します。
- AWS CloudFormation コンソールを開きます。
- スタックを選択してから、[リソース] ビューを選択します。
- 物理 ID 列で、新しい IAM ロールに置き換えたい IAM ロールの物理 ID を探します。
注意: 物理 ID とはリソースの名前のことです。 - 新しい IAM ロールを作成した後、ステップ 3 で見つけたものと同じ物理 ID を新しいロールに付与します。
- スタックを更新します。
注意: 詳細については、スタックテンプレートの変更を参照してください。
固有の ID でリソースを更新する
ルートテーブルなどのリソースを固有の ID で再作成することはできません。代わりに、リソースとそのリソースへのリファレンスを CloudFormation テンプレートから削除する必要があります。
注: 次の解決方法は、固有の名前または一意の ID をサポートしないリソースでも機能します。例えば、ホストゾーン内のレコードセットなどです。
CloudFormation が、ルートテーブルまたは他のリソースを固有の ID で再作成できるようにするには、以下の手順を実行してください。
- CloudFormation テンプレートで、ルートテーブルとそのルートテーブルに対するリファレンスを削除します。
- スタックを更新します。
注意: CloudFormation はルートテーブルの削除を試みます。リソースは既に削除されているため、CloudFormation は削除を成功したオペレーションと見なします。 - ルートテーブルと、必要な追加のリソースまたはリファレンスを CloudFormation テンプレートに追加しなおします。
- もう一度スタックを更新します。
注意: CloudFormation は、削除したリソースを再作成します。