CloudFormationの高度な機能 StackSets・ネストスタック・カスタムリソース・変更セットを使いこなす
DOP-C02では、CloudFormationを「テンプレートを書ける」レベルから「組織規模で安全に運用できる」レベルへ引き上げる機能が問われます。似た名前で混同しやすい4つの機能を、解決する課題ごとに整理します。
覚え方は「広げる・分ける・補う・確かめる」の4つ
広げる=複数アカウント・リージョンへ同じスタックを展開するStackSets、分ける=大きなテンプレートを部品化するネストスタックとモジュール、補う=CloudFormationが対応していない処理を追加するカスタムリソース、確かめる=適用前に影響を見る変更セット、と課題で覚えます。
StackSets:組織全体へ一括展開
StackSetsは1つのテンプレートを複数アカウントの複数リージョンへ展開し、管理アカウント(または委任管理者)から一元管理します。サービスマネージド型のアクセス許可を使うとOrganizationsのOUを対象に指定でき、自動デプロイを有効にすれば新しく加入したアカウントにも自動で展開されます。「全アカウントにCloudTrailやConfigの基盤を配り、新規アカウントにも自動適用する」という要件はこれです。展開の同時実行数と障害許容数を指定して段階的に配れる点も試験ポイントです。
ネストスタックとモジュール:テンプレートを部品化する
ネストスタックはAWS::CloudFormation::Stackリソースで子テンプレートを呼び出し、ネットワーク・データベース・アプリケーションのような層ごとに分割します。親スタックを更新すると子も含めて一括で更新・ロールバックされます。「テンプレートがサイズ上限に達した」「共通部分を再利用したい」ときの定番です。似た用途にモジュール(CloudFormation Registry)があり、こちらは部品を親テンプレートに展開して1つのスタックとして扱う点が異なります。スタック間で値を渡すにはExportとImportValueを使いますが、参照されている値は削除できない制約があります。
カスタムリソースで足りない処理を補う
カスタムリソースはLambda関数(またはSNSトピック)を呼び出して、CloudFormationが未対応のリソース作成や外部APIの呼び出し、作成時の初期データ投入などを行います。「スタック作成時にS3バケットへ初期ファイルをコピーしたい」「スタック削除時にバケットを空にしたい」という要件が典型です。Lambdaは処理結果を必ずレスポンスURLへ返さなければならず、返し忘れるとスタックがタイムアウトまで固まる点が頻出です。
| 機能 | 解決する課題 | 典型要件 |
|---|---|---|
| StackSets | 複数アカウント・リージョンへの展開 | ガードレールの全社配布、新規アカウントへの自動適用 |
| ネストスタック | テンプレートの部品化と再利用 | サイズ上限、層ごとの分割 |
| カスタムリソース | 未対応の処理を追加 | 初期データ投入、外部システム連携 |
| 変更セット | 適用前の影響確認 | 置換されるリソースの事前確認 |
変更セットで置換を事前に見抜く
変更セットは更新を適用する前に、追加・変更・削除されるリソースと、変更が「中断なし」「一時中断」「置換」のどれかを表示します。置換はリソースの再作成を意味し、データベースなら物理IDが変わってデータが失われるため、本番環境では変更セットの確認をパイプラインの承認ステップに組み込むのが定石です。
チェックリスト
- ARRAY(0xa00043070)
まとめ
CloudFormationの高度機能は「広げる・分ける・補う・確かめる」の4つの課題に対応します。要件文がどの課題を指しているかを見極めましょう。 理解度の確認にはクイズが便利です。試験範囲や申し込みの最新情報はAWS認定 公式ページもあわせて確認してください。
DOP(DevOpsエンジニア) におすすめの教材
AWS認定 DevOpsエンジニア − プロフェッショナル DOP-C02 出題予想問題集 第2版
AWS認定 DevOpsエンジニア − プロフェッショナル DOP-C02 練習問題集
AWS認定DOP(DOP-C02)実践問題集(全範囲・225問)
AWS認定DOP 演習テスト(日本語)
本セクションにはAmazonアソシエイト・Udemyアフィリエイトのリンクが含まれます。