本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
ADDF 架構和術語
在了解本指南中的安全和操作主題之前,請務必先深入了解自動駕駛資料架構 (ADDF) 的術語、元件和架構。本節包含下列主題:
ADDF 術語
ADDF 的重要術語如下:
-
ADDF 模組 – 模組是基礎設施即程式碼 (IaC),用於在進階駕駛輔助系統 (ADAS) 中實作常見任務。常見任務包括設定集中式資料儲存、資料處理管道、視覺化機制、搜尋介面、模擬工作負載、分析介面和預先建置的儀表板。您可以根據自己的需求建立模組,也可以重複使用或自訂現有的模組。
您可以使用 AWS Cloud Development Kit (AWS CDK) 定義 ADDF 模組,或者您可以使用任何常見的 IaC 架構 (例如 Hashicorp Terraform 或 AWS CloudFormation) 來實作 ADDF 模組。模組具有一組輸入參數。輸入參數可能取決於來自其他模組的輸出值。ADDF 模組是 ADDF 目標 AWS 帳戶 的最小部署單位。
-
ADDF 部署清單檔案 – 此檔案定義獨立 ADDF 模組的協同運作。協同運作指的是模組的部署順序。在 ADDF 部署清單檔案中,您可以使用 ADDF 群組將相關模組分組在一起。在此檔案中,您也可以定義 ADDF 工具鏈 AWS 帳戶、ADDF 目標 AWS 帳戶 和目標 AWS 區域。
-
ADDF 部署架構 – 此架構根據 ADDF 部署清單檔案中定義的協同運作將 ADDF 模組部署到 ADDF 目標 AWS 帳戶 中。ADDF 部署架構透過使用下列 AWS 開放原始碼專案實作:
-
SeedFarmer
(GitHub) – SeedFarmer 是用於 ADDF 部署的 CLI 工具。其管理每個模組狀態、準備並封裝模組程式碼、為 ADDF 部署角色建立最低權限政策,同時提供 CodeSeeder 用於部署的語意指令。您可以直接與 SeedFarmer 互動以執行 ADDF 部署,也可以將其整合到持續整合和持續部署 (CI/CD) 管道中。 -
CodeSeeder
(GitHub) – CodeSeeder 透過 AWS CodeBuild 作業部署任意基礎設施即程式碼套件。SeedFarmer 會自動協同運作和執行 CodeSeeder。只有 SeedFarmer 直接與 CodeSeeder 互動。
ADDF 部署架構旨在支援單一帳戶和多帳戶架構中的部署。根據您組織的要求,由您決定是否需要單一帳戶或多帳戶架構。
-
-
ADF 工具鏈 AWS 帳戶– 此帳戶協調和管理模組部署到 ADF 目標 AWS 帳戶,根據 ADF 部署資訊清單檔案中的定義。一個 ADDF 部署只能具有一個 ADDF 工具鏈 AWS 帳戶。在單一帳戶架構中,ADDF 工具鏈 AWS 帳戶 也是 ADDF 目標 AWS 帳戶。此帳戶包含 AWS Identity and Access Management (IAM) 角色,稱為 ADDF 工具鏈 IAM 角色,在 ADDF 部署過程中由 SeedFarmer 擔任。在本指南中,我們將 ADDF 工具鏈 AWS 帳戶 稱為工具鏈帳戶。
-
ADDF 目標 AWS 帳戶 – 這些是您要在其中部署 ADDF 模組的目標帳戶。您可以具有一或多個目標帳戶。這些帳戶包含 ADDF 部署清單檔案及其映射模組中描述的資源和應用程式邏輯。在單一帳戶架構中,ADDF 目標 AWS 帳戶 也是 ADDF 工具鏈 AWS 帳戶。每個 ADDF 目標帳戶都包含 IAM 角色,稱為 ADDF 部署 IAM 角色,在部署過程中由 CodeSeeder 擔任。在本指南中,我們將 ADDF 目標 AWS 帳戶 稱為目標帳戶。
-
ADDF 執行個體 – 當您在雲端中部署 ADDF 和模組時 (如 ADDF 部署清單檔案中所定義),這將成為 ADDF 執行個體。ADDF 執行個體可以具有單一帳戶或多帳戶架構,且您可以部署多個 ADDF 執行個體。如需有關選擇執行個體數量和為您的使用案例設計帳戶架構的詳細資訊,請參閱 定義您的 ADDF 架構。
ADDF 架構
下圖顯示了 AWS 雲端 中 ADDF 執行個體的高層級架構。它顯示了多帳戶架構,包括一個專用工具鏈帳戶和兩個目標帳戶。本指南討論使用 ADDF 將資源部署至目標帳戶的端對端程序。
![ADF 本機程式碼、部署清單檔案以及具有工具鏈和目標帳戶的 AWS 架構。](images/addf-architecture-diagram.png)
-
建立和引導 ADDF AWS 帳戶。
為了正常運行,每個帳戶都必須引導至 ADDF 和 AWS CDK。如果這是新的 ADDF 部署,或者您要新增目標帳戶,請執行下列操作:
注意
只有當您最初部署 ADDF 或新增目標帳戶時,才需要執行此步驟。此步驟不是重複發生 ADDF 部署至已建立的 ADDF 執行個體的一部分。
-
建立或自訂 ADDF 模組。
根據您嘗試解決的特定問題建立或自訂 ADDF 模組。您的模組應代表一個獨立的任務或一組任務。視需要定義模組的輸入參數,並使用模組輸出值作為其他模組的輸入參數。
-
在 ADDF 部署清單檔案中定義模組協同運作。
在 ADDF 清單檔案中,將模組整理為群組並定義這些群組之間的部署順序和相依性。在此檔案中,您還為每個 ADDF 群組及其模組指定單一工具鏈帳戶和目標帳戶 (包括 AWS 區域)。
-
評估 ADDF 部署清單檔案並建立部署範圍。
ADDF 開發人員或 CI/CD 管道 (例如 AWS CodePipeline) 透過呼叫 CLI 工具 SeedFarmer 開始評估 ADDF 部署清單檔案。若要開始評估:
-
SeedFarmer 使用 ADDF 部署清單檔案作為評估的輸入參數。
-
若要承擔 ADDF 工具鏈 IAM 角色,SeedFarmer 需要與步驟 1 中 ADDF 引導過程中定義的相同、有效的 IAM 角色或使用者憑證。
如果 SeedFarmer 沒有正確的憑證來擔任 ADDF 工具鏈 IAM 角色或無法存取 ADDF 部署清單檔案,則評估不會啟動。
如果 SeedFarmer 可以開始評估,則它將擔任工具鏈帳戶中的 ADDF 工具鏈 IAM 角色。從那裡,SeedFarmer 可以透過擔任該帳戶中的 ADDF 部署 IAM 角色來存取任何目標帳戶。然後,SeedFarmer 嘗試讀取工具鏈帳戶和目標帳戶中的任何 ADDF 中繼資料。以下其中一種情況將發生:
-
如果沒有要讀取的 ADDF 中繼資料,表示這是新的 ADDF 執行個體。SeedFarmer 會確定部署範圍是整個 ADDF 部署清單檔案及其內容。
-
如果 ADDF 中繼資料存在,SeedFarmer 會將 ADDF 部署清單檔案及其內容與目標帳戶中現有的已部署成品的 MD5 雜湊進行比較。如果偵測到可部署的變更,則此程序會繼續。如果未偵測到任何可部署的變更,則表示此程序已完成。
-
-
將範圍內的 ADDF 模組部署至目標帳戶。
根據 ADDF 部署清單檔案和上一步的評估結果,CodeSeeder 現在具有要執行的部署的排序清單。根據該排序清單,CodeSeeder 在每個關聯的目標帳戶中擔任 ADDF 部署 IAM 角色。然後,它在 AWS CodeBuild 作業中執行 CodeSeeder,以建立或更新 ADDF 模組的個別 IaC 部署,例如 AWS CDK 應用程式。依預設,ADDF 使用 AWS CDK 作為 IaC 架構,但也支援其他常見 IaC 架構。每個目標帳戶的程序完成後,您將擁有一個完全部署的、跨帳戶的端對端 ADAS 型工作流程,如您在 ADDF 部署清單檔案中定義。
如果您使用單一帳戶架構,則工具鏈帳戶和目標帳戶是相同帳戶,且同一個帳戶具有所述的所有功能。
-
使用 ADDF 部署的基礎設施。
ADAS 開發人員可以使用已部署的 ADAS 型工作流程,如您的使用案例所定義。
此工作流程描述 ADDF 多帳戶環境的單一執行個體的架構。根據您的開發、部署和操作模型,我們建議您在多階段環境中執行多個 ADDF 執行個體。典型設定可能包括專用 ADDF 執行個體,其中每個部署階段都具有專用 AWS 帳戶,例如用於開發、測試和生產的分支。您也可以在相同 AWS 區域 的相同單一帳戶或多帳戶環境中執行多個 ADDF 執行個體,假設您為每個 ADDF 執行個體建立了唯一的資源命名空間。如需更多詳細資訊,請參閱 定義您的 ADDF 架構。