如何 AWS Proton 佈建基礎設施 - AWS Proton

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

如何 AWS Proton 佈建基礎設施

AWS Proton 可以透過下列其中一種方式佈建基礎設施:

  • AWS受管佈建 – 代表您 AWS Proton 呼叫佈建引擎。此方法僅支援 AWS CloudFormation 範本套件。如需詳細資訊,請參閱AWS CloudFormation IaC 檔案

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

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

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

    注意

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

  • 自我管理佈建 – 向您提供的儲存庫 AWS Proton 發出提取請求 (PR),其中您自己的基礎設施部署系統會在其中執行佈建程序。此方法僅支援 Terraform 範本套件。如需詳細資訊,請參閱Terraform IaC 檔案

AWS Proton 會分別決定和設定每個環境和服務的佈建方法。當您建立或更新環境或服務時, 會 AWS Proton 檢查您提供的範本套件,並決定範本套件指示的佈建方法。在環境層級,您可以提供環境及其潛在服務為其佈建方法所需的參數:AWS Identity and Access Management (IAM) 角色、環境帳戶連線或基礎設施儲存庫。

無論佈建方法為何,使用 AWS Proton 佈建服務的開發人員都有相同的體驗。開發人員不需要知道佈建方法,也不需要在服務佈建程序中進行任何變更。服務範本會設定佈建方法,以及開發人員部署服務的每個環境,以提供服務執行個體佈建所需的參數。

下圖摘要說明不同佈建方法的一些主要特徵。表格後面的區段提供每個方法的詳細資訊。

佈建方法 範本 佈建者 追蹤的狀態

AWS受管

manifest、結構描述、IaC 檔案 (CloudFormation)

AWS Proton (透過 CloudFormation)

AWS Proton (透過 CloudFormation)

CodeBuild

manifest (使用 命令)、結構描述、命令相依性 (例如 AWS CDK code)

AWS Proton (透過 CodeBuild)

AWS Proton (您的命令會透過 CodeBuild 傳回狀態)

自我管理

manifest、結構描述、IaC 檔案 (Terraform)

您的程式碼 (透過 Git 動作)

您的程式碼 ( AWS 透過 API 呼叫傳遞至 )

AWS受管佈建的運作方式

當環境或服務使用 AWS受管佈建時,基礎設施的佈建如下所示:

  1. AWS Proton 客戶 (管理員或開發人員) 會建立 AWS Proton 資源 (環境或服務)。客戶為資源選取範本,並提供必要的參數。如需詳細資訊,請參閱下一節:AWS受管佈建的考量

  2. AWS Proton 轉譯用於佈建資源的完整 AWS CloudFormation 範本。

  3. AWS Proton 呼叫 AWS CloudFormation 以使用轉譯範本開始佈建。

  4. AWS Proton 會持續監控 AWS CloudFormation 部署。

  5. 佈建完成時, 會在失敗時 AWS Proton 回報錯誤,並在成功時擷取佈建輸出,例如 Amazon VPC ID。

下圖顯示 會直接 AWS Proton 處理大部分的步驟。

說明 中 AWS受管佈建的圖表 AWS Proton

AWS受管佈建的考量

  • 基礎設施佈建角色 – 當環境或其中執行的任何服務執行個體可能使用 AWS受管佈建時,管理員需要設定 IAM 角色 (直接或做為 AWS Proton 環境帳戶連線的一部分)。 AWS Proton 使用此角色來佈建這些 AWS受管佈建資源的基礎設施。角色應該具有使用 的許可 AWS CloudFormation ,以建立這些資源範本包含的所有資源。

    如需詳細資訊,請參閱IAM 角色AWS Proton IAM 服務角色政策範例

  • 服務佈建 – 當開發人員將使用 AWS受管佈建的服務執行個體部署到環境時, AWS Proton 會使用提供給該環境的角色來佈建服務執行個體的基礎設施。開發人員看不到此角色,也無法變更。

  • 具有管道的服務 – 使用 AWS受管佈建的服務範本可能包含在 AWS CloudFormation YAML 結構描述中寫入的管道定義。 AWS Proton 也會呼叫 來建立管道 AWS CloudFormation。 AWS Proton 用來建立管道的角色與每個個別環境的角色不同。此角色單獨提供給 AWS Proton ,僅在 AWS 帳戶層級提供一次,用於佈建和管理所有 AWS受管管道。此角色應具有建立管道和管道所需其他資源的許可。

    下列程序說明如何提供管道角色 AWS Proton。

    AWS Proton console
    提供管道角色
    1. AWS Proton 主控台的導覽窗格中,選擇設定 > 帳戶設定,然後選擇設定

    2. 使用管道 AWS受管角色區段,為 AWS受管佈建設定新的或現有的管道角色。

    AWS Proton API
    提供管道角色
    1. 使用 UpdateAccountSettings API 動作。

    2. pipelineServiceRoleArn 參數中提供管道服務角色的 Amazon Resource Name (ARN)。

    AWS CLI

    提供管道角色

    執行以下命令:

    $ aws proton update-account-settings \ --pipeline-service-role-arn \ "arn:aws:iam::123456789012:role/my-pipeline-role"

CodeBuild 佈建的運作方式

當環境或服務使用 CodeBuild 佈建時,基礎設施的佈建如下所示:

  1. AWS Proton 客戶 (管理員或開發人員) 會建立 AWS Proton 資源 (環境或服務)。客戶會選取資源的範本,並提供必要的參數。如需詳細資訊,請參閱下一節:CodeBuild 佈建的考量事項

  2. AWS Proton 會使用用於佈建資源的輸入參數值來轉譯輸入檔案。

  3. AWS Proton 呼叫 CodeBuild 來啟動任務。CodeBuild 任務會執行範本中指定的客戶 shell 命令。這些命令會佈建所需的基礎設施,同時選擇性地讀取輸入值。

  4. 佈建完成時,最終客戶命令會將佈建狀態傳回 CodeBuild,並呼叫 NotifyResourceDeploymentStatusChange AWS Proton API 動作,以提供輸出,例如 Amazon VPC ID。

    重要

    請確定您的命令正確地將佈建狀態傳回 CodeBuild,並提供輸出。如果沒有, AWS Proton 將無法正確追蹤佈建狀態,也無法為服務執行個體提供正確的輸出。

下圖說明 AWS Proton 執行的步驟,以及命令在 CodeBuild 任務中執行的步驟。

說明 中 CodeBuild 型佈建的圖表 AWS Proton

CodeBuild 佈建的考量事項

  • 基礎設施佈建角色 – 當環境或其中執行的任何服務執行個體可能使用 CodeBuild 型佈建時,管理員需要設定 IAM 角色 (直接或做為 AWS Proton 環境帳戶連線的一部分)。 AWS Proton 使用此角色來佈建這些 CodeBuild 佈建資源的基礎設施。角色應具有使用 CodeBuild 的許可,以便在這些資源佈建的範本中建立命令的所有資源。

    如需詳細資訊,請參閱IAM 角色AWS Proton IAM 服務角色政策範例

  • 服務佈建 – 當開發人員將使用 CodeBuild 佈建的服務執行個體部署至環境時, AWS Proton 會使用提供給該環境的角色來佈建服務執行個體的基礎設施。開發人員看不到此角色,也無法變更。

  • 具有管道的服務 – 使用 CodeBuild 佈建的服務範本可能包含佈建管道的命令。 AWS Proton 也會呼叫 CodeBuild 來建立管道。 AWS Proton 用來建立管道的角色與每個個別環境的角色不同。此角色會在 AWS 帳戶層級 AWS Proton 單獨提供給 一次,用於佈建和管理所有 CodeBuild 型管道。此角色應具有建立管道和管道所需其他資源的許可。

    下列程序說明如何提供管道角色 AWS Proton。

    AWS Proton console
    提供管道角色
    1. AWS Proton 主控台的導覽窗格中,選擇設定 > 帳戶設定,然後選擇設定

    2. 使用 Codebuild 管道佈建角色區段,為 CodeBuild 佈建設定新的或現有的管道角色。

    AWS Proton API
    提供管道角色
    1. 使用 UpdateAccountSettings API 動作。

    2. pipelineCodebuildRoleArn 參數中提供管道服務角色的 Amazon Resource Name (ARN)。

    AWS CLI

    提供管道角色

    執行以下命令:

    $ aws proton update-account-settings \ --pipeline-codebuild-role-arn \ "arn:aws:iam::123456789012:role/my-pipeline-role"

自我管理佈建的運作方式

當環境設定為使用自我管理佈建時,基礎設施的佈建如下所示:

  1. AWS Proton 客戶 (管理員或開發人員) 會建立 AWS Proton 資源 (環境或服務)。客戶會選取資源的範本,並提供必要的參數。對於 環境,客戶也提供連結的基礎設施儲存庫。如需詳細資訊,請參閱下一節:自我管理佈建的考量事項

  2. AWS Proton 轉譯完整的 Terraform 範本。它包含一或多個 Terraform 檔案,可能位於多個資料夾中,以及.tfvars變數檔案。 會將資源建立呼叫上提供的參數值 AWS Proton 寫入此變數檔案。

  3. AWS Proton 使用轉譯的 Terraform 範本將 PR 提交至基礎設施儲存庫。

  4. 當客戶 (管理員或開發人員) 合併 PR 時,客戶的自動化會觸發佈建引擎,以使用合併的範本開始佈建基礎設施。

    注意

    如果客戶 (管理員或開發人員) 關閉 PR, 會將 PR AWS Proton 識別為關閉,並將部署標記為已取消。

  5. 佈建完成時,客戶的自動化會呼叫 NotifyResourceDeploymentStatusChange AWS Proton API 動作來表示完成、提供狀態 (成功或失敗),以及如果有的話提供輸出,例如 Amazon VPC ID。

    重要

    請確定您的自動化程式碼 AWS Proton 以佈建狀態和輸出回撥 。如果不這樣做, AWS Proton 可能會將佈建視為等待超過預期的時間,並繼續顯示進行中狀態。

下圖說明 AWS Proton 執行的步驟,以及您自己的佈建系統執行的步驟。

說明 中自我管理佈建的圖表 AWS Proton

自我管理佈建的考量事項

  • 基礎設施儲存庫 – 當管理員設定自我管理佈建的環境時,他們需要提供連結的基礎設施儲存庫。 會將 PRs AWS Proton 提交至此儲存庫,以佈建環境的基礎設施和部署至該儲存庫的所有服務執行個體。儲存庫中的客戶擁有的自動化動作應擔任具有許可的 IAM 角色,以建立環境和服務範本包含的所有資源,以及反映目的地 AWS 帳戶的身分。如需擔任角色的 GitHub 動作範例,請參閱「設定 AWS 登入資料」動作 GitHub 動作文件中的擔任角色

  • 許可 – 您的佈建程式碼必須視需要向 帳戶進行身分驗證 (例如向 AWS 帳戶進行身分驗證),並提供資源佈建授權 (例如提供角色)。

  • 服務佈建 – 當開發人員部署使用自我管理佈建的服務執行個體至環境時, 會將 PR AWS Proton 提交至與環境相關聯的儲存庫,以佈建服務執行個體的基礎設施。開發人員看不到儲存庫,也無法變更儲存庫。

    注意

    無論佈建方法為何,建立 服務的開發人員都會使用相同的程序,並從中抽象化差異。不過,使用自我管理佈建的開發人員可能會遇到較慢的回應,因為他們需要等到有人 (可能不是自己) 合併基礎設施儲存庫中的 PR,才能開始佈建。

  • 具有管道的服務 – 具有自我管理佈建之環境的服務範本可能包含以 Terraform HCL 撰寫的管道定義 (例如, AWS CodePipeline 管道)。若要讓 AWS Proton 佈建這些管道,管理員會提供連結的管道儲存庫 AWS Proton。佈建管道時,儲存庫中的客戶擁有的自動化動作應擔任具有佈建管道許可的 IAM 角色,以及反映目的地 AWS 帳戶的身分。管道儲存庫和角色與用於每個個別環境的儲存庫和角色不同。連結的儲存庫會在 AWS 帳戶層級 AWS Proton 單獨提供給 一次,用於佈建和管理所有管道。角色應具有建立管道和管道所需其他資源的許可。

    下列程序說明如何提供管道儲存庫和角色 AWS Proton。

    AWS Proton console
    提供管道角色
    1. AWS Proton 主控台的導覽窗格中,選擇設定 > 帳戶設定,然後選擇設定

    2. 使用 CI/CD 管道儲存庫區段來設定新的或現有的儲存庫連結。

    AWS Proton API
    提供管道角色
    1. 使用 UpdateAccountSettings API 動作。

    2. pipelineProvisioningRepository 參數中提供管道儲存庫的提供者、名稱和分支。

    AWS CLI

    提供管道角色

    執行以下命令:

    $ aws proton update-account-settings \ --pipeline-provisioning-repository \ "provider=GITHUB,name=my-pipeline-repo-name,branch=my-branch"
  • 刪除自我管理的佈建資源 – Terraform 模組除了資源定義之外,還可能包含 Terraform 操作所需的組態元素。因此, AWS Proton 無法刪除環境或服務執行個體的所有 Terraform 檔案。反之, 會 AWS Proton 標記要刪除的檔案,並更新 PR 中繼資料中的旗標。您的自動化可以讀取該旗標,並使用它來觸發 terraform 銷毀命令。