AWS CloudFormationの最近の変更
AWS CloudFormationでは2023年末から2024年6月にかけて多くの改善・機能追加がありました。
特に下記は「三大変更点」と呼んでもいいかなと思います。
- Gitと同期(Git Sync) (2023/11)
- IaCジェネレーター (2024/02)
- オンラインエディタをデザイナーからApplication Clomposerへ変更 (2024/03)
また、『最近CloudFormationのデプロイが早くなった気がする』とか思っている人も多いと思います。下記の変更がアナウンスされています。
4 スタック作成を高速化 (2024/04)
スタックセットでも地道に変更があり、オプションが追加されています。
5 スタックセットで「同時実行モード」オプション追加 (2023/11)
他にも変更はありますが、CloudFormation色々変わったな、という方も上記を押さえておけば不安なく利用できると思います。
ということでこの5つの変更点をざっくり説明します。
続編 AWS CloudFormationの最近の変更点 その2 を公開しました。
その2には「基本変わらないけどもちょっと便利になった変更箇所」を記載しています。
変更点の説明
1. Gitと同期(Git Sync) (2023/11)
Gitリポジトリと連携する機能が提供されました。Gitリポジトリでテンプレートファイルを管理します。
テンプレート更新時は自動でCloudFormationのスタックを更新します。
新規スタック作成時に設定も可能な他、既存のスタックをGitと同期させることも可能です。
Gitとの同期には「デベロッパー用ツール」の「接続(Connections)」機能を利用します。
Gitと同期を利用する時は先に「接続」の設定が必要です。
Gitリポジトリで管理するスタックの情報は「デプロイファイル」にまとめられています。
template-file-path: 2-14-3-VPCEndPoints.yaml
parameters:
mySecurityGroups: sg-0cf73bd245c9ff853
myVPC: vpc-07d4bc315ce093c6d
S3Interface: Yes
S3InterfaceRouteTable: rtb-0ffd23f96afd0915c
tags:
sampleTag: sample-sync
デプロイファイルはGitと同期を設定するウィザード中で作成することも、手動で作成して利用も可能です。
(出典: 詳解 AWS CloudFormation)
CloudFormationはGit側の更新検知し、変更セットの作成と実行を自動で開始します。
なおリリース当初は「接続」のarnサービス名は codestar-connectionsでしたが、2024/05よりcodeconnectionsに変更されました。(本には間に合わずcodestar-connectionsで記載しています。)
2. IaCジェネレーター (2024/02)
既存のAWSリソースからテンプレートを作成する機能が新しく提供されました。
作成したテンプレートは「IaC ジェネレーター」から表示できます。
またインポート機能も提供されており、CloudFormation以外で作成・設定したリソースをCloudFormationのスタックに取り込むインポート操作が簡単になりました。
IaCジェネレーターの利用には最初に「新しいスキャンを開始」の実行が必要です。
テンプレートは「テンプレートを作成」ボタンから作成します。
途中でスキャンしたリソースが一覧で表示されます。選択するとそのリソースを基にテンプレートを作成します。
インポート機能を使うと、テンプレート作成時に選択した既存リソースをインポートすることができます。
IaCジェネレータのテンプレート詳細画面「スタックにインポート」ボタンから開始します。
インポートには変更セットを使用しています。
IaCジェネレータでテンプレートを作成・インポート可能なリソースタイプは下記に公開されています。
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/generate-IaC-supported-resources.html
3. オンラインエディタをデザイナーからApplication Clomposerへ変更(2024/03)
Application Composerはテンプレートファイルを作成・編集する機能です。
キャンパスビューとテンプレートビューで表示できます。
テンプレートビューはテンプレートをテキストで表示・更新できます。
Application Composerは元々AWS SAMテンプレートファイルを作成するツールとして提供されていました。
2024年3月より「CloudFormationコンソールモード 」が追加され、CloudFormationスタック作成・更新のウィザードと連携が可能となりました。
以前は下図の「デザイナー」が連携されていました。
Application Composerは単独で起動できるほか、スタックの作成ウィザードなどからも利用可能です。
以前のデザイナーも同様に利用することができました。下記は以前の画面です。
Application Composerは「CloudFormationコンソールモード」リリース後の2024年5月にも更新があり、「検証」ボタンの追加やテンプレート保存先バケット指定の改善が行われています。(本には間に合わずリリース初期画面で説明)
4. スタック作成を高速化 (2024/03)
2024/03の変更でスタック内の複数リソース間で依存がある時、結果整合性チェック(Eventual consistency check)完了を待たずに依存するリソースの作成を開始するようになりました。
これによりスタック作成・更新の完了が最大40%速くなると説明されています。(但し失敗時は、逆に待ち時間が長くなる可能性があります。)
これとは別に、テンプレートのチェックも改善され、最初のリソースを作成する前に検証し、無効な設定がある場合は作成前にエラーメッセージで終了するように変更されました。
どちらも操作に変更はありません。
また2024/04にWebマネジメントコンソールにも変更が入り、スタックのイベントタブに「詳細ステータス」項目が追加 されました。
詳細ステータスにはCONFIGURATION_COMPLETEが表示されます。
なお、CONFIGURATION_COMPLETEは必ず表示されるわけではありません。
表示された場合は、結果整合性チェック完了を待たず依存するリソースを作成開始することを表しているようです。
(参考:変更前のイベントタブ。「詳細ステータス」欄がありません)
5.スタックセットで「同時実行モード」オプション追加 (2023/11)
スタックではなくて、スタックセットの変更です。
スタックセットのデプロイオプションに「同時実行モード」オプションが追加されました。
「厳格な耐障害性」か「ソフト障害耐性」が選択できます。
デフォルトは厳格な耐障害性です。
「厳格な耐障害性」を選ぶと、「同時アカウントの最大数」か「障害耐性 +1」の小さい方の数でデプロイを開始し、失敗が発生すると動的に同時に実行するデプロイ数を減らします。
「ソフト障害耐性」は「同時アカウントの最大数」で開始し、同時実行数は変更しません。
関連本の説明
マイナビ出版様から「CloudFormationの辞書として使える本」を目指して「詳解 AWS CloudFormation」を出版しました。
6月に出版だったため、ぎりぎりまで原稿を修正することになりましたが、4月の変更までは反映できています。
5月以降の変更で、本に反映できなかったものは下記などがあります。
- DeleteStack APIにDeletionModeの追加 (2024/05)
- AWS CloudTrail 統合 (2024/05)
- スタックの作成・更新ウィザードのエラー表示変更 (2024/06?)
こちらは後日説明するつもりです。 AWS CloudFormationの最近の変更点 その2に併せて記載しました。