Amazon Web Services ブログ
AWS Systems Manager を使用した AWS CloudFormation テンプレートとスタックの管理
AWS CloudFormation は、インフラストラクチャをコードとして管理し、自動化するために有効なサービスです。これまでお客様は、Amazon Simple Storage Service(Amazon S3)またはバージョン管理システムを使用して、CloudFormation テンプレートをコードアーティファクトとして保存、共有、および管理していました。さらに、ガバナンスをきかせながら CloudFormation テンプレートに基づいたデプロイを行いたいお客様は、AWS Service Catalog を使用しています。2021年7月、AWS Systems Manager の機能である Application Manager のテンプレートライブラリのリリースを発表しました。テンプレートライブラリを使用すると、コンソールを介して CloudFormation テンプレートの作成、保存、バージョン管理、検証、共有、およびプロビジョニングが簡単に出来ます。この機能を使用して、Systems Manager コンソールでアプリケーションまたはアプリケーションコンポーネントのテンプレートを管理可能です。追加のセットアップやオンボーディングの要件なしで、すべてのAWSのお客様が利用できます。
Application Manager におけるアプリケーションとは、単一のユニットとして表示及び管理する AWS リソースの論理グループを表します。通常、これらのリソースグループは、それぞれアプリケーションまたはアプリケーションのコンポーネントを表します。このブログ記事では、CloudFormation を使用した Application Manager アプリケーションの機能例を紹介します。このアプリケーションは、一般的な Jenkins ビルドサーバーをデプロイします。多くの開発チームは、Jenkins を主要なビルドおよびデプロイメント手段として選択しています。また、多くの場合、1 つの会社内において、複数のチームが独自の Jenkins デプロイメントを持っています。企業は、ベストプラクティスに従って Jenkins を設定する単一の CloudFormation テンプレートを作成することで、プロセスを合理化および統合できます。このテンプレートはテンプレートライブラリに簡単に保存でき、組織全体の Jenkins デプロイメントのプロビジョニングと更新に使用できます。
テンプレートライブラリ入門
この記事では、コンソールを使用した CloudFormation テンプレートの作成と管理にフォーカスします。まず、テンプレートライブラリを使用して、Jenkins のデプロイに必要なリソースを作成する CloudFormation テンプレートを作成します。コンソール、AWS CLI、または SDK を使用して、テンプレートを管理できます。

図1. テンプレートライブラリ
[テンプレートライブラリ] ページには、[Amazonが所有]、[自己所有]、[Shared with me]、[すべてのテンプレート] タブが表示されます。[Amazonが所有] を選択すると、AWS クイックスタート および AWS ソリューションとして AWS によって発行されたテンプレートが表示されます。

図2. [Amazonが所有]タブ
最初のテンプレートの作成
[自己所有] タブを選択し、[テンプレートを作成] をクリックします。

図3. テンプレートの作成
[テンプレートを作成] ページで、テンプレートの名前 (例: JenkinsTemplate
) とオプションでバージョン名 (例: Testversion
) を入力します。コードエディターで、[YAML] または [JSON] を選択し、テンプレートのコンテンツを入力します。

図4. テンプレート詳細
CloudFormation スタックのプロビジョニング
Jenkins デプロイ用の CloudFormation テンプレートを作成したら、[アクション] から [スタックをプロビジョニング] を選択して Jenkins をプロビジョニングします。

図5. スタックのプロビジョニング
[スタックの詳細を編集] で、[スタック名] セクションにて [新しいスタックを作成] を選択し、JenkinsStack-DevTeam-A
と入力します。[パラメータ] で、図に示すようにフィールドに入力し、[次へ] を選択します。

図6. スタックの詳細の編集
[確認とプロビジョニング] で [スタックをプロビジョニング] を選択します。

図7. 確認とプロビジョニング
テンプレートの詳細ページで、[プロビジョニング] タブを選択します。[イベントのプロビジョニング] の下に、ステータスとその他の詳細が表示されます。

図8. JenkinsStack-DevTeam-A
Jenkins のデプロイが完了したら、Application Manager ダッシュボードを使用して、デプロイに関するオペレーションデータ (デプロイステータス、Amazon CloudWatch アラーム、リソース設定、運用上の問題など) を表示します。必要な場合は修復アクションも実行できます。

図9. Application Manager ダッシュボード
バージョン管理と追加デプロイ
この時点で、Jenkins テンプレートの 1 つのバージョン (デフォルトバージョン) と、そのテンプレートを使用する 1 つのデプロイ済みスタックがあります。同じテンプレートを複数の CloudFormation スタックにデプロイする場合は、この手順をもう一度実行して、同じテンプレートを選択します。Jenkins デプロイメントにさらにリソースを追加する必要がある場合は、テンプレートを拡張し、必要なリソースを含む新しいバージョンを作成します。
[テンプレートライブラリ] ページで、[自己所有] を選択し、次に JenkinsTemplate を選択します。[アクション]から、[編集]を選択します。

図10. [自己所有]タブ

図11. JenkinsTemplate の Version2
テンプレートのバージョンを並べて比較するには、[バージョンを比較] を選択します。

図12. バージョンの比較
この時点で、更新されたテンプレートを使用して別のスタックをプロビジョニングできます。更新されたテンプレートが期待どおりに動作していることを確認したら、現在のバージョンをデフォルトとして設定できます。テンプレートを表示すると、異なるバージョンのテンプレートを使用してデプロイされたスタックも表示できます。

図13. JenkinsTemplate
結論
テンプレートライブラリの機能により、Application Manager から CloudFormation スタックベースのアプリケーションを管理できるようになりました。これにより、アプリケーション管理プロセスが簡素化され、IT チームは注力すべき業務に集中しやすくなります。
著者について
![]() |
Kapil Shardha Kapil Shardha は AWS のプリンシパルソリューションアーキテクトで、エンタープライズのお客様をサポートしています。彼はインフラストラクチャの自動化と DevOps のバックグラウンドを持っています。 |
![]() |
Jan Thomas Jan Thomas は AWS のテクニカルプロダクトマネージャーで、ドイツのベルリンを拠点としています。AWS Systems Manager と AWS OpsWorks に携わり、AWS のお客様の管理と運用のエクスペリエンスを向上させています。 |
翻訳は SA 石橋が対応しました。原文はこちら。