Amazon Web Services ブログ
タイムラインビューで AWS CloudFormation のデプロイの内部を覗く
AWS CloudFormation を利用することで、クラウドアプリケーションのインフラストラクチャをコードとしてモデル化してプロビジョニングすることが容易になります。
CloudFormation テンプレートは直接 JSON または YAML で記述できるだけでなく、AWS Cloud Development Kit (CDK) などのツールで生成することもできます。これらのテンプレートが CloudFormation サービスにサブミットされると、リソースはスタックという単位でまとめられ、依存関係を反映した順序でデプロイされます。スタックイベントの詳細は コンソール 上で表形式で確認できます。
そしてこの度、より視覚的で直感的なイベントのビューを提供する deployment timeline view という新機能が登場しました。この機能はスタック操作で CloudFormation が実行した一連のアクションを視覚化します。この機能が提供する視覚的なタイムラインは、リソースがプロビジョニングされた正確な順序、リソース間の依存関係、プロビジョニングにかかった時間を示します。デプロイが失敗した際は根本原因と考えられる箇所を示します。デプロイの舞台裏で起きていることについての追加コンテキストと可視性を提供することで既存の表形式のビューを補完します。
図 1: CloudFormation deployment timeline view の機能の概要
どのように動作するか
新機能の deployment timeline view を利用するために必要なのは、スタックの作成、更新、削除の操作だけです。AWS CloudFormation コンソールで Events タブを選択し、Table view の横にある Timeline view タブをクリックします。
CloudFormation がテンプレートで定義されたリソースのプロビジョニングを開始すると、各リソース操作がタイムラインビューで棒線として表示されます。
リソースは、最新の操作があったリソースが一番上になるように時系列順に垂直に積み上げらます。各リソースアクションは、それぞれのアクションに応じて色分けされた水平の棒で視覚化されます。
ダークモードではロールバック中とロールバック完了のスイッチの色が切り替わる
バーの上にカーソルを移動させると、完全なリソース名やリソース操作の開始/終了時刻など詳細な情報が表示されます。
デプロイが失敗した場合は、CloudFormation は失敗の原因と考えられるリソース操作のバーを赤白の縞模様で強調表示します。このバーにカーソルを移動すると、具体的な失敗理由が表示されます。
シンプルなスタックを作成する
CloudFormation コンソールを使用してシンプルなスタックを作成します。デプロイを開始して視覚的なタイムラインビューを確認します。
1. CloudFormation コンソールから、 Create stack をクリックし、 with new resources を選択します。
図 2: CloudFormation コンソールの create stack ボタン
2. スタック作成ウィザードで Choose an existing template をクリックし Upload a template file を選択します。Choose file をクリックしデプロイするスタックのテンプレートファイルを選択してアップロードします。この記事では、こちら で提供されているテンプレートを使用します。このテンプレートをダウンロードして使用するほかに、独自のテンプレートを使用することもできます。独自のテンプレートを使用した場合はタイムラインビューの内容がこの記事とは異なるものになります。
(翻訳者補足: ここで紹介されているテンプレートはオレゴンリージョンでのみデプロイに成功します)
図 3: CloudFormation コンソールの スタック作成ウィザード
アプリケーションスタックには、Amazon EC2 インスタンス (AWS::EC2::Instance)、Amazon VPC (AWS::EC2::VPC)、およびサブネット (AWS::EC2::Subnet) やインターネットゲートウェイ (AWS::EC2::InternetGateway) などの VPC リソースが含まれています。
3. テンプレートをアップロードしたら Next をクリックし、必要に応じてスタック名とパラメータを入力します。
スタックデプロイの後続の手順を完了させ、スタックの作成を開始します。
4. スタックイベントページで、Table view の横の Timeline view タブをクリックします。
CloudFormation が最初に VPC、その後でサブネット、最後に EC2 インスタンスをプロビジョニングしていく間の進捗状況をリアルタイムで確認できます。
図 4: CloudFormation が実行中のデプロイのタイムラインビュー
5. タイムラインは 5 秒ごとに表示をリフレッシュし、デプロイの進捗状況を更新します。5 秒後、次のようなタイムラインビューが表示されます。
図 5: 5 秒後に更新されたタイムライン
図 6: 完了したデプロイのタイムラインビュー
上のタイムラインでは、CloudFormation によってプロビジョニングされたリソースを表すバーが下から上に向かって並び、それぞれのリソース操作が発生した順序やリソース間の依存関係を読み取ることができます。
バーは操作の進行にともなって青 (進行中)、黄 (整合性チェック中)、緑 (成功)または赤 (失敗) に変化します。
図 7: リソース詳細ポップオーバー
いずれかのバーにカーソルを置くと、各デプロイフェーズの開始/終了時間や完全なリソース名などの詳細が表示されます。グラフのポップオーバーに表示される詳細情報から、CloudFormation が InternetGateway リソースを 2 秒で作成し、その後 15 秒待機してリソースが完全に動作しているかどうかを確認してから完了としてマークしたことを読み取ることができます。このフェーズをリソース整合性チェックフェーズ (resource consistency check phase)、またはリソース安定化フェーズ (resource stabilization phase) と呼びます。これによって CloudFormation をはじめとする Infrastructure as Code (IaC) ツールは復元力のあるデプロイメントを確かなものにすることができます。詳しくは CloudFormation optimistic stabilization strategy の記事 (日本語翻訳版はこちら) をお読みください。
ロールバック完了状態のスタック
スタックのデプロイが失敗した場合、CloudFormation は現在のスタック操作の前の安定した状態にロールバックします。
以下のタイムラインビューでは、失敗したスタック操作が完全にロールバックされた状態で表示されています。
赤と白の縞模様で強調表示されているリソースが根本原因である可能性が高いので、すぐにトラブルシューティングを開始できます。
図 8: ロールバック完了状態のスタックのタイムラインビュー
まとめ
新機能の CloudFormation deployment timeline view では、CloudFormation が Infrastructure as Code のテンプレートで定義されたリソースをプロビジョニングする際のオーケストレーションフローと依存関係を可視化できるようになりました。
この視覚的なタイムラインビューを活用することで、デプロイメントの失敗の根本原因を素早く特定したり、プロビジョニングプロセスの理解を深めることができます。
この機能は、現在 CloudFormation がサポートされているすべての AWS リージョンで利用可能です。
ぜひ CloudFormation コンソールにアクセスし deployment timeline view を使ってみてください。
著者紹介:
本記事は 2024/11/11 に投稿された Peek inside your AWS CloudFormation Deployments with timeline view を翻訳したものです。翻訳は Solutions Architect : 国兼 周平 (Shuhei Kunikane) が担当しました。