Amazon Web Services ブログ

新機能 — AWS Proton は、テンプレートを管理するための Terraform および Git リポジトリをサポートします

2021 年 11 月 24 日(米国時間)、AWS Proton の 2 つの機能のリリースを発表します。1つ目は、AWS Proton オープンロードマップで最も要望の多かった、Terraform を使用してインフラストラクチャの定義とプロビジョニングを行うためのものです。 2 つ目は、Git リポジトリから AWS Proton テンプレートを直接管理する機能です。

AWS Proton は、re:Invent 2020 で発表された、コンテナおよびサーバーレスアプリケーション向けの完全に管理されたアプリケーション配信サービスです。AWS Protonは、インフラストラクチャーチームが、開発者の生産性に影響を与えることなく、インフラストラクチャーの自動化と管理を行えるようにすることを目的としています。これにより、開発者はプラットフォームチームを介さずに、アプリケーションの配信に必要なテンプレートを入手できます。

AWS Proton を使用する場合、インフラストラクチャチームは環境とサービステンプレートを定義する必要があります。テンプレートの詳細については、こちらをご覧ください。

テンプレートの同期
AWS Proton のこの新機能により、プラットフォームチームは Git リポジトリから直接テンプレートをプッシュ、更新、公開できます。これにより、新しいサービスまたは環境テンプレートを作成するときに、テンプレートを含むリモート Git リポジトリを指定できるようになりました。AWS Proton はこれらのテンプレートを自動的に同期し、使用できるようにします。Git リポジトリに変更があった場合、AWS Proton が更新作業に対応します。

環境テンプレートの作成

リポジトリを使用してテンプレートを同期することの重要な利点の 1 つは、管理者がテンプレートをアップロード、更新、登録するプロセスを簡略化できることです。このプロセスを手動で行うと、エラーが発生しやすく、不便な場合があります。これで、テンプレートの作成と更新のプロセスを自動化することができます。また、プルリクエストを使用して検証を追加したり、テンプレートに対する変更を追跡したりすることもできます。

テンプレートの同期により、プラットフォームチームと開発者間のコラボレーションが可能になります。すべてのテンプレートを Git リポジトリにまとめることで、GitHub などのプラットフォームで利用できるすべてのコラボレーションツールをすべての人が利用できるようになります。これで開発者は、すべてのテンプレートを見ることができ、改善したいときには、変更を加えたプルリクエストを作成するだけです。また、バグトラッカーや機能リクエストなどのツールを使用してテンプレートを管理することもできます。

リポジトリリンクの設定
テンプレートの同期を使用開始するには、AWS Proton にリポジトリへのアクセス許可を与える必要があります。そのためには、AWS Proton とリポジトリの間にリンクを作成する必要があります。

これを行うには、まず GitHub アカウント用の新しいソース接続を作成します。次に、AWS Proton から新しいリポジトリリンクを作成する必要があります。サイドバーの [リポジトリ] オプションに移動します。次に、[新しいリポジトリをリンク] 画面で、先ほど作成した GitHub 接続を使用して、リポジトリ名を指定します。

リンクリポジトリを新規作成

AWS ProtonがTerraformをサポート
これまで、AWS Proton で利用できるコードとしてのインフラストラクチャ (IaC) エンジンは、AWS CloudFormation だけでした。Terraform を使用して定義されたインフラストラクチャに基づいてサービステンプレートと環境テンプレートを定義し、プルリクエストベースのメカニズムを通じて 、Terraform を使用してインフラストラクチャをプロビジョニングし、最新の状態に保つことができます。

プラットフォームチームは、Terraform 言語の HCL で iAC テンプレートを作成し、Terraform オープンソースを使用してインフラストラクチャをプロビジョニングします。AWS Proton は、すぐにプロビジョニングできる Terraform モジュールをレンダリングし、インフラストラクチャリポジトリにプルリクエストを行い、そこから変更を計画して適用することができます。

この操作は、AWS Proton がインフラストラクチャのプロビジョニングを管理しているわけではないため同期しません。そのため、インフラストラクチャをプロビジョニングする過程で、AWS Proton にデプロイのステータスを通知するステップがあることが重要です。

Terraformを使用して環境をセットアップする方法に関するデモをご紹介します。そのためには、GitHub アクションを使用して AWS アカウントで Terraform インフラストラクチャをプロビジョニングします。

Terraform テンプレートの使用を開始するには、まず前に説明したとおりにリポジトリのリンクを設定します。次に、AWS アカウントでいくつかのアクティビティを実行するための GitHub Actions に、アクセス権限を付与する新しいロールを作成する必要があります。このロールの AWS CloudFormation テンプレートは、こちらで確認できます。

空の GitHub リポジトリを作成し、.github/workflows/ というフォルダを作成します。terraform.yml という名前のファイルを作成します。そのファイルで、インフラストラクチャの変更を計画して適用する GitHub アクションを定義する必要があります。terraform サンプルファイルからテンプレートをコピーします

このテンプレートは、Terraform を使用して AWS 認証情報の設定、Terraform の設定、インフラストラクチャ全体の計画、インフラストラクチャの変更の適用を行い、このプロセスのステータスを AWS Proton に通知します。

さらに、そのフォルダー内にある env_config.json ファイルを修正する必要があります。このファイルに、作成する環境の設定を追加する必要があります。JSON ファイルに新しい環境を追加することもできます。この例では、この環境は tf-test と呼ばれています。このロールは以前に作成したロールで、リージョンはこのインフラストラクチャをデプロイするリージョンです。サンプルファイルをご覧ください

{
    「tf-test」: {
        「role」: 「arn:aws:iam::123456789: ロール/テラフォームGitHubActionsロール」
        「地域」:「us-west-2」
    }
}

この例では、Terraform プロジェクトを Amazon S3 にアップロードします。Terraform プロジェクトの例をご覧ください

今度は AWS Proton で新しい環境テンプレートを作成します。コンソールの指示に従ッテください。

環境テンプレートの準備ができたら、作成したテンプレートを使用して新しい環境を作成します。環境を設定するときは、[プルリクエストによるプロビジョニング] を選択し、正しいパラメータでリポジトリを設定します。

新しい環境を設定する、[環境 の詳細]で、[Deployment] ステータスが [進行中] になっていることを確認できます。この状態は、 GitHub アクションが終了するまで続きます。

環境の詳細

リポジトリに移動すると、新しいプルリクエストが表示されるはずです。プルリクエスト名の横に、赤い十字、黄色い点、または緑のチェックマークが表示されます。このアイコンは GitHub アクションのステータスによって異なります。黄色い点がある場合は、赤または緑に変わるまで待ちます。エラーが発生した場合は、GitHub アクションのログ内で何が起きているかを確認する必要があります。

プルリクエストに緑色のチェックが表示されている場合は、GitHub アクションが完了し、プルリクエストをマージできることを意味します。プルリクエストがマージされると、インフラストラクチャがプロビジョニングされます。[環境の詳細] ページに戻ります。しばらくして、インフラストラクチャのプロビジョニングが完了すると (テンプレートによっては数分かかることがあります)、Deployment Status が Succeful と表示されます。

Github プルリクエスト

このデモの終わりまでに、AWS Proton を使用して環境テンプレートと GitHub アクションを処理し、Terraform Open Source を使用してインフラストラクチャを AWS アカウントにプロビジョニングしています。

ご利用状況
Terraform のサポートは、パブリックプレビューモードで利用できます。

これらの新機能は、AWS Proton が利用できるリージョン (米国東部 (オハイオ)、米国東部 (バージニア北部)、米国西部 (オレゴン)、アジアパシフィック (東京)、欧州 (アイルランド) でご利用いただけます。

これらの機能の詳細については、AWS Proton サービスページをご覧ください。

Marcia

原文はこちらです。