環境の作成 - AWS Proton

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

環境の作成

AWS Proton 環境の作成について説明します。

AWS Proton 環境は、次の 2 つの方法のいずれかで作成できます。
  • 環境用の標準環境テンプレート .provisions インフラストラクチャを使用して、標準環境を作成、管理、プロビジョニングします。 AWS Proton

  • カスタマーマネージド環境テンプレート を使用して、カスタマーマネージドインフラストラクチャ AWS Proton に接続します。自分の共有リソースを の外部でプロビジョニングし AWS Proton、 が AWS Proton 使用できるプロビジョニング出力を提供します。

環境の作成方法としては、いくつかのプロビジョニング方法の中から 1 つを選択できます。
  • AWS マネージドプロビジョニング — 環境を単一の account. AWS Proton provisions で作成、管理、プロビジョニングします。

    このメソッドは、 CloudFormation インフラストラクチャコード (IaC) テンプレートのみをサポートします。

  • AWS 別のアカウントへの マネージドプロビジョニング – 1 つの管理アカウントで、環境アカウント接続を使用して別のアカウントにプロビジョニングされた環境を作成および管理します。 は、他のアカウントの環境を AWS Proton プロビジョニングします。詳細については、「1 つのアカウントに環境を作成し、別のアカウントでプロビジョニングします。」および「環境アカウント接続」を参照してください。

    このメソッドは CloudFormation IaC テンプレートのみをサポートします。

  • セルフマネージドプロビジョニング — 独自のプロビジョニングインフラストラクチャを持つリンクされたリポジトリにプロビジョニングプルリクエスト AWS Proton を送信します。

    この方法でサポートされるのは Terraform IaC テンプレートのみです。

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

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

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

    注記

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

AWS マネージドプロビジョニング (同じアカウントと別のアカウントの両方) AWS Proton では、 はリソースをプロビジョニングするための直接呼び出しを行います。

セルフマネージドプロビジョニング AWS Proton を使用すると、 はプルリクエストを行い、IaC エンジンがリソースのプロビジョニングに使用するコンパイル済み IaC ファイルを提供します。

詳細については、「AWS Proton ではどのようにしてインフラストラクチャがプロビジョニングされるのか」、「テンプレートバンドル」、および「環境テンプレートバンドルのスキーマ要件」を参照してください。

同じアカウント内で標準環境を作成してプロビジョニングする

コンソールまたは AWS CLI を使用して、1 つのアカウントで環境を作成してプロビジョニングします。プロビジョニングは によって管理されます AWS。

AWS Management Console
コンソールを使用して、単一のアカウント内で環境を作成してプロビジョニングします。
  1. AWS Proton コンソールで、[環境] を選択します。

  2. [Create environment (環境の作成)] を選択します。

  3. [Choose an environment template (環境テンプレートを選択する)] ページでテンプレートを選択して [Configure (設定)] を選択します。

  4. [Configure environment (環境を設定する)] ページの [Provisioning (プロビジョニング)] セクションで [AWS マネージドプロビジョニング] を選択します。

  5. [Deployment account (デプロイアカウント)] セクションで、[この AWS アカウント] を選択します。

  6. [Configure environment (環境の設定)] ページの [Environment settings (環境設定)] セクションで [Environment name] に環境名を入力します。

  7. (オプション) この環境についての説明を入力します。

  8. [Environment roles (環境ロール)] セクションで、AWS Proton サービスロールの設定 の一部としてあなたが作成した AWS Proton サービスロールを選択します。

  9. (オプション) [コンポーネントロール] セクションで、直接定義したコンポーネントを環境内で実行できるようにするサービスロールを選択し、プロビジョニングできるリソースの範囲を絞り込みます。詳細については、「AWS Proton コンポーネント」を参照してください。

  10. (オプション) [Tags (タグ)] セクションで [Add new tag (新しいタグを追加)] を選択し、キーと値を入力してカスタマーマネージドタグを作成します。

  11. [Next (次へ)] を選択します。

  12. [Configure environment custom settings (環境カスタム設定の構成)] ページでは、required パラメータの値を入力してください。optional パラメータの値を入力するか、表示されるデフォルト値を使用します。

  13. [Next (次へ)] を選択して入力を見直します。

  14. [Create (作成)] を選択します。

    環境の詳細とステータス、ならびに環境に関する AWS マネージドタグとカスタマーマネージドタグ。

  15. ナビゲーションペインで [Environments (環境)] を選択します。

    新しいページには、ステータスやその他の環境の詳細とともに環境のリストが表示されます。

AWS CLI

AWS CLI を使用して、1 つのアカウントで環境を作成してプロビジョニングします。

環境を作成するには、AWS Proton サービスロール ARN、仕様ファイルへのパス、環境名、環境テンプレート ARN、メジャーバージョンとマイナーバージョン、説明 (オプション) を指定します。

次の例は、環境テンプレートスキーマファイルで定義された 2 つの入力値を指定する YAML フォーマット済み仕様ファイルです。get-environment-template-minor-version コマンドを実行して、環境テンプレートスキーマを表示できます。

proton: EnvironmentSpec spec: my_sample_input: "the first" my_other_sample_input: "the second"

次のコマンドを実行して、環境を作成します。

$ aws proton create-environment \ --name "MySimpleEnv" \ --template-name simple-env \ --template-major-version 1 \ --proton-service-role-arn "arn:aws:iam::123456789012:role/AWS ProtonServiceRole" \ --spec "file://env-spec.yaml"

レスポンス:

{ "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment/MySimpleEnv", "createdAt": "2020-11-11T23:03:05.405000+00:00", "deploymentStatus": "IN_PROGRESS", "lastDeploymentAttemptedAt": "2020-11-11T23:03:05.405000+00:00", "name": "MySimpleEnv", "protonServiceRoleArn": "arn:aws:iam::123456789012:role/ProtonServiceRole", "templateName": "simple-env" } }

新しい環境を作成したら、次の command. AWS Proton automatically generate AWS managed tags の例に示すように、 AWS とカスタマーマネージドタグのリストを表示できます。また、 AWS CLIで、カスタマーマネージドタグの変更や作成もできます。詳細については、「AWS Proton リソースとタグ付け」を参照してください。

コマンド:

$ aws proton list-tags-for-resource \ --resource-arn "arn:aws:proton:region-id:123456789012:environment/MySimpleEnv"

1 つのアカウントに環境を作成し、別のアカウントでプロビジョニングします。

コンソールまたは AWS CLI を使用して、管理アカウントに標準環境を作成し、別のアカウントに環境インフラストラクチャをプロビジョニングします。プロビジョニングは AWSが管理します。

コンソールまたは を使用する前にCLI、次の手順を実行します。
  1. 管理アカウントと環境アカウントの を特定し AWS アカウント IDs、後で使用するためにコピーします。

  2. 環境アカウントで、環境が作成する最小限のアクセス許可を持つ AWS Proton サービスロールを作成します。詳細については、「AWS Proton を使用してプロビジョニングするための サービスロール AWS CloudFormation」を参照してください。

AWS Management Console
コンソールを使用して、1 つのアカウントに環境を作成し、別のアカウントでプロビジョニングします。
  1. 環境アカウント内で環境アカウント接続を作成し、それを使用して管理アカウントへの接続リクエストを送信します。
    1. AWS Proton コンソールでナビゲーションペインにある [Environment account connections (環境アカウント接続)] を選択します。

    2. [Environment account connections (環境アカウント接続)] ページで[Request to connect (接続のリクエスト)] を選択します。

      注記

      [Environment account connection (環境アカウント接続ページ)] の見出しに挙がっているアカウント ID が、事前に識別されたあなたの環境アカウント ID と一致することを確認してください。

    3. [Request to connect (接続のリクエスト)] ページでの [Environment role (環境ロール)] セクションで [Existing service role (既存のサービスロール)] および環境用に作成したサービスロールの名前を選択します。

    4. 「管理アカウントへの接続」セクションに、環境の管理アカウント ID環境名を入力します AWS Proton 。後で使用できるように名前をコピーします。

    5. ページの右下にある [Request to connect (接続のリクエスト)] を選択します。

    6. リクエストは [Environment connections sent to a management account (管理アカウントに送信される環境接続)] テーブルに [Pending] (保留中) として表示され、モーダルに管理アカウントからのリクエストを受け入れる方法が示されます。

  2. 管理アカウント内で、環境アカウントからの接続リクエストを受け入れ諾ます。
    1. 管理アカウントにログインし、 AWS Proton コンソールで環境アカウント接続を選択します。

    2. [Environment account connections (環境アカウント接続の)] ページの [Environment account connection requests (環境アカウント接続リクエスト)] テーブルで、事前に識別された環境アカウント ID と一致する環境アカウント ID を持つ環境アカウント接続を選択します。

      注記

      [Environment account connection (環境アカウント接続ページ)] の見出しに挙がっているアカウント ID が、事前に識別されたあなたの管理アカウント ID と一致することを確認してください。

    3. [Accept (承諾)] を選択します。ステータスは から PENDINGに変わりますCONNECTED。

  3. 管理アカウント内で環境を作成します。
    1. ナビゲーションペインで [Environment templates (環境テンプレート)] を選択します。

    2. [Environment templates (環境テンプレート)] ページで [Create environment template (環境テンプレートを作成する)] を選択します。

    3. [Choose an environment template (環境テンプレートを選択する)] ページで環境テンプレートを選択します。

    4. [Configure environment (環境を設定する)] ページの [Provisioning (プロビジョニング)] セクションで [AWS マネージドプロビジョニング] を選択します。

    5. 「デプロイアカウント」セクションで、「別の AWS アカウント」を選択します。

    6. [Environment details (環境の詳細)] セクションで、[環境アカウント接続] と [環境名] を選択します。

    7. [Next (次へ)] をクリックします。

    8. フォームに必要な値を入力し、[Review and Create (確認と作成)] ページが表示されるまで [Next (次へ)] を選択します。

    9. 内容を見直して [Create environment (環境を作成する)] を選択します。

AWS CLI

を使用して AWS CLI 、あるアカウントに環境を作成し、別のアカウントにプロビジョニングします。

環境アカウント内で環境アカウント接続を作成し、以下のコマンドを実行して接続をリクエストします。

$ aws proton create-environment-account-connection \ --environment-name "simple-env-connected" \ --role-arn "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role" \ --management-account-id "111111111111"

レスポンス:

{ "environmentAccountConnection": { "arn": "arn:aws:proton:region-id:222222222222:environment-account-connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "environmentAccountId": "222222222222", "environmentName": "simple-env-connected", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "lastModifiedAt": "2021-04-28T23:13:50.847000+00:00", "managementAccountId": "111111111111", "requestedAt": "2021-04-28T23:13:50.847000+00:00", "roleArn": "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role", "status": "PENDING" } }

管理アカウント内で、以下のコマンドを実行して環境アカウント接続リクエストを受け入れます。

$ aws proton accept-environment-account-connection \ --id "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"

レスポンス:

{ "environmentAccountConnection": { "arn": "arn:aws:proton:region-id:222222222222:environment-account-connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "environmentAccountId": "222222222222", "environmentName": "simple-env-connected", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "lastModifiedAt": "2021-04-28T23:15:33.486000+00:00", "managementAccountId": "111111111111", "requestedAt": "2021-04-28T23:13:50.847000+00:00", "roleArn": "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role", "status": "CONNECTED" } }

次のコマンドを実行してあなたの環境アカウント接続を表示します。

$ aws proton get-environment-account-connection \ --id "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"

レスポンス:

{ "environmentAccountConnection": { "arn": "arn:aws:proton:region-id:222222222222:environment-account-connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "environmentAccountId": "222222222222", "environmentName": "simple-env-connected", "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "lastModifiedAt": "2021-04-28T23:15:33.486000+00:00", "managementAccountId": "111111111111", "requestedAt": "2021-04-28T23:13:50.847000+00:00", "roleArn": "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role", "status": "CONNECTED" } }

管理アカウントで、次のコマンドを実行して環境を作成します。

$ aws proton create-environment \ --name "simple-env-connected" \ --template-name simple-env-template \ --template-major-version "1" \ --template-minor-version "1" \ --spec "file://simple-env-template/specs/original.yaml" \ --environment-account-connection-id "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"

レスポンス:

{ "environment": { "arn": "arn:aws:proton:region-id:111111111111:environment/simple-env-connected", "createdAt": "2021-04-28T23:02:57.944000+00:00", "deploymentStatus": "IN_PROGRESS", "environmentAccountConnectionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "environmentAccountId": "222222222222", "lastDeploymentAttemptedAt": "2021-04-28T23:02:57.944000+00:00", "name": "simple-env-connected", "templateName": "simple-env-template" } }

セルフマネージドプロビジョニングで環境を作成し、プロビジョニングします。

セルフマネージドプロビジョニングを使用すると、 は独自のプロビジョニングインフラストラクチャを持つリンクされたリポジトリにプロビジョニングプルリクエスト AWS Proton を送信します。プルリクエストは、 AWS サービスを呼び出し、インフラストラクチャをプロビジョニングする独自のワークフローを開始します。

セルフマネージドプロビジョニングに関する考察:
  • 環境を作成する前に、セルフマネージドプロビジョニング用のリポジトリリソースディレクトリを設定します。詳細については、「AWS Proton Infrastructure as Code ファイル」を参照してください。

  • 環境を作成すると、 はインフラストラクチャプロビジョニングのステータスに関する非同期通知を受信するのを AWS Proton 待ちます。プロビジョニングコードでは、 AWS Proton NotifyResourceStateChangeを使用してAPI、これらの非同期通知を に送信する必要があります AWS Proton。

セルフマネージドプロビジョニングは、コンソールまたは AWS CLIを通して使用できます。以下の例では、Terraform でセルフマネージドプロビジョニングを使用する方法を示します。

AWS Management Console
コンソールでセルフマネージドプロビジョニングを使用して Terraform 環境を作成します。
  1. AWS Proton コンソールで、[環境] を選択します。

  2. [Create environment (環境の作成)] を選択します。

  3. [Choose an environment template (環境テンプレートを選択する)] ページで、Terraform テンプレートを選択して [Configure (設定)] を選択します。

  4. [Configure environment (環境を設定する)] ページの [Provisioning] (プロビジョニング)] セクションで [Self-managed provisioning (セルフマネージドプロビジョニング)] を選択します。

  5. [プロビジョニングリポジトリの詳細] セクション:

    1. プロビジョニングリポジトリを にまだリンク AWS Protonしていない場合は、新しいリポジトリ を選択し、リポジトリプロバイダーのいずれかを選択し、接続 の場合はCodeStar接続の 1 つを選択します。

      注記

      関連するリポジトリプロバイダーアカウントへの接続がまだない場合は、新しい CodeStar 接続を追加 を選択します。次に、接続を作成し、CodeStar 接続メニューの横にある更新ボタンを選択します。これで、あなたの新しい接続をメニューから選択できます。

      リポジトリを にリンク済みの場合は AWS Proton、既存のリポジトリ を選択します。

    2. [Repository name (リポジトリ名)] で、リポジトリを選択します。ドロップダウンメニューには、既存のリポジトリの場合はリンクされたリポジトリ、新規リポジトリの場合はプロバイダーアカウントのリポジトリのリストが表示されます。

    3. [ブランチ名] で、リポジトリブランチの1つを選択します。

  6. [Environment Settings (環境の設定)] セクションで [Environment name] に環境名を入力します。

  7. (オプション) この環境についての説明を入力します。

  8. (オプション) [Tags (タグ)] セクションで [Add new tag (新しいタグを追加)] を選択し、キーと値を入力してカスタマーマネージドタグを作成します。

  9. [Next (次へ)] を選択します。

  10. [Configure environment custom settings (環境カスタム設定の構成)] ページでは、required パラメータの値を入力してください。optional パラメータの値を入力するか、表示されるデフォルト値を使用します。

  11. [Next (次へ)] を選択して入力内容を見直します。

  12. [Create (作成)] を選択してプルリクエストを送信します。

    • プルリクエストを承認すると、デプロイが進行中になります。

    • プルリクエストを拒否すると、環境の作成はキャンセルされます。

    • プルリクエストがタイムアウトになった場合、環境の作成は完了しません

  13. 環境の詳細とステータス、環境の AWS マネージドタグとカスタマーマネージドタグを表示します。

  14. ナビゲーションペインで [Environments (環境)] を選択します。

    新しいページには、ステータスやその他の環境の詳細とともに環境のリストが表示されます。

AWS CLI

セルフマネージドプロビジョニングを実施する環境を作成するときは、provisioningRepository パラメータを追加し、パラメータProtonServiceRoleArnenvironmentAccountConnectionId パラメータを省略します。

を使用して AWS CLI 、セルフマネージドプロビジョニングで Terraform 環境を作成します。
  1. 環境を作成し、見直しと承認の対象としてリポジトリにプルリクエストを送信します。

    次の例では、環境テンプレートスキーマファイルに基づいて 2 つの入力値を定義する YAML 形式の仕様ファイルを示します。get-environment-template-minor-version コマンドを実行して、環境テンプレートスキーマを表示します。

    仕様:

    proton: EnvironmentSpec spec: ssm_parameter_value: "test"

    次のコマンドを実行して、環境を作成します。

    $ aws proton create-environment \ --name "pr-environment" \ --template-name "pr-env-template" \ --template-major-version "1" \ --provisioning-repository="branch=main,name=myrepos/env-repo,provider=GITHUB" \ --spec "file://env-spec.yaml"

    レスポンス:>

    { "environment": { "arn": "arn:aws:proton:region-id:123456789012:environment/pr-environment", "createdAt": "2021-11-18T17:06:58.679000+00:00", "deploymentStatus": "IN_PROGRESS", "lastDeploymentAttemptedAt": "2021-11-18T17:06:58.679000+00:00", "name": "pr-environment", "provisioningRepository": { "arn": "arn:aws:proton:region-id:123456789012:repository/github:myrepos/env-repo", "branch": "main", "name": "myrepos/env-repo", "provider": "GITHUB" }, "templateName": "pr-env-template" }
  2. リクエストを見直します。

    • リクエストを承認すると、プロビジョニングが進行中になります。

    • リクエストを拒否すると、環境の作成はキャンセルされます。

    • プルリクエストがタイムアウトになった場合、環境の作成は完了しません

  3. プロビジョニングステータスを非同期的に に提供します AWS Proton。次の例では AWS Proton 、プロビジョニングが成功したことを に通知します。

    $ aws proton notify-resource-deployment-status-change \ --resource-arn "arn:aws:proton:region-id:123456789012:environment/pr-environment" \ --status "SUCCEEDED"