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

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

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

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

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

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

  • 如果索引鍵計數大於或等於 1,專案會轉換為 P rocessNOAAData 狀態。此「分散式貼圖」狀態包括 Lambda 命名函數 TemperatureFunction,用於查找每月平均溫度最高的氣象站。此函數會傳回字典year-month,其中包含氣象站做為值的資訊的字典。

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

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

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

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

此示例項目創建狀態機,支持 AWS 資源,並配置相關IAM權限。探索此範例專案,瞭解如何使用分散式地圖來協調大規模的 parallel 工作負載,或將其用作您自己專案的起點。

重要

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

AWS CloudFormation 模板和其他資源

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

  • Step Functions 狀態機。

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

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

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

  • 減速器 Lambda 函數的執行角色。此角色授予訪問其他功能的權限 AWS 服務.

  • 用於存放天氣分析結果的 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. 選擇 [執行示範] 以建立唯讀和 ready-to-deploy 工作流程,或選擇 [在其上建置] 建立可編輯的狀態機定義,您可以在其上建置並稍後進行部署。

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

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

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

接下來的步驟取決於您之前的選擇:

  1. 執行示範 — 您可以先檢閱狀態機器,然後再建立唯讀專案,其中資源部署者 AWS CloudFormation 到您的 AWS 帳戶.

    您可以檢視狀態機器定義,當您準備就緒時,請選擇 [部署並執行] 以部署專案並建立資源。

    部署最多可能需要 10 分鐘的時間來建立資源和權限。您可以使用「堆疊 ID」連結來監控進度 AWS CloudFormation.

    部署完成後,您應該會在控制台中看到新的狀態機器。

  2. 建立在其上 — 您可以檢閱和編輯工作流程定義。您可能需要在範例專案中設定預留位置的值,然後才能嘗試執行自訂工作流程。

注意

部署到您帳戶的服務可能需要支付標準費用。

步驟 2:運行狀態機

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

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

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

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

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

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

      注意

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

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

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

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

      • 如需有關可在「執行詳細資訊」頁面檢視之執行資訊的詳細資訊,請參閱執行細節概述

      • 如需有關在主控台中檢視分散式地圖狀態執行的詳細資訊,請參閱檢視地圖執行

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