CloudFormation に関するよくある質問をまとめてみました
弊社メンバーズサービスのテクニカルサポートへのお問い合わせの中で、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 へフィードバック可能です。
誤検知かどうかの調査希望の場合には弊社サポート窓口へお問い合わせください。
スタックのドリフトを解消することはできますか?
はい、以下の弊社ブログに記載されている方法で解消できます。
- テンプレートをリソースに一致するように変更する
- リソースをテンプレートに一致するように変更する
- 一度テンプレートからリソースを切り離してスタックドリフトを解消し、再度、インポートする
インポートについてはドキュメントにも記載されているので、あわせてご参照ください。
スタック更新時にスタック内のリソースが置換されるかどうかなどを把握する方法はありますか?
はい、変更セットを作成することでスタック更新時の影響を確認することができます。
変更セットは、スタックの変更案が実行中のリソースに与える影響を、実装前に確認できるようにします。
CloudFormation の各リソースタイプのプロパティには Update requires が記載されており、プロパティごとの更新動作が決まっています。
Update requires の動作についてもドキュメントに記載されているため、あわせてご確認ください。
CloudFormation に関する既知の事象を確認できる公式サイトはありますか?
はい、CloudFormation に関する GitHub リポジトリである cloudformation-coverage-roadmap をご確認ください。
また、CloudFormation に関連する CDK や SAM CLI のリポジトリもあるため、ツールごとに確認することも可能です。
CloudFormation でサポートされていないリソースをカスタムリソースで作成することはできますか?
はい、カスタムリソースを使用することで任意の処理を実行できるため、CloudFormation でサポートされていないリソースを作成することもできます。
カスタムリソースを使用してカスタムプロビジョニングロジックを作成する
弊社ブログでは Lambda を使用する方法が紹介されておりますのでご参照ください。
DELETE_FAILED のスタックを削除することはできますか?
はい、削除できないリソースを保持する設定にすることでスタックの削除が可能です。
具体的な手順については以下の AWS ナレッジセンターでも紹介されていますので、手順に沿ってスタックの削除をお試しください。
DELETE_FAILED ステータスのままになっている AWS CloudFormation スタックを削除するにはどうすればよいですか?
まとめ
今回は CloudFormation に関するよくある質問をまとめてみました。
本ブログが参考になれば幸いです。
参考資料
- サポートエンジニアがよく見る AWS Lambda についてのお悩み事 - builders.flash☆ - 変化を求めるデベロッパーを応援するウェブマガジン | AWS
- AWS CloudFormation のベストプラクティス - AWS CloudFormation
- リソースタグ - AWS CloudFormation
- ベストプラクティスと戦略 - AWS リソースとタグエディタのタグ付け
- ドリフト検出を使用してスタックとリソースへのアンマネージド型設定変更を検出する - AWS CloudFormation
- リソースタイプのサポート - AWS CloudFormation
- AWS CDK/CloudFormation、リソースを変更せずにスタックドリフトを解消する | DevelopersIO
- インポートオペレーションでドリフトを解決する - AWS CloudFormation
- スタックリソースの更新動作を理解する - AWS CloudFormation
- GitHub - aws-cloudformation/cloudformation-coverage-roadmap: The AWS CloudFormation Public Coverage Roadmap
- GitHub - aws/aws-cdk: The AWS Cloud Development Kit is a framework for defining cloud infrastructure in code
- GitHub - aws/aws-sam-cli: CLI tool to build, test, debug, and deploy Serverless applications using AWS SAM
- カスタムリソースを使用してカスタムプロビジョニングロジックを作成する - AWS CloudFormation
- CloudFormationで提供されていない処理をカスタムリソースで作ってみた。 | DevelopersIO
- DELETE_FAILED ステータスのままになっている AWS CloudFormation スタックの削除 | AWS re:Post
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。