CloudFormation に関するよくある質問をまとめてみました

CloudFormation に関するよくある質問をまとめてみました

Clock Icon2024.12.17

弊社メンバーズサービスのテクニカルサポートへのお問い合わせの中で、CloudFormation に関するよくある質問をまとめてみました。

CloudFormation で作成したリソースを手動で変更してもいいですか?

いいえ、CloudFormation で作成したリソースは CloudFormation から変更することがベストプラクティスであるため、CloudFormation 以外の方法で変更しないでください。

AWS CloudFormation ですべてのスタックリソースを管理する

スタックのリソースを CloudFormation 以外の方法で変更しないでください。変更するとスタックのテンプレートとスタックリソースの現在の状態の間で不一致が起こり、スタックの更新または削除でエラーが発生する場合があります。

CloudFormation から作成されたリソースであるかどうかを判別する方法はありますか?

はい、CloudFormation から作成されたリソースには以下のタグが自動的に付与されますので、以下のタグが付与されていれば CloudFormation から作成されたリソースであると判別できます。

  • aws:cloudformation:logical-id
  • aws:cloudformation:stack-id
  • aws:cloudformation:stack-name

リソースタグ

ユーザーが定義する任意のタグに加えて、CloudFormation はプレフィックス aws: が付いた次のようなスタックレベルのタグを自動的に作成します。

  • aws:cloudformation:logical-id
  • aws:cloudformation:stack-id
  • aws:cloudformation:stack-name

なお、aws: で始まるタグは AWS 側で予約されているため編集や削除はできません。

タグの命名制限と要件

aws: プレフィックスで始まるタグを編集または削除することはできません。

スタックの更新前後で差分がなくてもドリフトが発生することはありますか?

はい、特定のエッジケースでは CloudFormation が正確なドリフト結果を返すことができない場合があります。
また、ドリフトの検出をサポートしていないリソースもあります。

ドリフトを検出する際の考慮事項

特定のエッジケースでは、CloudFormation が正確なドリフト結果を返すことができない場合があります。

リソースタイプのサポート

誤検知が疑われる場合には CloudFormation コンソールのフィードバックリンクから AWS へフィードバック可能です。
誤検知かどうかの調査希望の場合には弊社サポート窓口へお問い合わせください。

2024-12-14_16h49_10

スタックのドリフトを解消することはできますか?

はい、以下の弊社ブログに記載されている方法で解消できます。
https://dev.classmethod.jp/articles/fix-stack-drift/

  • テンプレートをリソースに一致するように変更する
  • リソースをテンプレートに一致するように変更する
  • 一度テンプレートからリソースを切り離してスタックドリフトを解消し、再度、インポートする

インポートについてはドキュメントにも記載されているので、あわせてご参照ください。

インポートオペレーションでドリフトを解決する

スタック更新時にスタック内のリソースが置換されるかどうかなどを把握する方法はありますか?

はい、変更セットを作成することでスタック更新時の影響を確認することができます。

スタックを更新する前に変更セットを作成する

変更セットは、スタックの変更案が実行中のリソースに与える影響を、実装前に確認できるようにします。

CloudFormation の各リソースタイプのプロパティには Update requires が記載されており、プロパティごとの更新動作が決まっています。
Update requires の動作についてもドキュメントに記載されているため、あわせてご確認ください。

スタックリソースの更新動作を理解する

CloudFormation に関する既知の事象を確認できる公式サイトはありますか?

はい、CloudFormation に関する GitHub リポジトリである cloudformation-coverage-roadmap をご確認ください。

また、CloudFormation に関連する CDK や SAM CLI のリポジトリもあるため、ツールごとに確認することも可能です。

CloudFormation でサポートされていないリソースをカスタムリソースで作成することはできますか?

はい、カスタムリソースを使用することで任意の処理を実行できるため、CloudFormation でサポートされていないリソースを作成することもできます。

カスタムリソースを使用してカスタムプロビジョニングロジックを作成する

弊社ブログでは Lambda を使用する方法が紹介されておりますのでご参照ください。

https://dev.classmethod.jp/articles/cfn-api-custom/

DELETE_FAILED のスタックを削除することはできますか?

はい、削除できないリソースを保持する設定にすることでスタックの削除が可能です。

具体的な手順については以下の AWS ナレッジセンターでも紹介されていますので、手順に沿ってスタックの削除をお試しください。

DELETE_FAILED ステータスのままになっている AWS CloudFormation スタックを削除するにはどうすればよいですか?

まとめ

今回は CloudFormation に関するよくある質問をまとめてみました。
本ブログが参考になれば幸いです。

参考資料

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.