はじめに
Udemy にて Stephane Maarek 氏 が提供している「 AWS CloudFormation Master Class 」コースについて紹介していきます。最後の内容は「 Drift 」や「 Nested Stacks 」など CloudFormation のその他のサービスについて紹介していきます。
- これまでの AWS CloudFormation Master Class の記事
- その①「 CloudFormation について 」
- その②「 CFnを利用したS3環境の構築 」
- その③「 CloudFormation Designer でテンプレートの作成 」
- その④「 Parameters について 」
- その⑤「 Resources と Mappings について 」
- その⑥「 Conditions・Metadata・Init について 」
CloudFormation Drift
CloudFormation はインフラを構築してくれますが、update などで変更が起きた際の乖離(ドリフト)に対する サポートはCloudFormation にはありません。

このような問題に対応してくれるのが、CloudFormation drift です。この機能でドリフトを検出することで、スタックの設定がテンプレートの設定と異なっているかを確認できます。
※ただし、全てのリソースに対してはまだ対応できてないです。
Nested Stacks
Nested Stacks とは
Nested Stacks とは、他の stacks の一部として作成された stack のことです。

以下のような特徴があります。
- 繰り返しパターンや、一般的な構成スタックを個別に作成し、他スタックからの呼び出しが可能
- nested stack のアップデートには root stack のアップデートが必要
- nested stack に対して nested stack を用意することも可能
Nested Stacks update and delete
Nested Stacks のアップデートと削除の際には、以下の点にそれぞれ注意する必要があります。
- Nested Stacks Update
- アップデートされた nested stacks は 最初に S3 にアップロードする必要がある
- その後、root stack もアップロードする
- Nested Stacks delete
- 子 stack に対して削除や変更の設定を直接行ってはいけない
- 常に、上層にある stack から変更させる必要がある
Troposphere
Troposphere を利用することで CloudFormation のテンプレートを Python で作成することができます。

-
メリット
-
テンプレートの type から始めることができる
-
複雑な環境でも生成が可能
-
デメリット
-
Python、JSON、そしてアップロードといった手順が必要
-
Python について理解しておく必要がある
Deletion Policy
Deletion Policy を利用することで、リソースを削除から保護したり、削除前にバックアップを取ったりすることができます。

Deletion Policy の種類とそれぞれの特徴は以下となります。
- Delete:AWS CloudFormation の全リソースとコンテンツの削除を実行
- Retain:スタックの削除が実行された際、リソースやコンテンツは保持する
- Snapshot:リソースの削除前に snapshot を作成する
その他
- Custom resource
- テンプレートにカスタムのプロビジョニングロジックを記述し、ユーザーがスタックの作成、アップデート、そして削除を実行する度に AWS CloudFormation がそれを実行
- Lambda 関数を使うことで、プロビジョニングすることが可能
おわりに
AWS CloudFormation Master Class についての主な説明は以上となります。全体を通して、CloudFormation の機能とその使い方について説明してまいりました。日々の業務で活用し、そして実践することで、より本サービスについての理解を深めて参りましょう。
