建立環境 - AWS Proton

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立環境

了解如何建立 AWS Proton 環境。

您可以透過兩種方式之一建立 AWS Proton 環境:
  • 使用標準環境範本建立、管理和佈建標準環境。為您的環境 AWS Proton 佈建基礎設施。

  • 使用客戶受管環境範本 AWS Proton 連線至客戶受管基礎設施。 您可以在 之外佈建自己的共用資源 AWS Proton,然後提供 AWS Proton 可使用的佈建輸出。

建立環境時,您可以選擇多種佈建方法之一。
  • AWS 受管佈建 – 在單一帳戶中建立、管理和佈建環境。 AWS Proton 佈建您的環境。

    此方法僅支援 CloudFormation 基礎設施程式碼 (IaC) 範本。

  • AWS 受管佈建至另一個帳戶 – 在單一管理帳戶中,建立和管理在具有環境帳戶連線的另一個帳戶中佈建的環境。在另一個帳戶中 AWS Proton 佈建您的環境。如需詳細資訊,請參閱在一個帳戶中建立環境,並在另一個帳戶中佈建環境帳戶連線

    此方法僅支援 CloudFormation IaC 範本。

  • 自我管理佈建 – 使用您自己的佈建基礎設施,將佈建提取請求 AWS Proton 提交至連結的儲存庫。

    此方法僅支援 Terraform IaC 範本。

  • CodeBuild 佈建 – AWS Proton 用來 AWS CodeBuild 執行您提供的 shell 命令。您的命令可以讀取 AWS Proton 提供的輸入,並負責佈建或取消佈建基礎設施和產生輸出值。此方法的範本套件包含資訊清單檔案中的命令,以及這些命令可能需要的任何程式、指令碼或其他檔案。

    使用 CodeBuild 佈建的範例包括使用 AWS Cloud Development Kit (AWS CDK) 佈建 AWS 資源的程式碼,以及安裝 CDK 並執行 CDK 程式碼的資訊清單。

    如需詳細資訊,請參閱CodeBuild 佈建範本套件

    注意

    您可以搭配環境和服務使用 CodeBuild 佈建。目前您無法以這種方式佈建元件。

使用 AWS 受管佈建 (在相同帳戶和另一個帳戶中), AWS Proton 會直接呼叫 來佈建您的 資源。

透過自我管理佈建, AWS Proton 會提取請求,以提供編譯後的 IaC 檔案,供 IaC 引擎用來佈建資源。

如需詳細資訊,請參閱如何 AWS Proton 佈建基礎設施範本套件環境範本套件的結構描述需求

在同一帳戶中建立和佈建標準環境

使用 主控台或 AWS CLI 在單一帳戶中建立和佈建環境。佈建由 管理 AWS。

AWS Management Console
使用 主控台在單一帳戶中建立和佈建環境
  1. AWS Proton 主控台中,選擇環境

  2. 選擇 Create environment (建立環境)。

  3. 選擇環境範本頁面中,選取範本,然後選擇設定

  4. 設定環境頁面的佈建區段中,選擇AWS 受管佈建

  5. 部署帳戶區段中,選擇此 AWS 帳戶

  6. 設定環境頁面的環境設定區段中,輸入環境名稱

  7. (選用) 輸入環境的描述。

  8. 環境角色區段中 AWS Proton ,選取您建立做為 一部分的服務角色設定 AWS Proton 服務角色

  9. (選用) 在元件角色區段中,選取服務角色,讓直接定義的元件能夠在環境中執行,並縮小可佈建的資源範圍。如需詳細資訊,請參閱AWS Proton 元件

  10. (選用) 在標籤區段中,選擇新增標籤,然後輸入索引鍵和值以建立客戶受管標籤。

  11. 選擇下一步

  12. 設定環境自訂設定頁面中,您必須輸入required參數的值。您可以輸入optional參數的值,或在指定時使用預設值。

  13. 選擇下一步並檢閱您的輸入。

  14. 選擇建立

    檢視環境詳細資訊和狀態,以及環境的 AWS 受管標籤和客戶受管標籤。

  15. 在導覽窗格中,選擇 Environments (環境)

    新頁面會顯示您的環境清單,以及狀態和其他環境詳細資訊。

AWS CLI

使用 AWS CLI 在單一帳戶中建立和佈建環境。

若要建立環境,您可以指定AWS Proton 服務角色 ARN、規格檔案路徑、環境名稱、環境範本 ARN、主要和次要版本,以及描述 (選用)。

下一個範例顯示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" } }

建立新環境後,您可以檢視 AWS 和客戶受管標籤的清單,如下列範例 command. AWS Proton automatic 為您產生 AWS 受管標籤所示。您也可以使用 修改和建立客戶受管標籤 AWS CLI。如需詳細資訊,請參閱AWS Proton 資源和標記

命令:

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

在一個帳戶中建立環境,並在另一個帳戶中佈建

使用 主控台或 AWS CLI 在管理帳戶中建立標準環境,在另一個帳戶中佈建環境基礎設施。佈建由 管理 AWS。

使用主控台或 CLI 之前,請完成下列步驟。
  1. 識別管理和環境帳戶的 AWS 帳戶 IDs,並複製以供日後使用。

  2. 在環境帳戶中,建立具有建立環境最低許可 AWS Proton 的服務角色。如需詳細資訊,請參閱AWS Proton 使用 佈建的 服務角色 AWS CloudFormation

AWS Management Console
使用 主控台在一個帳戶中建立環境,並在另一個帳戶中佈建。
  1. 在環境帳戶中,建立環境帳戶連線,並使用它來傳送連線至管理帳戶的請求。
    1. AWS Proton 主控台的導覽窗格中,選擇環境帳戶連線

    2. 環境帳戶連線頁面中,選擇請求連線

      注意

      確認環境帳戶連線頁面標題中列出的帳戶 ID 符合您預先識別的環境帳戶 ID。

    3. 請求連線頁面的環境角色區段中,選取現有服務角色和您為環境建立的服務角色名稱。

    4. 連線至管理帳戶區段中,輸入 AWS Proton 您環境的管理帳戶 ID 和環境名稱。複製名稱以供日後使用。

    5. 選擇頁面右下角的請求連線

    6. 您的請求在傳送至管理帳戶資料表的環境連線中顯示為待定,而模式顯示如何接受來自管理帳戶的請求。

  2. 在管理帳戶中,接受從環境帳戶連線的請求。
    1. 登入您的管理帳戶,然後在 AWS Proton 主控台中選擇環境帳戶連線

    2. 環境帳戶連線頁面的環境帳戶連線請求表中,選取環境帳戶連線與環境帳戶 ID 相符的環境帳戶 ID。

      注意

      確認環境帳戶連線頁面標題中列出的帳戶 ID 符合您預先識別的管理帳戶 ID。

    3. 選擇 Accept (接受)。狀態會從待定變更為已連線。

  3. 在管理帳戶中,建立環境。
    1. 在導覽窗格中,選擇環境範本

    2. 環境範本頁面中,選擇建立環境範本

    3. 選擇環境範本頁面中,選擇環境範本。

    4. 設定環境頁面的佈建區段中,選擇AWS 受管佈建

    5. 部署帳戶區段中,選擇另一個 AWS 帳戶;

    6. 環境詳細資訊區段中,選取您的環境帳戶連線環境名稱

    7. 選擇下一步

    8. 填寫表單並選擇下一步,直到您到達檢閱和建立頁面為止。

    9. 檢閱並選擇建立環境

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 基礎設施做為程式碼檔案

  • 建立環境後, 會 AWS Proton 等待接收有關基礎設施佈建狀態的非同步通知。您的佈建程式碼必須使用 API AWS Proton NotifyResourceStateChange將這些非同步通知傳送至 AWS Proton。

您可以在 主控台或 中使用自我管理佈建 AWS CLI。下列範例示範如何搭配 Terraform 使用自我管理佈建。

AWS Management Console
使用 主控台,使用自我管理佈建來建立 Terraform 環境。
  1. AWS Proton 主控台中,選擇環境

  2. 選擇 Create environment (建立環境)。

  3. 選擇環境範本頁面中,選取 Terraform 範本,然後選擇設定

  4. 設定環境頁面的佈建區段中,選擇自我管理佈建

  5. 佈建儲存庫詳細資訊區段中:

    1. 如果您尚未將佈建儲存庫連結至 AWS Proton ,請選擇新儲存庫,選擇其中一個儲存庫提供者,然後針對 CodeStar 連線,選擇其中一個連線。

      注意

      如果您尚未連線到相關的儲存庫提供者帳戶,請選擇新增 CodeStar 連線。然後,建立連線,然後選擇 CodeStar 連線功能表旁的重新整理按鈕。您現在應該能夠在選單中選擇新的連線。

      如果您已將儲存庫連結至 AWS Proton,請選擇現有的儲存庫

    2. 針對儲存庫名稱,選擇儲存庫。下拉式功能表會顯示現有儲存庫的連結儲存庫,或儲存庫提供者帳戶中的儲存庫清單。

    3. 針對分支名稱,選擇其中一個儲存庫分支。

  6. 環境設定區段中,輸入環境名稱

  7. (選用) 輸入環境的描述。

  8. (選用) 在標籤區段中,選擇新增標籤,然後輸入索引鍵和值以建立客戶受管標籤。

  9. 選擇下一步

  10. 設定環境自訂設定頁面中,您必須輸入required參數的值。您可以輸入optional參數的值,或在指定時使用預設值。

  11. 選擇下一步並檢閱您的輸入。

  12. 選擇建立以傳送提取請求。

    • 如果您核准提取請求,則部署正在進行中。

    • 如果您拒絕提取請求,環境建立會取消。

    • 如果提取請求逾時,環境建立不會完成。

  13. 檢視環境詳細資訊和狀態,以及環境的 AWS 受管標籤和客戶受管標籤。

  14. 在導覽窗格中,選擇 Environments (環境)

    新頁面會顯示您的環境清單,以及狀態和其他環境詳細資訊。

AWS CLI

當您使用自我管理佈建建立環境時,您可以新增 provisioningRepository 參數並省略 ProtonServiceRoleArnenvironmentAccountConnectionId 參數。

使用 AWS CLI 建立具有自我管理佈建的 Terraform 環境。
  1. 建立環境,並將提取請求傳送至儲存庫以供檢閱和核准。

    下一個範例顯示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"