使用 AWS CodeCommit 和 AWS 在多 CodePipeline 個 AWS 帳戶中部署 CI/CD 管道 - AWS 方案指引

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

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

創建者基蘭庫馬爾錢德拉什卡 (AWS)

環境:PoC 或試點

技術: DevOps

工作負載:所有其他工作

AWS 服務:AWS CodeCommit;AWS CodePipeline

Summary

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

您可以使用多個 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 in 之後 CodePipeline,程式碼會轉換至管線執行的下一個階段。

先決條件和限制

先決條件

  • 每個所需環境 (DevOps、開發人員、測試和生產) 的現有 AWS 帳戶。這些帳戶可由 AWS Organizations 託管。

  • 已安裝設定的 AWS Command Line Interface (AWS CLI) (AWS CLI)。

架構

技術堆疊

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodePipeline

  • Amazon EventBridge

  • AWS Identity and Access Management (IAM)

  • AWS KMS

  • AWS Organizations

  • Amazon S3

工具

  • 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) 是互聯網的存儲。

史诗

任務描述所需技能

創建一個 CodeCommit 存儲庫。

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

DevOps 工程師

建立存 CodeCommit 放庫的存取認證。

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

DevOps 工程師

為 CodePipeline 服務角色建立 IAM 角色。

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

雲端管理員

為您的其他 AWS 帳戶設定 EventBridge 規則。

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

雲端管理員

建立 AWS KMS 金鑰。

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

雲端管理員
任務描述所需技能

設定 EventBridge 以接收來自 DevOps AWS 帳戶的事件。

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

雲端管理員

建立 S3 儲存貯體。

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

雲端管理員

為 CodePipeline 階段建立所有必要的 AWS 資源。

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

雲端管理員

建立 IAM 角色。

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

雲端管理員

在中建立管線 CodePipeline。

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

雲端管理員

對所有 AWS 帳戶重複上述步驟。

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

雲端管理員

相關資源

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

在其他 AWS 帳戶中建立資源

其他資源