使用 AWS CodePipeline CI/CD 管道部署 AWS 膠合任務 - AWS 方案指引

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

使用 AWS CodePipeline CI/CD 管道部署 AWS 膠合任務

創建者:布魯諾·克萊因(AWS)和路易斯·亨里克山田莊(AWS)

環境:生產

技術: DevOps; 大數據

AWS 服務:AWS AWS Glue CodeCommit;AWS CodePipeline;AWS;AWS

Summary

此模式示範如何將 Amazon Web Services (AWS) CodeCommit 和 AWS CodePipeline 與 AWS Glue 整合,並在開發人員將變更推送至遠端 AWS CodeCommit 儲存庫時立即使用 AWS Lambda 啟動任務。 

當開發人員提交對擷取、轉換和載入 (ETL) 存放庫的變更,並將變更推送到 AWS 時 CodeCommit,會叫用新管道。管道會啟動 Lambda 函數,透過這些變更啟動 AWS Glue 任務。AWS AWS Glue 任務會執行 ETL 任務。

在企業、開發人員和資料工程師希望在提交變更並推送至目標儲存庫後立即啟動工作時,此解決方案非常有用。它有助於實現更高級別的自動化和重現性,從而避免任務啟動和生命週期期間發生錯誤。

先決條件和限制

先決條件

限制

  • AWS Glue 任務成功啟動後,管道就會完成。它不會等待工作的結束。

  • 附件中提供的代碼僅用於演示目的。

架構

目標技術堆疊

  • AWS Glue

  • AWS Lambda

  • AWS CodePipeline

  • AWS CodeCommit

目標架構

該過程包括以下步驟:

  1. 開發人員或資料工程師對 ETL 程式碼進行修改、提交,並將變更推送至 AWS。 CodeCommit

  2. 推送會啟動管線。

  3. 管道會啟動 Lambda 函數,該函數會在儲存庫codecommit:GetFile上呼叫,並將檔案上傳到亞馬遜簡單儲存服務 (Amazon S3)。

  4. Lambda 函數會使用 ETL 程式碼啟動新的 AWS AWS Glue 任務。

  5. Lambda 函數完成管道。

自動化和規模

範例附件示範如何將 AWS Glue 與 AWS 整合 CodePipeline。它提供了一個基準示例,您可以自定義或擴展以供自己使用。有關詳細信息,請參見史詩部分。

工具

  • AWS CodePipeline — AWS CodePipeline 是全受管的持續交付服務,可協助您自動化發行管道,以快速可靠地更新應用程式和基礎設施。

  • AWS CodeCommit — AWS CodeCommit 是一種全受管的原始檔控制服務,可託管安全的 Git 型存放庫。

  • AWS Lambda — AWS Lambda 是一種無伺服器運算服務,可讓您執行程式碼,而無需佈建或管理伺服器。

  • AWS Glue — AWS Glue 是一種無伺服器資料整合服務,可讓您輕鬆探索、準備和合併資料,以進行分析、機器學習和應用程式開發。

  • Git 客戶端 — Git 提供 GUI 工具,或者您可以使用命令行或桌面工具從 GitHub. 

  • AWS CDK — AWS CDK 是開放原始碼軟體開發架構,可協助您使用熟悉的程式設計語言定義雲端應用程式資源。

史诗

任務描述所需技能
設定 AWS CLI。

將 AWS Command Line Interface (AWS CLI) (AWS CLI) 設定為目標並使用您目前的 AWS 帳戶進行驗證。如需相關指示,請參閱 AWS CLI 文件

開發者、 DevOps 工程師
解壓縮範例專案檔案。

從附件中解壓縮檔案,以建立包含範例專案檔案的資料夾。

開發者、 DevOps 工程師
部署範例程式碼。

解壓縮檔案後,請從擷取位置執行以下命令以建立基準範例:

cdk bootstrap cdk deploy git init git remote add origin <code-commit-repository-url> git stage . git commit -m "adds sample code" git push --set-upstream origin main

執行最後一個命令後,您可以監控管道和 AWS Glue 任務的狀態。

開發者、 DevOps 工程師
自訂程式碼。

根據您的業務需求自訂 etl.py 檔案的程式碼。您可以修改 ETL 代碼,修改管道階段或擴展解決方案。

數據工程師

相關資源

附件

若要存取與此文件相關聯的其他內容,請解壓縮下列檔案:attachment.zip