本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用分散式地圖處理 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:建立狀態機器並佈建資源
開啟 Step Functions 主控台
,然後選擇建立狀態機器。 -
Distributed Map to process files in S3
在搜尋方塊中輸入,然後選擇「分散式對應」,從傳回的搜尋結果中處理 S3 中的檔案。 -
選擇 Next (下一步) 繼續。
-
Step Functions 會列出您選取的範例專案中 AWS 服務 使用的項目。它也會顯示範例專案的工作流程圖表。將此項目部署到您的項目中, AWS 帳戶 或將其用作構建自己的項目的起點。根據您想要的進行方式,選擇 [執行示範] 或 [在其上建置]。
如需將為此範例專案建立之資源的相關資訊,請參閱AWS CloudFormation 模板和其他資源。
下圖顯示了分散式地圖在 S3 範例專案中處理檔案的工作流程圖:
-
選擇「使用範本」繼續進行選取。
-
執行以下任意一項:
-
如果您選取「在其上建置」,「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:運行狀態機
佈建和部署所有資源後,您可以執行狀態機器。
-
在 [狀態電腦] 頁面上,選擇您的範例專案。
-
在範例專案頁面上,選擇 [開始執行]。
-
在 [開始執行] 對話方塊中,執行下列動作:
-
(選擇性) 以 JSON 格式輸入輸入值以執行範例專案。
如果您選擇執行示範,則不需要提供任何執行輸入。
注意
如果您部署的示範專案包含預先填入的執行輸入資料,請使用該輸入來執行狀態機器。
-
選擇 Start execution (開始執行)。
-
(選擇性)「Step Functions」主控台會將您導向標題為執行 ID 的頁面。此頁面稱為「執行詳細資訊」頁面。在此頁面上,您可以在執行進行時或完成之後複查執行結果。
執行完成後,請在「圖形」檢視中選擇個別狀態,然後選擇步驟詳情窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。
-
如需有關可在「執行詳細資訊」頁面檢視之執行資訊的詳細資訊,請參閱執行詳細資訊頁面 — 介面概觀。
-
如需有關在主控台中檢視分散式地圖狀態執行的詳細資訊,請參閱檢查地圖運行。
-
-
(選擇性) 檢閱匯出至 Amazon S3 儲存貯體的執行結果。這些結果包括資料,例如執行輸入和輸出、ARN 和執行狀態。如需更多詳細資訊,請參閱 ResultWriter。
-