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

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

如何AWS Proton佈建基礎設

AWS Proton可以使用以下幾種方式之一佈建基礎架構:

  • AWS-管理佈建 — 代表您AWS Proton呼叫佈建引擎。此方法僅支持AWS CloudFormation模板包。如需詳細資訊,請參閱AWS CloudFormation 合家歡的文件

  • CodeBuild佈建 — AWS Proton 用AWS CodeBuild於執行您提供的殼層命令。您的命令可以讀取AWS Proton提供的輸入,並負責佈建或取消佈建基礎結構,以及產生輸出值。此方法的範本組合包括資訊清單檔案中的命令,以及這些命令可能需要的任何程式、指令碼或其他檔案。

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

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

    注意

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

  • 自我管理佈建 — 向您提供的儲存庫AWS Proton發出提取要求 (PR),您自己的基礎結構部署系統會在其中執行佈建程序。此方法僅支持地形模板包。如需詳細資訊,請參閱地形 IAC 文件

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

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

下圖總結了不同佈建方法的一些主要特徵。表格後面的段落提供有關每個方法的詳細資訊。

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

AWS-管理

清單,模式,IaC 文件()CloudFormation

AWS Proton(通過CloudFormation)

AWS Proton(通過CloudFormation)

CodeBuild

清單(使用命令),模式,命令依賴關係(例如AWS CDK代碼)

AWS Proton(通過CodeBuild)

AWS Proton(您的命令返回狀態CodeBuild)

自我管理

清單,模式,IaC 文件(地形)

您的程式碼 (透過 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-managed 佈建時,管理員需要設定 IAM 角色 (直接或作為AWS Proton環境帳戶連線的一部分)。 AWS Proton使用此角色來佈建這些AWS受管佈建資源的基礎結構。角色應具有用AWS CloudFormation於建立這些資源範本所包含之所有資源的權限。

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

  • 服務佈建 — 當開發人員將使用 AWS-managed 佈建的服務執行個體部署到環境時,AWS Proton會使用提供給該環境的角色來佈建服務執行個體的基礎結構。開發人員看不到這個角色,也無法變更它。

  • 使用管線服務 — 使用 AWS-managed 佈建的服務範本可能包含寫入 AWS CloudFormation YAML 結構描述中的管線定義。 AWS Proton還通過調用創建管道AWS CloudFormation。AWS Proton用來建立管線的角色與每個個別環境的角色不同。此角色僅在AWS帳戶層級提供一次,並且用於佈建和管理所有管理的AWS管道。AWS Proton此角色應具有建立管道和管道所需的其他資源的權限。

    下列程序顯示如何將管道角色提供給AWS Proton。

    AWS Proton console
    提供管線角色
    1. AWS Proton主控台的功能窗格中,選擇 [設定] > [帳戶設定],然後選擇 [設]。

    2. 您可以使用管道管理的角色區段,為 AWS AWS-managed 佈建設定新的或現有的管線角色。

    AWS Proton API
    提供管線角色
    1. 使用 UpdateAccountSettingsAPI 動作。

    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 ProtonCodeBuild打電話開始工作。工CodeBuild作會執行範本中指定的客戶 shell 命令。這些命令會佈建所需的基礎結構,同時選擇性地讀取輸入值。

  4. 佈建完成後,最終的客戶命令會將佈建狀態返回至CodeBuild並呼叫 NotifyResourceDeploymentStatusChangeAWS ProtonAPI 動作以提供輸出,例如 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帳戶層級提供一次,並且用於佈建和管理所有CodeBuild基於管道的角色。AWS Proton此角色應具有建立管道和管道所需的其他資源的權限。

    下列程序顯示如何將管道角色提供給AWS Proton。

    AWS Proton console
    提供管線角色
    1. AWS Proton主控台的功能窗格中,選擇 [設定] > [帳戶設定],然後選擇 [設]。

    2. 您可以使用 Codebuild 管線佈建角色區段來設定用於CodeBuild佈建的新管線角色或現有的管線角色。

    AWS Proton API
    提供管線角色
    1. 使用 UpdateAccountSettingsAPI 動作。

    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 文件組成,可能在多個文件夾中,以及一個.tfvars變量文件。 AWS Proton將資源建立呼叫上提供的參數值寫入此變數檔案。

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

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

    注意

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

  5. 佈建完成後,客戶的自動化會呼叫 NotifyResourceDeploymentStatusChangeAWS ProtonAPI 動作來指示完成、提供狀態 (成功或失敗),並提供如 Amazon VPC ID 的輸出 (如果有的話)。

    重要

    請確定您的自動化程式碼會AWS Proton重新呼叫佈建狀態和輸出。如果沒有,AWS Proton可能會將佈建視為擱置時間超過應該的時間,並持續顯示 [進行中] 狀態。

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

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

自我管理佈建的考量

  • 基礎結構存放庫 — 當管理員為自我管理佈建設定環境時,必須提供連結的基礎結構存放庫。 AWS Proton將 PRs 提交至此儲存區域,以佈建環境的基礎架構以及所有部署至該儲存區域的服務執行個體。存放庫中客戶擁有的自動化動作應假設具有權限的 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. 使用 UpdateAccountSettingsAPI 動作。

    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 中繼資料中更新旗標。您的自動化操作可以讀取該標誌並使用它來觸發地形摧毀命令。