操作說明AWS Proton規定基礎設施 - AWS Proton

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

操作說明AWS Proton規定基礎設施

AWS Proton可利用兩種方式佈建基礎設施:AWS-管理佈建自我管理佈建。搭配AWS-管理佈建,AWS Proton代表您呼叫佈建引擎。使用自我管理佈建AWS Proton向您提供的儲存庫發出提取要求 (PR),您自己的基礎結構部署系統會執行佈建程序。

在這個時候,AWS-管理佈建支援AWS CloudFormation範本和自我管理佈建支援 Terraform 範本。如需兩種基礎結構即程式碼 (IaC) 範本格式的詳細資訊,請參閱AWS Proton基礎設施作為代碼文件

您可以在環境層級選擇佈建方法。當您建立或更新環境時,您可以選擇它是否使用AWS-託管或自我管理的佈建。然後,您可以提供必要的參數 — 例如AWS Identity and Access Management(IAM) 角色或基礎架構儲存庫。部署到環境的所有服務執行個體都使用與環境本身相同的佈建方法。您無法在執行個體層級變更佈建方法。

使用的開發人員AWS Proton提供服務在這兩種情況下都具有相同的經驗。開發人員不需要知道佈建方法,也不需要變更服務佈建程序中的任何項目。他們選擇部署服務以決定佈建行為的環境。

操作說明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 Proton使用提供給該環境的角色來佈建服務執行個體的基礎結構。開發人員看不到這個角色,也無法變更它。

  • 有管道的服務— 環境的服務範本AWS-管理的佈建可能包含管線定義 (例如AWS CodePipeline管道),寫在AWS CloudFormationYAML 架構。AWS Proton還通過調用創建管道AWS CloudFormation。角色AWS Proton用於創建管道是獨立於每個單獨環境的角色。這個角色提供給 ProtonAWS Proton分別地,只有一次AWS帳戶級別,用於佈建和管理所有管道。此角色應具有建立管道和管道所需的其他資源的權限。

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

    AWS Proton console

    提供管線角色

    1. 在 中AWS Proton安慰的導覽窗格中,選擇設定 > 帳戶設定下一步。設定

    2. 使用CI/CD 管道角色部分以配置新的或現有的管線服務角色。

    AWS Proton API

    提供管線角色

    1. 使用UpdateAccountSettingsAPI 動作。

    2. 在下列區段中提供管線服務角色的 Amazon Resource Name (ARN)pipelineServiceRoleArn參數。

    AWS CLI

    提供管線角色

    執行以下命令:

    $ aws proton update-account-settings \ --pipeline-service-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,AWS Proton將 PR 識別為已關閉,並將部署標記為已取消。

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

    重要

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

下圖說明下列步驟AWS Proton執行和您自己的佈建系統執行的步驟。


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

自我管理佈建的考量

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

  • 服務佈建— 當開發人員為其服務實例選擇具有自我管理佈建的環境時,AWS Proton將 PR 提交至關聯的儲存庫,以佈建服務執行個體的基礎結構。開發人員看不到存儲庫,也無法更改它。

    注意

    無論環境使用哪種佈建方法,在環境中建立服務的開發人員都會使用相同的程序,而且差異會從中抽取出來。但是,使用自我管理的佈建,開發人員可能會遇到較慢的回應,因為他們需要等到有人(可能不是本身)合併基礎結構存放庫中的 PR,然後才能啟動佈建。

  • 有管道的服務— 具有自我管理佈建之環境的服務範本可能包含管線定義 (例如,AWS CodePipeline管道),寫在地形 HCL。啟用AWS Proton若要佈建這些管道,管理員會提供連結的管線存放庫AWS Proton。佈建管道時,儲存庫中客戶擁有的自動化動作應假設具有佈建管道許可的 IAM 角色,以及反映目標的身分識別AWS帳戶。管線存放庫和角色與用於每個個別環境的存放庫和角色不同。鏈接的存儲庫被提供給 ProtonAWS Proton分別地,只有一次AWS帳戶級別,用於佈建和管理所有管道。該角色應具有建立管道和管道所需的其他資源的權限。

    下列程序顯示如何將管線儲存庫和角色提供給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 元數據中更新了一個標誌。您的自動化操作可以讀取該標誌並使用它來觸發地形摧毀命令。