使用分散式映射處理 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 儲存貯體 AWS 帳戶。ProcessNOAAData 反覆查看複製的檔案,並包含執行溫度分析的 Lambda 函數。

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

  • 如果金鑰計數大於或等於 1,專案會轉換為 ProcessNOAAData 狀態。此分散式映射狀態包含 Lambda 函數名為 TemperatureFunction,可尋找每月平均溫度最高的氣象站。此函數會傳回 字典,其中以 year-month做為索引鍵,並傳回包含天氣站相關資訊做為值的字典。

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

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

範例專案最終會轉換至減少程式 Lambda 函數,執行TemperatureFunction函數傳回結果的最終彙總,並將結果寫入 。Amazon DynamoDB 資料表。

透過分散式地圖,您一次最多可以執行 10,000 個平行子工作流程執行。在此範例專案中,ProcessNOAAData Distributed Map 的最大並行數設定為 3000,限制為 3000 個平行子工作流程執行。

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

重要

此範例專案僅適用於美國東部 (維吉尼亞北部) 區域。

步驟 1:建立狀態機器

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

  2. 尋找並選擇您要使用的入門範本。選擇 Next (下一步) 繼續。

  3. 選擇執行示範以建立唯讀和 ready-to-deploy工作流程,或選擇建置在其中以建立可編輯的狀態機器定義,您可以建置在 和之後部署。

  4. 選擇使用範本以繼續您的選擇。

後續步驟取決於您先前的選擇:

  1. 執行示範 – 您可以在建立具有 已部署 AWS CloudFormation 至 之 資源的唯讀專案之前,檢閱 狀態機器 AWS 帳戶。

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

    部署最多可能需要 10 分鐘才能建立資源和許可。您可以使用 Stack ID 連結來監控 中的進度 AWS CloudFormation。

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

  2. 在上面建置 – 您可以檢閱和編輯工作流程定義。在嘗試執行自訂工作流程之前,您可能需要為範例專案中的預留位置設定值。

注意

部署至您 帳戶的 服務,可能會收取標準費用。

步驟 2:執行狀態機器

  1. 狀態機器頁面上,選擇您的範例專案。

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

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

    1. (選用) 輸入自訂執行名稱以覆寫產生的預設值。

      非ASCII名稱和記錄

      Step Functions 接受狀態機器、執行、活動和包含非ASCII字元標籤的名稱。由於這類字元不適用於 Amazon CloudWatch,因此建議您只使用ASCII字元,以便追蹤 指標 CloudWatch。

    2. (選用) 在輸入方塊中,輸入值為 JSON。如果您正在執行示範,可以略過此步驟。

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

    Step Functions 主控台將引導您前往執行詳細資訊頁面,您可以在圖形檢視中選擇狀態,以在步驟詳情窗格中探索相關資訊。

恭喜您!

您現在應該有執行中的示範或可自訂的狀態機器定義。