使用分散式地圖處理 Amazon S3 儲存貯體中的資料 - AWS Step Functions

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

使用分散式地圖處理 Amazon S3 儲存貯體中的資料

此範例專案示範如何使用「分散式地圖」狀態來處理大型資料,例如分析歷史氣象資料,以及識別每月地球平均溫度最高的氣象站。氣象資料會記錄在超過 12,000 個 CSV 檔案中,而這些檔案又會儲存在 Amazon S3 儲存貯體中。

此範例專案包含兩個名為分散式 S3 副本 NOA 資料和處理程序 NoAadata 的分散式地圖狀態分散式 S3 副本 NOA 資料會重複執行名為的公有 Amazon S3 儲存貯體中的 CSV 檔案,noaa-gsod-pds並將它們複製到您的. AWS 帳戶 處理 Aadata 會重複複製的檔案,並包含執行溫度分析的 Lambda 函數。

範例專案會先透過呼叫 ListObjectsV2 API 動作來檢查 Amazon S3 儲存貯體的內容。根據回應此呼叫所傳回的金鑰數目,範例專案會執行下列其中一項決定:

  • 如果金鑰計數大於或等於 1,專案會轉換為處理程序 A adata 狀態。此「分散式地圖」狀態包含一TemperatureFunction個名為的Lambda函數,可尋找每月平均溫度最高的氣象站。此函數會傳回year-month一個字典,其中包含氣象站做為值的資訊的字典。

  • 如果傳回的金鑰計數不超過 1,[分散式 S3 複製 NOA Data] 狀態會列出公用儲存貯體中的所有物件,noaa-gsod-pds並以 100 個批次反覆方式將個別物件複製到帳戶中的另一個儲存貯體。內聯映射執行對象的迭代複製。

    複製所有物件之後,專案會轉換為 ProcessNoAadata 狀態,以便處理氣象資料。

示例項目最終轉換為減速器Lambda函數,該函數對TemperatureFunction函數返回的結果執行最終聚合,並將結果寫入Amazon DynamoDB表中。

使用分散式地圖,您一次最多可以執行 10,000 個 parallel 子工作流程執行。在此範例專案中,處理程序 Aadata 分散式地圖的最大並行性設定為 3000,將其限制為 3000 個 parallel 子工作流程執行。

此範例專案會建立狀態機器、支援 AWS 資源,並設定相關的 IAM 許可。探索此範例專案,瞭解如何使用分散式地圖來協調大規模的 parallel 工作負載,或將其用作您自己專案的起點。

重要

此範例專案僅在美國東部 (維吉尼亞北部) 區域提供。

AWS CloudFormation 模板和其他資源

您可以使用 CloudFormation 範本來部署此範例專案。此範本會在您的中建立下列資源 AWS 帳戶:

  • Step Functions 狀態機。

  • 狀態機器的執行角色。此角色授予狀態機器存取其他資源所需的權限 AWS 服務 ,例如 Lambda 函數的叫用動作。

  • 一個名為的 Amazon S3 桶NOAADataBucket。此值區包含含有氣象資料的 CSV 檔案。

  • 命名為的 Lambda 函數ReducerFunction,可執行氣象資料的最終彙總,並將結果寫入 Amazon DynamoDB 表格。

  • 減速器 Lambda 函數的執行角色。此角色授與存取其他的函數權限 AWS 服務。

  • 名為ResultsBucket用於存放天氣分析結果的 Amazon S3 輸出儲存貯體。

  • 名為的 DynamoDB 表格ResultsDynamoDBTable,其中包含由. ReducerFunction

  • 命名為的 Lambda 函數TemperatureFunction,用於查找最高的每月平均溫度。

  • Lambda 函數的執行角色。此角色授與存取其他的函數權限 AWS 服務。

  • 儲存與狀態機器執行歷程 CloudWatch 記錄相關資訊的記錄群組。

重要

每項服務均需收取標準費用。

步驟 1:建立狀態機器並佈建資源

  1. 開啟 Step Functions 主控台,然後選擇建立狀態機器

  2. Distributed Map to process files in S3在搜尋方塊中輸入,然後選擇「分散式對應」,從傳回的搜尋結果中處理 S3 中的檔案

  3. 選擇 Next (下一步) 繼續。

  4. Step Functions 會列出您選取的範例專案中 AWS 服務 使用的項目。它也會顯示範例專案的工作流程圖表。將此項目部署到您的項目中, AWS 帳戶 或將其用作構建自己的項目的起點。根據您想要的進行方式,選擇 [執行示範] 或 [在其上建置]。

    如需將為此範例專案建立之資源的相關資訊,請參閱AWS CloudFormation 模板和其他資源

    下圖顯示了分散式地圖在 S3 範例專案中處理檔案的工作流程圖:

    
                        處理 S3 範例專案中檔案的分散式對應工作流程圖。
  5. 選擇「使用範本」繼續進行選取。

  6. 執行以下任意一項:

    • 如果您選取「在其上建置」,「Step Functions」會為您選取的範例專案建立工作流程原型。Step Functions 不會部署工作流程定義中列出的資源。

      在工作流程 Studio 中設計模式,從拖放狀態狀態瀏覽器以繼續建立您的工作流程原型。或者切換到程式碼模式提供類似 VS 代碼的集成代碼編輯器,用於在 Step Functions 控制台中更新狀態機器的Amazon States Language(ASL)定義。如需有關使用工作流程 Studio 建置狀態機器的詳細資訊,請參閱使用工作流程

      重要

      請記得在執行工作流程之前,更新範例專案中使用之資源的預留位置 Amazon 資源名稱 (ARN)。

    • 如果您選取 [執行示範],Step Functions 會建立唯讀範例專案,該專案使用 AWS CloudFormation 範本將該範本中列出的 AWS 資源部署到您的 AWS 帳戶.

      提示

      若要檢視範例專案的狀態機定義,請選擇 [程式碼]。

      準備就緒後,請選擇 [部署並執行] 以部署範例專案並建立資源。

      建立這些資源和相關 IAM 許可最多可能需要 10 分鐘。部署資源時,您可以開啟 CloudFormation Stack ID 連結以查看正在佈建的資源。

      建立範例專案中的所有資源之後,您可以在 [狀態機器] 頁面上看到列出的新範例專案。

      重要

      CloudFormation 範本中使用的每項服務可能會收取標準費用。

步驟 2:運行狀態機

佈建和部署所有資源後,您可以執行狀態機器。

  1. 在 [狀態電腦] 頁面上,選擇您的範例專案。

  2. 在範例專案頁面上,選擇 [開始執行]。

  3. 在 [開始執行] 對話方塊中,執行下列動作:

    1. (選擇性) 以 JSON 格式輸入輸入值以執行範例專案。

      如果您選擇執行示範,則不需要提供任何執行輸入。

      注意

      如果您部署的示範專案包含預先填入的執行輸入資料,請使用該輸入來執行狀態機器。

    2. 選擇 Start execution (開始執行)

    3. (選擇性)「Step Functions」主控台會將您導向標題為執行 ID 的頁面。此頁面稱為「執行詳細資訊」頁面。在此頁面上,您可以在執行進行時或完成之後複查執行結果。

      執行完成後,請在「圖形」檢視中選擇個別狀態,然後選擇步驟詳情窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。

    4. (選擇性) 檢閱匯出至 Amazon S3 儲存貯體的執行結果。這些結果包括資料,例如執行輸入和輸出、ARN 和執行狀態。如需更多詳細資訊,請參閱 ResultWriter