本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
如何 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受管佈建時,基礎設施的佈建如下所示:
-
AWS Proton 客戶 (管理員或開發人員) 會建立 AWS Proton 資源 (環境或服務)。客戶為資源選取範本,並提供必要的參數。如需詳細資訊,請參閱下一節:AWS受管佈建的考量。
-
AWS Proton 轉譯用於佈建資源的完整 AWS CloudFormation 範本。
-
AWS Proton 呼叫 AWS CloudFormation 以使用轉譯範本開始佈建。
-
AWS Proton 會持續監控 AWS CloudFormation 部署。
-
佈建完成時, 會在失敗時 AWS Proton 回報錯誤,並在成功時擷取佈建輸出,例如 Amazon VPC ID。
下圖顯示 會直接 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。
CodeBuild 佈建的運作方式
當環境或服務使用 CodeBuild 佈建時,基礎設施的佈建如下所示:
-
AWS Proton 客戶 (管理員或開發人員) 會建立 AWS Proton 資源 (環境或服務)。客戶會選取資源的範本,並提供必要的參數。如需詳細資訊,請參閱下一節:CodeBuild 佈建的考量事項。
-
AWS Proton 會使用用於佈建資源的輸入參數值來轉譯輸入檔案。
-
AWS Proton 呼叫 CodeBuild 來啟動任務。CodeBuild 任務會執行範本中指定的客戶 shell 命令。這些命令會佈建所需的基礎設施,同時選擇性地讀取輸入值。
-
佈建完成時,最終客戶命令會將佈建狀態傳回 CodeBuild,並呼叫 NotifyResourceDeploymentStatusChange AWS Proton API 動作,以提供輸出,例如 Amazon VPC ID。
重要
請確定您的命令正確地將佈建狀態傳回 CodeBuild,並提供輸出。如果沒有, AWS Proton 將無法正確追蹤佈建狀態,也無法為服務執行個體提供正確的輸出。
下圖說明 AWS Proton 執行的步驟,以及命令在 CodeBuild 任務中執行的步驟。

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 客戶 (管理員或開發人員) 會建立 AWS Proton 資源 (環境或服務)。客戶會選取資源的範本,並提供必要的參數。對於 環境,客戶也提供連結的基礎設施儲存庫。如需詳細資訊,請參閱下一節:自我管理佈建的考量事項。
-
AWS Proton 轉譯完整的 Terraform 範本。它包含一或多個 Terraform 檔案,可能位於多個資料夾中,以及
.tfvars
變數檔案。 會將資源建立呼叫上提供的參數值 AWS Proton 寫入此變數檔案。 -
AWS Proton 使用轉譯的 Terraform 範本將 PR 提交至基礎設施儲存庫。
-
當客戶 (管理員或開發人員) 合併 PR 時,客戶的自動化會觸發佈建引擎,以使用合併的範本開始佈建基礎設施。
注意
如果客戶 (管理員或開發人員) 關閉 PR, 會將 PR AWS Proton 識別為關閉,並將部署標記為已取消。
-
佈建完成時,客戶的自動化會呼叫 NotifyResourceDeploymentStatusChange AWS Proton API 動作來表示完成、提供狀態 (成功或失敗),以及如果有的話提供輸出,例如 Amazon VPC ID。
重要
請確定您的自動化程式碼 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。
-
刪除自我管理的佈建資源 – Terraform 模組除了資源定義之外,還可能包含 Terraform 操作所需的組態元素。因此, AWS Proton 無法刪除環境或服務執行個體的所有 Terraform 檔案。反之, 會 AWS Proton 標記要刪除的檔案,並更新 PR 中繼資料中的旗標。您的自動化可以讀取該旗標,並使用它來觸發 terraform 銷毀命令。