がインフラストラクチャを AWS Proton プロビジョニングする方法 - AWS Proton

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

がインフラストラクチャを AWS Proton プロビジョニングする方法

AWS Proton は、次のいずれかの方法でインフラストラクチャをプロビジョニングできます。

  • AWSマネージドプロビジョニング – ユーザーに代わってプロビジョニングエンジンを AWS Proton 呼び出します。この方法は AWS CloudFormation テンプレートバンドルのみをサポートします。詳細については、「AWS CloudFormation IaC ファイル」を参照してください。

  • CodeBuild プロビジョニング – 指定したシェルコマンドを実行する AWS CodeBuild ために AWS Proton を使用します。コマンドは、 AWS Proton が提供する入力を読み取ることができ、インフラストラクチャのプロビジョニングまたはプロビジョニング解除と出力値の生成を担当します。この方法のテンプレートバンドルには、マニフェストファイル内のあなたのコマンドと、これらのコマンドで必要になるプログラム、スクリプト、またはその他のファイルが含まれます。

    CodeBuild プロビジョニングを使用する例として、 を使用して AWS リソース AWS Cloud Development Kit (AWS CDK) をプロビジョニングするコードと、CDK をインストールして CDK コードを実行するマニフェストを含めることができます。

    詳細については、「CodeBuild プロビジョニングテンプレートバンドル」を参照してください。

    注記

    CodeBuild プロビジョニングは環境とサービスで使用できます。現時点では、この方法でコンポーネントをプロビジョニングすることはできません。

  • セルフマネージドプロビジョニング – 指定したリポジトリにプルリクエスト (PR) AWS Proton を発行し、独自のインフラストラクチャデプロイシステムがプロビジョニングプロセスを実行します。この方法は Terraform テンプレートバンドルのみをサポートします。詳細については、「Terraform IaC ファイル」を参照してください。

AWS Proton は、環境とサービスのプロビジョニング方法を個別に決定して設定します。環境またはサービスを作成または更新するとき、 AWS Proton はあなたが提供したテンプレートバンドルを調べ、テンプレートバンドルが示すプロビジョニング方法を決定します。環境レベルでは、AWS Identity and Access Management (IAM) ロール、環境アカウント接続、インフラストラクチャリポジトリなど、環境とその潜在的なサービスがプロビジョニング方法に必要なパラメータを指定します。

AWS Proton を使用してサービスをプロビジョニングするデベロッパーは、プロビジョニング方法に関係なく同じエクスペリエンスが得られます。開発者はプロビジョニング方法を意識する必要はなく、サービスのプロビジョニングプロセスのいかなる要素も変更する必要はありません。サービステンプレートはプロビジョニング方法を設定します。また、開発者がサービスをデプロイする各環境は、サービスインスタンスのプロビジョニングに必要なパラメータを提供します。

次の図は、さまざまなプロビジョニング方法の主な特徴をまとめたものです。表の後のセクションでは、各方法の詳細を説明します。

プロビジョニング方法 テンプレート プロビジョニング実行者 ステータス追跡者

AWSによる管理

マニフェスト、スキーマ、IaC ファイル (CloudFormation)

AWS Proton (CloudFormation 経由)

AWS Proton (CloudFormation 経由)

CodeBuild

マニフェスト (コマンドを使用)、スキーマ、コマンドの依存関係 ( AWS CDK コードなど)

AWS Proton (CodeBuild 経由)

AWS Proton (コマンドは CodeBuild を介してステータスを返します)

自己管理

マニフェスト、スキーマ、IaC ファイル (Terraform)

コード (Git アクション経由)

コード (API コール AWS を介して に渡されます)

AWSマネージドプロビジョニングの仕組み

環境またはサービスが AWSマネージドプロビジョニングを使用する場合、インフラストラクチャは次のようにプロビジョニングされます。

  1. AWS Proton 顧客 (管理者または開発者) が AWS Proton リソース (環境またはサービス) を作成します。カスタマーは、リソースのテンプレートを選択し、必要なパラメータを指定します。詳細については、次の「AWSマネージドプロビジョニングに関する考慮事項」セクションを参照してください。

  2. AWS Proton は、リソースをプロビジョニングするための完全な AWS CloudFormation テンプレートをレンダリングします。

  3. AWS Proton を呼び出し AWS CloudFormation て、レンダリングされたテンプレートを使用してプロビジョニングを開始します。

  4. AWS Proton は AWS CloudFormation デプロイを継続的にモニタリングします。

  5. プロビジョニングが完了すると、 は障害発生時にエラー AWS Proton を報告し、Amazon VPC ID などのプロビジョニング出力を成功時にキャプチャします。

次の図は、 AWS Proton がこれらのステップのほとんどを直接処理することを示しています。

での AWSマネージドプロビジョニングを示す図 AWS Proton

AWSマネージドプロビジョニングに関する考慮事項

  • インフラストラクチャプロビジョニングロール – 環境またはそこで実行されているサービスインスタンスが AWSマネージドプロビジョニングを使用する場合、管理者は (直接または AWS Proton 環境アカウント接続の一部として) IAM ロールを設定する必要があります。 はこのロール AWS Proton を使用して、これらの AWSマネージドプロビジョニングリソースのインフラストラクチャをプロビジョニングします。ロールには、これらのリソースのテンプレートに含まれるすべてのリソースを作成 AWS CloudFormation するために使用するアクセス許可が必要です。

    詳細については、「IAM ロール」および「AWS Proton IAM サービスロールポリシーの例」を参照してください。

  • サービスプロビジョニング – 開発者が AWSマネージドプロビジョニングを使用するサービスインスタンスを環境にデプロイすると、 はその環境に提供されるロール AWS Proton を使用してサービスインスタンスのインフラストラクチャをプロビジョニングします。開発者にはこのロールは表示されず、変更することもできません。

  • パイプラインを使用したサービス – AWSマネージドプロビジョニングを使用するサービステンプレートには、YAML AWS CloudFormation スキーマに書き込まれたパイプライン定義が含まれる場合があります。 AWS Proton また、 は を呼び出してパイプラインを作成します AWS CloudFormation。がパイプラインの作成 AWS Proton に使用するロールは、個々の環境のロールとは別です。このロールは、 AWS アカウントレベルで 1 回のみ AWS Proton 個別に に提供され、オール AWSマネージドパイプラインのプロビジョニングと管理に使用されます。このロールには、パイプラインやパイプラインに必要なその他のリソースを作成する権限が必要です。

    次の手順では、 AWS Protonにパイプラインロールを指定する方法を示します。

    AWS Proton console
    パイプラインロールを指定する
    1. AWS Proton コンソールのナビゲーションペインで、[設定] > [アカウント設定] を選択し、[設定] を選択します。

    2. Pipeline AWSマネージドロールセクションを使用して、 AWSマネージドプロビジョニング用の新規または既存のパイプラインロールを設定します。

    AWS Proton API
    パイプラインロールを提供する
    1. UpdateAccountSettings API アクションを使用してください。

    2. pipelineServiceRoleArn パラメータでパイプラインサービスロールの Amazon リソースネーム (ARN) を指定します。

    AWS CLI

    パイプラインロールを指定する

    次のコマンドを実行してください。

    $ aws proton update-account-settings \ --pipeline-service-role-arn \ "arn:aws:iam::123456789012:role/my-pipeline-role"

CodeBuild プロビジョニングの働き

環境またはサービスで CodeBuild プロビジョニングが使用される場合、インフラストラクチャは次のようにプロビジョニングされます。

  1. AWS Proton 顧客 (管理者または開発者) が AWS Proton リソース (環境またはサービス) を作成します。カスタマーは、リソースのテンプレートを選択し、必要なパラメータを指定します。詳細については、次の「CodeBuild プロビジョニングに関する考慮事項」セクションを参照してください。

  2. AWS Proton は、リソースをプロビジョニングするための入力パラメータ値を含む入力ファイルをレンダリングします。

  3. AWS Proton は CodeBuild を呼び出してジョブを開始します。CodeBuild ジョブは、テンプレートで指定されたカスタマーシェルコマンドを実行します。これらのコマンドは必要なインフラストラクチャをプロビジョニングし、オプションで入力値を読み取ります。

  4. プロビジョニングが完了すると、最後のカスタマーコマンドはプロビジョニングステータスを CodeBuild に返し、NotifyResourceDeploymentStatusChange AWS Proton API アクションを呼び出して、Amazon VPC ID などの出力があればそれを提供します。

    重要

    コマンドでプロビジョニングステータスが正しく CodeBuild に返り、出力が提供されたことを確認してください。そうでない場合、 AWS Proton はプロビジョニングステータスを適切に追跡できず、サービスインスタンスに正しい出力を提供できません。

次の図は、 が AWS Proton 実行するステップと、CodeBuild ジョブ内でコマンドが実行するステップを示しています。

での CodeBuild ベースのプロビジョニングを示す図 AWS Proton

CodeBuild プロビジョニングに関する考慮事項

  • インフラストラクチャプロビジョニングロール – 環境またはそこで実行されているサービスインスタンスが CodeBuild ベースのプロビジョニングを使用する場合、管理者は (直接または AWS Proton 環境アカウント接続の一部として) IAM ロールを設定する必要があります。 はこのロール AWS Proton を使用して、これらの CodeBuild プロビジョニングリソースのインフラストラクチャをプロビジョニングします。ロールには、CodeBuild を使用して、これらのリソースのテンプレート内のコマンドによって提供されるすべてのリソースを作成するための権限が必要です。

    詳細については、「IAM ロール」および「AWS Proton IAM サービスロールポリシーの例」を参照してください。

  • サービスプロビジョニング – 開発者が CodeBuild プロビジョニングを使用するサービスインスタンスを環境にデプロイすると、 はその環境に提供されるロール AWS Proton を使用してサービスインスタンスのインフラストラクチャをプロビジョニングします。開発者にはこのロールは表示されず、変更することもできません。

  • パイプラインを使用したサービス – CodeBuild プロビジョニングを使用するサービステンプレートには、パイプラインをプロビジョニングするためのコマンドが含まれている場合があります。 AWS Proton また、 は CodeBuild を呼び出してパイプラインを作成します。がパイプラインの作成 AWS Proton に使用するロールは、個々の環境のロールとは別です。このロールは、 AWS アカウントレベルで 1 回のみ AWS Proton 個別に に提供され、すべての CodeBuild ベースのパイプラインのプロビジョニングと管理に使用されます。このロールには、パイプラインやパイプラインに必要なその他のリソースを作成する権限が必要です。

    次の手順では、 AWS Protonにパイプラインロールを指定する方法を示します。

    AWS Proton console
    パイプラインロールを指定する
    1. AWS Proton コンソールのナビゲーションペインで、[設定] > [アカウント設定] を選択し、[設定] を選択します。

    2. Codebuild パイプラインプロビジョニングロールセクションを使用して、CodeBuild プロビジョニング用の新規または既存のパイプラインロールを設定します。

    AWS Proton API
    パイプラインロールを提供するには
    1. UpdateAccountSettings API アクションを使用してください。

    2. pipelineCodebuildRoleArn パラメータでパイプラインサービスロールの Amazon リソースネーム (ARN) を指定します。

    AWS CLI

    パイプラインロールを指定する

    次のコマンドを実行してください。

    $ aws proton update-account-settings \ --pipeline-codebuild-role-arn \ "arn:aws:iam::123456789012:role/my-pipeline-role"

セルフマネージド型のプロビジョニングの働き

セルフマネージド型プロビジョニングを使用するように環境を設定すると、インフラストラクチャは次のようにプロビジョニングされます。

  1. AWS Proton 顧客 (管理者または開発者) が AWS Proton リソース (環境またはサービス) を作成します。カスタマーはリソースのテンプレートを選択し、必要なパラメータを指定します。環境については、カスタマーはリンクされたインフラストラクチャリポジトリも提供します。詳細については、次の「セルフマネージドプロビジョニングに関する考慮事項」セクションを参照してください。

  2. AWS Proton は完全な Terraform テンプレートをレンダリングします。これは、複数のフォルダにある可能性のある 1 つ以上の Terraform ファイルと、この.tfvars変数ファイルへのリソース作成呼び出しで提供される変数 file. AWS Proton writes パラメータ値で構成されます。

  3. AWS Proton は、レンダリングされた Terraform テンプレートを使用してインフラストラクチャリポジトリに PR を送信します。

  4. カスタマー (管理者または開発者) が PR をマージすると、カスタマーの自動化コードによってプロビジョニングエンジンがトリガーされ、マージされたテンプレートでインフラストラクチャのプロビジョニングが開始されます。

    注記

    顧客 (管理者または開発者) が PR を閉じると、 は PR をクローズとして AWS Proton 認識し、デプロイをキャンセル済みとしてマークします。

  5. プロビジョニングが完了すると、お客様のオートメーションは NotifyResourceDeploymentStatusChange AWS Proton API アクションを呼び出して、完了を示し、ステータス (成功または失敗) を指定し、Amazon VPC ID などの出力があればそれを提供します。

    重要

    オートメーションコードがプロビジョニングステータスと出力 AWS Proton で を呼び出すことを確認します。そうでない場合は、プロビジョニングを必要以上に長く保留中と見なし、進行中ステータスを表示し続ける AWS Proton ことができます。

次の図は、 が AWS Proton 実行するステップと、独自のプロビジョニングシステムが実行するステップを示しています。

でのセルフマネージドプロビジョニングを示す図 AWS Proton

セルフマネージドプロビジョニングに関する考慮事項

  • インフラストラクチャリポジトリ – 管理者がセルフマネージドプロビジョニング用に環境を設定する場合、リンクされたインフラストラクチャリポジトリを提供する必要があります。 はこのリポジトリに PRs AWS Proton を送信して、環境のインフラストラクチャとその環境にデプロイされているすべてのサービスインスタンスをプロビジョニングします。リポジトリ内の顧客所有のオートメーションアクションは、環境およびサービステンプレートに含まれるすべてのリソースを作成するアクセス許可を持つ IAM ロールと、送信先 AWS アカウントを反映する ID を引き受ける必要があります。ロールを引き受ける GitHub Action の例については、GitHub Actions の「認証情報の設定」アクションドキュメントの「ロールの引き受け」を参照してください。 AWS GitHub

  • アクセス許可 – プロビジョニングコードは、必要に応じてアカウントで認証し (たとえば、 AWS アカウントへの認証)、リソースプロビジョニング認可を提供する (たとえば、ロールを提供する) 必要があります。

  • サービスプロビジョニング – 開発者がセルフマネージドプロビジョニングを使用するサービスインスタンスを環境にデプロイすると、 は環境に関連付けられたリポジトリに PR AWS Proton を送信して、サービスインスタンスのインフラストラクチャをプロビジョニングします。開発者にはこのリポジトリは表示されず、変更することもできません。

    注記

    サービスを作成する開発者は、プロビジョニング方法に関係なく同じプロセスを使用するため、違いは取り除かれています。ただし、セルフマネージドプロビジョニングでは、誰か (自分ではない場合もある) がインフラストラクチャリポジトリ内の PR をマージするまでプロビジョニングの開始を待たなければならないため、開発者への応答が遅くなるおそれがあります。

  • パイプラインを使用したサービス – セルフマネージドプロビジョニングを使用する環境のサービステンプレートには、Terraform HCL で記述された AWS CodePipeline パイプライン定義 (パイプラインなど) が含まれる場合があります。がこれらのパイプライン AWS Proton をプロビジョニングできるように、管理者はリンクされたパイプラインリポジトリを提供します AWS Proton。パイプラインをプロビジョニングする場合、リポジトリ内の顧客所有のオートメーションアクションは、パイプラインをプロビジョニングするアクセス許可を持つ IAM ロールと、送信先 AWS アカウントを反映する ID を引き受ける必要があります。パイプラインのリポジトリとロールは、個々の環境で使用されるロールからは切り離されています。リンクされたリポジトリは、 AWS アカウントレベルで 1 回のみ AWS Proton 個別に に提供され、すべてのパイプラインのプロビジョニングと管理に使用されます。ロールには、パイプラインやパイプラインに必要なその他のリソースを作成する権限が必要です。

    次の手順では、 AWS Protonにパイプラインリポジトリとロールを提供する方法を示します。

    AWS Proton console
    パイプラインロールを指定する
    1. AWS Proton コンソールのナビゲーションペインで、[設定] > [アカウント設定] を選択し、[設定] を選択します。

    2. CI/CD パイプラインリポジトリセクションを使用して、新規または既存のリポジトリリンクを設定します。

    AWS Proton API
    パイプラインロールを提供する
    1. UpdateAccountSettings API アクションを使用してください。

    2. pipelineProvisioningRepository パラメータには、パイプラインリポジトリのプロバイダー、名前、ブランチを指定します。

    AWS CLI

    パイプラインロールを指定する

    次のコマンドを実行してください。

    $ aws proton update-account-settings \ --pipeline-provisioning-repository \ "provider=GITHUB,name=my-pipeline-repo-name,branch=my-branch"
  • セルフマネージドプロビジョニング済みリソースの削除 — Terraform モジュールには、リソース定義に加えて、Terraform の運用に必要な設定要素が含まれる場合があります。したがって、 AWS Proton は環境またはサービスインスタンスのすべての Terraform ファイルを削除することはできません。代わりに、 はファイルを削除対象として AWS Proton マークし、PR メタデータのフラグを更新しました。あなたの自動化機能はそのフラグを読み取り、そのフラグで terraform destroy コマンドをトリガーできます。