建立環境 - AWS Proton

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

建立環境

學習如何創造 AWS Proton 環境。

您可以使用下列兩種方式之一來建立 AWS Proton 環境:
  • 使用標準環境範本建立、管理及佈建標準環境。 AWS Proton 為您的環境佈建基礎結構。

  • 使用客 AWS Proton 戶管理的環境範本 Connect 至客戶管理的基礎架構。您可以在外部佈建自己的共用資源 AWS Proton,然後提供可 AWS Proton 以使用的佈建輸出。

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

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

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

    此方法僅支持 CloudFormation IaC 模板。

  • 自我管理佈建 — 將佈建提取請求 AWS Proton 提交至具有您自己的佈建基礎結構的連結存放庫。

    此方法僅支持地形 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 在單一帳戶中建立和佈建環境。佈建由管理 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 與客戶管理標籤的清單,如下列範例指令所示。 AWS Proton 自動為您產生 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. 在 [Connect 至管理帳戶] 區段中,輸入您環境的管理帳戶 ID 和 AWS Proton 環境名稱。複製名稱以備日後使用。

    5. 選擇頁面右下角的「要求連線」。

    6. 您的要求在傳送至管理帳戶資料表的環境連線中顯示為待處理,而強制回應顯示如何接受來自管理帳戶的要求。

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

    2. 在 [環境帳戶連線] 頁面的 [環境帳戶連線要求] 表格中,選取環境帳戶 ID 與您預先識別的環境帳戶 ID 相符的環境帳戶連線。

      注意

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

    3. 選擇 Accept (接受)。狀態會從變更PENDING為CONNECTED。

  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 等待收到有關基礎結構佈建狀態的非同步通知。您的佈建程式碼必須使用 AWS Proton NotifyResourceStateChangeAPI將這些非同步通知傳送至 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"