本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 CI/CD 管道以使用 AWS Fargate 方和 Amazon API Gateway 部署微服務
由喬納森·卡多佐 (AWS) 創作
環境:PoC 或試驗 | 技能:DevOps; 容器和微服務 | AWS 服務:AWS CodeBuild;AWS CodeCommit;AWS CodeDeploy;AWS CodePipeline;AWS Fargate |
Summary
此模式說明如何建立連續整合和連續部署 (CI/CD) 管道,在 Amazon Web Services (AWS) 雲端部署微服務。傳統上,建置現代化應用程式涉及將商務邏輯解耦和最佳化為微服務架構,以降低複雜性並改善速度和對齊性。API,服務之間的抽象通信,是微服務的基礎。擁有用於部署微服務和 API 的 CI/CD 管線可加速現代應用程式的開發,並協助維持系統穩定性和安全性。
此模式使用 AWS Fargate 為微服務和 Amazon API Gateway 佈建運算資源,以便管理有效處理微服務之間通訊的 API。CI/CD 管線是透過實作三項 AWS 服務來設定:AWS CodePipeline、AWS CodeBuild 和 AWS CodeDeploy。此模式提供 AWS CloudFormation 範本和 Python 程式碼,以自動化大部分步驟,並包含範例應用程式。
先決條件和限制
先決條件
作用中的 AWS 帳戶
AWS Command Line Interface (AWS CLI) 版本 2 或更新版本 (請參閱安裝、更新和解除安裝 AWS CLI 版本 2在 AWS 文檔中)
Architecture
模式會使用下列 AWS 服務,如下圖所示:
在私有子網路中,AWS Fargate 管理微服務的運算資源,以減輕基礎設施的負擔。
API Gateway er 可處理 API 呼叫,讓您輕鬆地建立、維護和保護任何規模的 API。
AWS KMS 會建立和控制用於加密內容 (例如成品和報告) 的金鑰。
Amazon Simple Storage Service (Amazon S3) 可作為存放管道產生的成品和報告的儲存庫。

下圖說明 CI/CD 工作流程。

Tools
AWS 服務
API Gateway— Amazon API Gateway 可協助建立、發佈、維護、監控和保護 REST、HTTP 和 WebSocket API,以便在您的應用程式和微服務中使用。
AWS CLI
— AWS Command Line Interface (AWS CLI) 是一種開放原始碼工具,可從命令列中用它來與 AWS 服務互動。 CodeCommit— AWS CodeCommit 是全受管原始碼控制服務,可在 AWS 雲端儲存和管理文件、原始碼和二進位檔案。
CodePipeline— AWS CodePipeline 是一種持續交付服務,可協助您模型化和設定軟體發行程序的不同階段。
CodeBuild— AWS CodeBuild 是一種組建服務,可編譯原始碼、執行單元測試,並產生可立即部署的軟體套件。
CodeDeploy
— AWS CodeDeploy 是一種軟體部署服務,可將Amazon Elastic Compute Cloud (Amazon EC2)執行個體, 現場部署執行個體, 無伺服器AWS Lambda函數,或Amazon Elastic Container Service (Amazon ECS)服務。 Fargate— AWS Fargate 是無伺服器運算引擎,可搭配Amazon ECS,並為容器提供隨需、適當大小的運算容量。
Amazon S3— Amazon Simple Storage Service (Amazon S3) 是一種物件儲存服務,可讓您隨時從 Web 上的任何位置儲存和擷取任何數量的資料。
Code
此模式的代碼已附加。您可以下載並解壓縮您的電腦上的專案,以使用史詩部分。
Epics
任務 | 描述 | 所需技能 |
---|---|---|
建立 IAM 使用者。 | 在您的 AWS 帳戶中,建立一個 AWS Identity and Access Management (IAM) 使用者。如需說明,請參閱IAM 文件。 | 開發人員, 系統管理員, DevOps 工程師 |
設定您的登入資料。 | 指派 IAM 使用者的程式設計存取,讓他們可以使用 AWS CLI。如需說明,請參閱AWS CLI 文件。 | 開發人員, 系統管理員, DevOps 工程師 |
測試您的存取。 | 若要驗證是否正確設定 IAM 使用者,請使用下列 AWS CLI 命令:
where | 開發人員, 系統管理員, DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
執行 CloudFormation 範本以部署基礎結構。 | 在 AWS 帳戶中,建立虛擬私有雲端 (VPC),該虛擬私有雲端使用跨兩個可用區域和 Application Load Balancer 設定。若要部署此基礎設施,請使用下列 AWS CLI 命令:
where | 系統管理員, DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
建立管道。 | 開啟雲形化主控台
這個堆疊會建立下列資源:
建立的管線包含下列階段: | 系統管理員, DevOps 工程師 |
檢查部署。 | 您可以檢查從來源到部署建立的管線的每個步驟,在CodePipeline 主控台 管道尚未運行,因為存儲庫是空的。接下來,請設定範例應用程式,並啟動管道。 | 系統管理員, DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
複製您的 CodeCommit 儲存庫。 | 開啟AWS CodeCommit 主控台 在終端機或命令提示視窗中,使用命令複製儲存庫:
where | 開發人員 |
複製範例應用程式檔案。 | 複製儲存庫之後,請複製附件中的內容,並將其放置在新的儲存庫中。您可以在 Linux 或 macOS 上使用下列指令:
where | 開發人員 |
設定您的應用程式參數。 | 變更下列兩個檔案以建立您的微服務。 在 中範本/服務.yaml檔案:
在 中app/main.py檔案:
| 開發人員 |
遞交變更。 | 將更新的檔案發佈至儲存庫:
| 開發人員 |
檢查部署。 | 現在您已完成第一個認可作業,您可以檢查管線的每個步驟,從來源到部署,在CodePipeline 主控台 | 系統管理員, DevOps 工程師 |