使用 AWS CodeCommit 和 AWS CodePipeline 在多個 AWS 帳戶中部署 CI/CD 管道 - AWS Prescriptive Guidance

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

使用 AWS CodeCommit 和 AWS CodePipeline 在多個 AWS 帳戶中部署 CI/CD 管道

由基蘭庫瑪 ‧ 錢德拉瑟卡 (AWS) 創作

環境:PoC 或試驗

技術:DevOps 作業

工作負載:所有其他工作負載

AWS 服務:AWS CodeCommit; AWS CodePipeline

Summary

此模式說明如何在不同的 Amazon Web Services (AWS) 帳戶中為您的應用程式程式碼工作負載部署持續整合/持續交付 (CI/CD) 管道,以供 DevOps、開發人員、預備和生產工作流程使用。

您可以使用多個 AWS 帳戶策略,以提供高層次的資源或安全性隔離最佳化成本,並將您的生產工作流程分開。

您的應用程式的程式碼在所有這些不同的 AWS 帳戶中保持完全相同,並在您的 DevOps 帳戶託管的中央 AWS CodeCommit 存放庫中進行維護。您的開發人員、分段和生產帳戶在此 CodeCommit 存放庫中有不同的 Git 分支。

例如,當程式碼提交至中央 CodeCommit 存放庫中的開發人員 Git 分支時,您 DevOps 帳戶中的 Amazon EventBridge 會通知您開發人員帳戶中的 EventBridge 存放庫變更。在您的開發人員帳戶中,AWS CodePipeline 和來源階段進入InProgress狀態。源代碼階段是從中央的 CodeCommit 存儲庫中的開發人員 Git 分支配置的,並且 CodePipeline 假定服務角色取得 DevOps 作業帳戶。

開發人員分支中的 CodeCommit 儲存庫內容會上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的成品儲存庫,並使用 AWS Key Management Service (AWS KMS) 金鑰加密。在來源階段的狀態變更為Succeeded,代碼將被轉換到下一個階段的管道執行

先決條件和限制

先決條件

  • 每個必要環境 (DevOps、開發人員、預備和生產) 的現有 AWS 帳戶。這些帳戶可以由AWS Organizations

  • AWS Command Line Interface (AWS CLI)、已安裝已配置

Architecture

技術堆疊

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodePipeline

  • Amazon EventBridge

  • AWS Identity and Access Management (IAM)

  • AWS KMS

  • AWS Organizations

  • Amazon S3

Tools

  • AWS CodeBuild— CodeBuild 是全受管的持續整合服務,可編譯來源碼、執行測試,並產生可立即部署的軟體套件。 

  • AWS CodeCommit— CodeCommit 是一項完全受管理的原始碼控制服務,可裝載安全的 GIT 型存放庫

  • AWS CodePipeline— CodePipeline 是一項完全受管的持續傳遞服務,可協助您自動化發行管線,以進行快速且可靠的應用程式和基礎結構更新。 

  • Amazon EventBridge— EventBridge 是無伺服器匯流排服務,可將應用程式與來自各種來源的資料互相連線。

  • AWS Identity and Access Management (IAM)— IAM 可協助您安全管理對 AWS 服務與資源的存取權限。 

  • AWS KMS— AWS Key Management Service (AWS KMS) 可協助您建立和管理加密金鑰,並控制其在各種 AWS 服務和應用程式中的使用。

  • Amazon S3— Amazon Simple Storage Service (Amazon S3) 是網際網路儲存服務。

Epics

任務描述所需技能
建立 CodeCommit 儲存庫。

為 DevOps 帳戶登入 AWS 管理主控台,並開啟 CodeCommit 主控台。建立存放庫,並為您的開發人員、預備和生產 AWS 帳戶設定所有必要的 Git 分支。如需此問題和其他故事的協助,請參閱 < 相關資源 > 一節。

DevOps 工程師
為 CodeCommit 儲存庫建立存取憑證。

在 IAM 主控台上,建立存取認證,以允許應用程式開發人員從 CodeCommit 存放庫推送和提取應用程式的程式碼庫。

DevOps 工程師
為 CodePipeline 服務角色建立 IAM 角色。

在 IAM 主控台上,建立可供所有 CodePipeline 服務角色使用的 IAM 角色,以存取中央 CodeCommit 存放庫。

Cloud 管理員
為其他 AWS 帳戶設定 EventBridge 規則。

在 Amazon EventBridge 主控台上,設定規則,將相關 CodeCommit 存放庫變更的通知傳送到個別開發人員、預備和生產 AWS 帳戶中的 EventBridge。

Cloud 管理員
建立 AWS KMS 金鑰。

在 AWS KMS 主控台上,建立 KMS 金鑰,可讓您個別開發人員、預備和生產 AWS 帳戶中的 CodePipeline 加密和解密成品。

Cloud 管理員
任務描述所需技能
設定 EventBridge 以接收來自 DevOps AWS 帳戶的事件。

登入其中一個個別 AWS 帳戶 (開發人員、預備或生產) 的 AWS 管理主控台。在 Amazon EventBridge 控制台上,設置 EventBridge 從您的 DevOps 帳戶接收 CodeCommit 存儲庫變更事件。

Cloud 管理員
建立 S3 儲存貯體。

在 Amazon S3 主控台上建立 S3 儲存貯體來儲存 CodePipeline 成品。

Cloud 管理員
為 CodePipeline 階段建立所有必要的 AWS 資源。

建立 CodePipeline 階段所需的所有其他 AWS 資源。這些資源將根據 CI/CD 管道中每個 AWS 帳戶的角色而有所不同。

Cloud 管理員
建立 IAM 角色。

在 IAM 主控台上,為 CodePipeline 服務角色建立 IAM 角色。此服務角色必須能夠擔任 DevOps 帳戶中的 IAM 角色,以存取 CodeCommit 儲存庫。

Cloud 管理員
在 CodePipeline 中建立管道。

在 CodePipeline 主控台上建立管道。然後創建一個源階段,指向其個別 Git 分支的 DevOps 帳戶中的 CodeCommit 存儲庫。

Cloud 管理員
針對所有 AWS 帳戶,重複上述步驟。

針對 CI/CD 策略中所需的所有 AWS 帳戶重複這些步驟。

Cloud 管理員

在您的 DevOps AWS 帳戶中建立資源

在其他 AWS 帳戶中建立資源

其他資源