建立環境 - AWS Proton

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

建立環境

學習如何創造AWS Proton環境。

您可以建立兩種類型的環境:

  • 使用建立、管理及佈建標準環境標準環境樣板。AWS Proton為您的環境佈建基礎結構。

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

建立環境時,您可以選擇數種佈建方法之一。

  • AWS-管理佈建— 在單一帳戶中建立、管理和佈建環境。AWS Proton提供您的環境。

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

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

    此方法僅支援 CloudFormation IaC 範本。

  • 自我管理的資訊–AWS Proton使用您自己的佈建基礎結構,將佈建提取請求提交至已註冊的存放庫。

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

搭配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. 選擇 Next (下一步)。

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

  13. 選擇下一頁並檢查您的輸入。

  14. 選擇 Create (建立)。

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

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

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

AWS CLI

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

若要建立環境,您可以指定AWS Proton服務角色ARN,規格文件的路徑,環境名稱,環境模板 ARN,主要和次要版本以及描述(可選)。

下列範例顯示 YAML 格式化的規格檔案,該檔案會指定兩個輸入的值,這些輸入在環境範本結構描述檔中定義。您可以使用get-environment-template-minor-version用於檢視環境範本結構描述的指令。

Spec:

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 Management Console

使用主控台在一個帳戶中建立環境,並在另一個帳戶中進行佈建。

  1. 在環境帳戶中,建立環境帳戶連線,並使用它來傳送連線至管理帳戶的要求。

    1. InAWS Proton安慰,選擇環境帳戶連線在導覽窗格中。

    2. 在 中環境帳戶連線頁面請求連接

      注意

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

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

    4. 在 中Connect 管理帳戶」區段中,輸入管理帳戶 ID和一個環境名稱為您的AWS Proton環境。複製名稱,將於稍後使用。

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

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

  2. 在管理帳戶中,接受從環境帳戶連線的要求。

    1. 登入您的管理帳戶,然後選擇環境帳戶連線中的AWS Protonconsole (&CMWo

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

      注意

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

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

  3. 在管理帳戶中,建立環境。

    1. 選擇環境範本在導覽窗格中。

    2. 在 中環境範本頁面建立環境範本

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

    4. 在 中設定環境頁面佈建區段中,選擇AWS-管理佈建

    5. 在 中部署帳戶區段中,選擇其他AWS帳戶

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

    7. 選擇 Next (下一步)。

    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" } }

使用 get 來檢視您的環境帳戶連線。

執行以下命令:

$ 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. 選擇 Next (下一步)。

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

  11. 選擇下一頁並檢查您的輸入。

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

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

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

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

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

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

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

AWS CLI

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

使用AWS CLI創建具有自我管理配置的 Terraform 環境。

  1. 建立環境並將提取要求傳送至儲存庫以供檢閱和核准。

    下列範例顯示 YAML 格式的規格檔案,該檔案會根據環境範本結構描述檔案定義兩個輸入的值。您可以使用get-environment-template-minor-version用於檢視環境範本結構描述的指令。

    Spec:

    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"