建立環境 - AWS Proton

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

建立環境

學習如何創造AWS Proton環境。

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

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

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

    此方法僅支持CloudFormation基礎設施代碼(IaC)模板。

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

    此方法僅支持CloudFormation合家歡的模板。

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

    此方法僅支持地形 IaC 模板。

  • CodeBuild服務開通—AWS Proton使用AWS CodeBuild以執行您提供的殼層命令。您的命令可以讀取輸入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/AWSProtonServiceRole" \ --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 帳戶管理和環境帳戶的 ID,並複製它們以供日後使用。

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

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

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

      注意

      驗證列在帳戶 ID環境帳號連線頁面標題與您預先識別的環境帳號 ID 相符。

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

    4. 連線至管理帳戶」區段中,輸入管理帳戶識別碼和一個環境名稱為您的AWS Proton環境。複製名稱以備日後使用。

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

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

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

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

  3. 選擇環境範本頁面上,選擇一個地形範本,然後選擇配置

  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"