本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 GitHub Actions、Artifactory 和 Terraform 在多儲存庫設定中自動化 AWS Supply Chain 資料湖的部署
Keshav Ganesh,Amazon Web Services
摘要
此模式提供自動化方法來使用多儲存庫持續整合和持續部署 (CI/CD) 管道來部署和管理 AWS Supply Chain 資料湖。它示範了兩種部署方法:使用 GitHub Actions 工作流程自動部署,或直接使用 Terraform 手動部署。這兩種方法都使用 Terraform for infrastructure as code (IaC),搭配自動方法新增 GitHub Actions 和 JFrog Artifactory 來增強 CI/CD 功能。
解決方案利用 AWS Supply Chain AWS Lambda和 Amazon Simple Storage Service (Amazon S3) 來建立資料湖基礎設施,同時使用任一部署方法來自動化組態和資源建立。此自動化可消除手動組態步驟,並確保跨環境進行一致的部署。此外, AWS Supply Chain 不需要在擷取、轉換和載入 (ETL) 方面擁有深入的專業知識,並且可以提供採用 Amazon Quick Sight 技術的洞見和分析。
透過實作此模式,組織可以縮短部署時間、將基礎設施維護為程式碼,並透過版本控制的自動化程序來管理供應鏈資料湖。多儲存庫方法提供精細的存取控制,並支援獨立部署不同的元件。團隊可以選擇最適合其現有工具和程序的部署方法。
先決條件和限制
先決條件
請確定本機電腦上已安裝下列項目:
在部署之前,請確定已備妥下列項目:
作用中 AWS 帳戶。
虛擬私有雲端 (VPC), AWS 區域 在您的 中選擇的 AWS 帳戶 中有兩個私有子網路。
用於部署至下列服務的 AWS Identity and Access Management (IAM) 角色的足夠許可:
AWS Supply Chain – 偏好完整存取來部署其元件,例如資料集和整合流程,以及從 存取。 AWS 管理主控台
Amazon CloudWatch Logs – 用於建立和管理 CloudWatch 日誌群組。
Amazon Elastic Compute Cloud (Amazon EC2) – 適用於 Amazon EC2 安全群組和 Amazon Virtual Private Cloud (Amazon VPC) 端點。
Amazon EventBridge – 供 使用 AWS Supply Chain。
IAM – 用於建立 AWS Lambda 服務角色。
AWS Key Management Service (AWS KMS) – 用於存取 AWS KMS keys 用於 Amazon S3 成品儲存貯體和 Amazon S3 AWS Supply Chain 預備儲存貯體的 。
AWS Lambda – 用於建立部署 AWS Supply Chain 元件的 Lambda 函數。
Amazon S3 – 用於存取 Amazon S3 成品儲存貯體、伺服器存取記錄儲存貯體和 AWS Supply Chain 預備儲存貯體。如果您使用手動部署,也需要 Amazon S3 Terraform 成品儲存貯體的許可。
Amazon VPC – 用於建立和管理 VPC。
如果您偏好使用 GitHub 動作工作流程進行部署,請執行下列動作:
為具有先前提及許可的 IAM 角色設定 OpenID Connect (OIDC)
。 建立具有類似許可的 IAM 角色來存取 AWS 管理主控台。如需詳細資訊,請參閱 IAM 文件中的建立角色以授予許可給 IAM 使用者。
如果您偏好手動部署,請執行下列動作:
建立 IAM 使用者以擔任具有先前提及許可的 IAM 角色。如需詳細資訊,請參閱 IAM 文件中的建立角色以授予許可給 IAM 使用者。
在您的本機終端機中擔任 角色。
如果您偏好使用 GitHub 動作工作流程進行部署,請設定下列項目:
取得主機名稱、登入使用者名稱和登入存取權杖的 JFrog Artifactory 帳戶
。 用於存放成品的 JFrog 專案金鑰和儲存庫
。
限制
AWS Supply Chain 執行個體不支援複雜的資料轉換技術。
AWS Supply Chain 最適合供應鏈網域,因為它提供內建的分析和洞見。對於任何其他網域, AWS Supply Chain 可以用作資料湖架構中的資料存放區。
此解決方案中使用的 Lambda 函數可能需要增強,才能在生產規模部署中處理 API 重試和記憶體管理。
有些 AWS 服務 不適用於所有 AWS 區域。如需區域可用性,請參閱AWS 依區域的服務
。如需特定端點,請參閱服務端點和配額,然後選擇服務的連結。
Architecture
您可以使用自動化 GitHub 動作工作流程或使用 Terraform 手動部署此解決方案。
使用 GitHub 動作自動部署
下圖顯示使用 GitHub 動作工作流程的自動化部署選項。JFrog Artifactory 用於成品管理。它存放資源資訊和輸出,以用於多儲存庫部署。

使用 Terraform 手動部署
下圖顯示透過 Terraform 的手動部署選項。Amazon S3 用於成品管理,而不是 JFrog Artifactory。

部署工作流程
圖表顯示下列工作流程:
使用下列其中一種部署方法部署 AWS Supply Chain 服務資料集基礎設施和資料庫:
自動化部署 – 使用 GitHub Actions 工作流程協調所有部署步驟,並使用 JFrog Artifactory 進行成品管理。
手動部署 – 直接針對每個部署步驟執行 Terraform 命令,並使用 Amazon S3 進行成品管理。
建立 AWS Supply Chain 服務操作所需的支援 AWS 資源:
Amazon VPC 端點和安全群組
AWS KMS keys
CloudWatch Logs 日誌群組
建立和部署下列基礎設施資源:
管理 (建立、更新和刪除) AWS Supply Chain 服務執行個體、命名空間和資料集的 Lambda 函數。
AWS Supply Chain 暫存 Amazon S3 儲存貯體以進行資料擷取
部署 Lambda 函數,管理預備儲存貯體和 AWS Supply Chain 資料集之間的整合流程。部署完成後,剩餘的工作流程步驟會管理資料擷取和分析。
設定 AWS Supply Chain 暫存 Amazon S3 儲存貯體的來源資料擷取。
將資料新增至 AWS Supply Chain 預備 Amazon S3 儲存貯體後,服務會自動觸發至 AWS Supply Chain 資料集的整合流程。
AWS Supply Chain 與 Quick Sight Analytics 整合,以根據擷取的資料產生儀表板。
工具
AWS 服務
Amazon CloudWatch Logs 可協助您集中所有系統、應用程式的日誌, AWS 服務 以便您可以監控日誌並將其安全地存檔。
AWS Command Line Interface (AWS CLI) 是一種開放原始碼工具,可協助您 AWS 服務 透過命令列 shell 中的命令與 互動。
Amazon Elastic Compute Cloud (Amazon EC2) 在 AWS 雲端中提供可擴展的運算容量。您可以視需要啟動任意數量的虛擬伺服器,,並快速進行擴展或縮減。
Amazon EventBridge 是一種無伺服器事件匯流排服務,可協助您將應用程式與來自各種來源的即時資料連線。例如, AWS Lambda 函數、使用 API 目的地的 HTTP 調用端點,或其他事件匯流排 AWS 帳戶。
AWS Identity and Access Management (IAM) 透過控制已驗證並獲授權使用的人員,協助您安全地管理對 AWS 資源的存取。
AWS IAM Identity Center 可協助您集中管理所有 AWS 帳戶 和雲端應用程式的單一登入 (SSO) 存取。
AWS Key Management Service (AWS KMS) 可協助您建立和控制密碼編譯金鑰,以協助保護您的資料。
AWS Lambda 是一項運算服務,可協助您執行程式碼,無需佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展,因此您只需按使用的運算時間付費。
Amazon Q in AWS Supply Chain 是互動式生成式 AI 助理,可透過分析 AWS Supply Chain 資料湖中的資料,協助您更有效率地操作供應鏈。
Amazon Quick Sight 是一種雲端規模的商業智慧 (BI) 服務,可協助您在單一儀表板中視覺化、分析和報告您的資料。
Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。
AWS Supply Chain 是以雲端為基礎的受管應用程式,可作為供應鏈網域組織中的資料存放區,可用於產生洞見並對擷取的資料進行分析。
Amazon Virtual Private Cloud (Amazon VPC) 可協助您在已定義的虛擬網路中啟動 AWS 資源。此虛擬網路與您在自己的資料中心中操作的傳統網路相似,且具備使用 AWS可擴展基礎設施的優勢。Amazon VPC 端點是一種虛擬裝置,可協助您將 VPC 私下連線至支援的 , AWS 服務 而不需要網際網路閘道、NAT 裝置、VPN 連線或 AWS Direct Connect 連線。
其他工具
GitHub Actions
是與 GitHub 儲存庫緊密整合的持續整合和持續交付 (CI/CD) 平台。您可以使用 GitHub 動作來自動化建置、測試和部署管道。 HashiCorp Terraform
是一種基礎設施即程式碼 (IaC) 工具,可協助您建立和管理雲端和內部部署資源。 JFrog Artifactory
透過應用程式交付程序,提供二進位檔和成品的end-to-end自動化和管理。 Python
是一種一般用途的電腦程式設計語言。此模式使用 Python 讓 AWS 函數的程式碼與 互動 AWS Supply Chain .
最佳實務
實作此模式時,請盡可能維持最高的安全性。如先決條件中所述,請確定具有兩個私有子網路的虛擬私有雲端 (VPC) 位於 AWS 區域 您選擇的 AWS 帳戶 中的 中。
盡可能使用 AWS KMS 客戶受管金鑰,並授予他們有限的存取許可。
若要設定具有擷取此模式資料所需最低存取權的 IAM 角色,請參閱此模式儲存庫中的從來源系統安全資料擷取至 Amazon S3
。
史詩
| 任務 | Description | 所需的技能 |
|---|---|---|
複製儲存庫。 | 若要複製此模式的儲存庫,請在本機工作站中執行下列命令:
| AWS DevOps |
(自動化選項) 驗證部署的先決條件。 | 請確定自動化部署的先決條件已完成。 | 應用程式擁有者 |
(手動選項) 準備部署 AWS Supply Chain 資料集。 | 若要前往 的
若要擔任在先決條件中建立的角色 ARN,請執行下列命令:
若要設定和匯出環境變數,請執行下列命令:
| AWS DevOps |
(手動選項) 準備管理部署中的 AWS Supply Chain 整合流程。 | 若要前往 的
若要擔任先前建立的角色 ARN,請執行下列命令:
若要設定和匯出環境變數,請執行下列命令:
| 應用程式擁有者 |
| 任務 | Description | 所需的技能 |
|---|---|---|
複製 | 若要將
| AWS DevOps |
設定 | 若要在您的組織中
| AWS DevOps |
在 .github 工作流程檔案中設定分支名稱。 | 在部署
| 應用程式擁有者 |
設定 GitHub 環境並設定環境值。 | 若要在 GitHub 組織中設定 GitHub 環境,請使用此模式儲存庫中設定 GitHub 環境 若要在工作流程檔案中設定環境值 | 應用程式擁有者 |
觸發工作流程。 | 若要將您的變更推送到您的 GitHub 組織並觸發部署工作流程,請執行下列命令:
| AWS DevOps |
| 任務 | Description | 所需的技能 |
|---|---|---|
複製 | 若要將
| AWS DevOps |
設定 | 若要將
| AWS DevOps |
在 .github 工作流程檔案中設定分支名稱。 | 在部署
| 應用程式擁有者 |
設定 GitHub 環境並設定環境值。 | 若要在 GitHub 組織中設定 GitHub 環境,請使用此模式儲存庫中設定 GitHub 環境 若要在工作流程檔案中設定環境值 | 應用程式擁有者 |
觸發工作流程。 | 若要將您的變更推送到您的 GitHub 組織並觸發部署工作流程,請執行下列命令:
| AWS DevOps |
| 任務 | Description | 所需的技能 |
|---|---|---|
導覽至 | 若要前往 的
| AWS DevOps |
設定 Terraform 狀態 Amazon S3 儲存貯體。 | 若要設定 Terraform 狀態 Amazon S3 儲存貯體,請使用下列指令碼:
| AWS DevOps |
設定 Terraform 成品 Amazon S3 儲存貯體。 | 若要設定 Terraform 成品 Amazon S3 儲存貯體,請使用下列指令碼:
| AWS DevOps |
設定 Terraform 後端和提供者組態。 | 若要設定 Terraform 後端和提供者組態,請使用下列指令碼:
| AWS DevOps |
產生部署計畫。 | 若要產生部署計畫,請執行下列命令:
| AWS DevOps |
部署組態。 | 若要部署組態,請執行下列命令:
| AWS DevOps |
更新其他組態並存放輸出。 | 若要更新 AWS KMS 金鑰政策,並將套用的組態輸出存放在 Terraform 成品 Amazon S3 儲存貯體中,請執行下列命令:
| AWS DevOps |
| 任務 | Description | 所需的技能 |
|---|---|---|
導覽至 | 若要前往 的
| AWS DevOps |
設定 Terraform 後端和提供者組態。 | 若要設定 Terraform 後端和提供者組態,請使用下列指令碼:
| AWS DevOps |
產生部署計畫。 | 若要產生部署計畫,請執行下列命令。這些命令會初始化您的 Terraform 環境、將來自 的組態變數
| AWS DevOps |
部署組態。 | 若要部署組態,請執行下列命令:
| AWS DevOps |
更新其他組態。 | 若要更新 AWS KMS 金鑰政策,並將套用的組態輸出存放在 Terraform 成品 Amazon S3 儲存貯體中,請執行下列命令:
| AWS DevOps |
| 任務 | Description | 所需的技能 |
|---|---|---|
上傳範例 CSV 檔案。 | 若要上傳資料集的範例 CSV 檔案,請使用下列步驟:
| 資料工程師 |
| 任務 | Description | 所需的技能 |
|---|---|---|
設定 AWS Supply Chain 存取權。 | 若要從 設定 AWS Supply Chain 存取權 AWS 管理主控台,請使用下列步驟:
| 應用程式擁有者 |
| 任務 | Description | 所需的技能 |
|---|---|---|
導覽至 | 若要前往 的
| AWS DevOps |
設定 Terraform 後端和提供者組態。 | 若要設定 Terraform 後端和提供者組態,請使用下列指令碼:
| AWS DevOps |
產生基礎設施銷毀計畫。 | 若要透過產生詳細的捨棄計畫來準備 AWS 基礎設施的受控銷毀,請執行下列命令。程序會初始化 Terraform、整合 AWS Supply Chain 資料集組態,並建立銷毀計畫,供您在執行之前檢閱。
| AWS DevOps |
執行基礎設施銷毀計畫。 | 若要執行基礎設施的計劃銷毀,請執行下列命令:
| AWS DevOps |
從 Amazon S3 儲存貯體移除 Terraform 輸出。 | 若要移除部署 期間上傳的輸出檔案
| AWS DevOps |
| 任務 | Description | 所需的技能 |
|---|---|---|
導覽至 | 若要前往 的
| AWS DevOps |
設定 Terraform 後端和提供者組態。 | 若要設定 Terraform 後端和提供者組態,請使用下列指令碼:
| AWS DevOps |
產生基礎設施銷毀計畫。 | 若要建立銷毀 AWS Supply Chain 資料集資源的計劃,請執行下列命令:
| AWS DevOps |
清空 Amazon S3 儲存貯體。 | 若要清空所有 Amazon S3 儲存貯體 (為 設定的伺服器存取記錄儲存貯體除外
| AWS DevOps |
執行基礎設施銷毀計畫。 | 若要使用產生的計劃執行 AWS Supply Chain 資料集基礎設施的計劃銷毀,請執行下列命令:
| AWS DevOps |
從 Amazon S3 Terraform 成品儲存貯體移除 Terraform 輸出。 | 若要完成清除程序,
| AWS DevOps |
疑難排解
| 問題 | 解決方案 |
|---|---|
由於 AWS Supply Chain 內部錯誤或服務角色的 IAM 許可不足, AWS Supply Chain 資料集或整合流程無法正確部署。 | 首先,清除所有資源。然後,重新部署 AWS Supply Chain 資料集資源 |
AWS Supply Chain 整合流程不會擷取為 AWS Supply Chain 資料集上傳的新資料檔案。 |
|
相關資源
AWS 文件
其他資源
了解 GitHub 動作工作流程
(GitHub 文件)
其他資訊
此解決方案可以透過 提供的預先建置儀表板 AWS Supply Chain 或與 Amazon Quick Sight 的自訂整合,複寫更多資料集,並查詢以供進一步分析。此外,您可以使用 Amazon Q 來詢問與 AWS Supply Chain 執行個體相關的問題。
使用 AWS Supply Chain Analytics 分析資料
如需設定 AWS Supply Chain Analytics 的說明,請參閱 AWS Supply Chain 文件中的設定 AWS Supply Chain Analytics。
此模式示範了建立行事曆和 Outbound_Order_Line 資料集。若要建立使用這些資料集的分析,請使用下列步驟:
若要分析資料集,請使用季節性分析儀表板。若要新增儀表板,請遵循 AWS Supply Chain 文件中預先建置儀表板中的步驟。
選擇儀表板以查看以行事曆資料和外撥訂單行資料的範例 CSV 檔案為基礎的分析。
儀表板會根據資料集的擷取資料,提供多年來的需求洞察。您可以進一步指定 ProductID、CustomerID、年份和其他參數進行分析。
使用 Amazon Q 詢問與 AWS Supply Chain 執行個體相關的問題
Amazon Q in AWS Supply Chain 是互動式生成式 AI 助理,可協助您更有效率地操作供應鏈。Amazon Q 可以執行下列動作:
分析資料湖中的 AWS Supply Chain 資料。
提供營運和財務洞察。
回答您的立即供應鏈問題。
如需使用 Amazon Q 的詳細資訊,請參閱 AWS Supply Chain 文件中的在 中啟用 AWS Supply Chain Amazon Q 和在 中使用 Amazon Q AWS Supply Chain。