選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

在 AWS 雲端中建置進階大型主機檔案檢視器 - AWS 方案指引

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

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

在 AWS 雲端中建置進階大型主機檔案檢視器

由 Bopath GOPALSAMY (AWS) 和 Jeremiah O'Connor (AWS) 建立

Summary

此模式提供程式碼範例和步驟,可協助您建置進階工具,以使用 AWS 無伺服器服務來瀏覽和檢閱大型主機固定格式檔案。此模式提供範例,說明如何將大型主機輸入檔案轉換為 Amazon OpenSearch Service 文件以供瀏覽和搜尋。檔案檢視器工具可協助您達成下列目標:

  • 保留相同的大型主機檔案結構和配置,以在 AWS 目標遷移環境中保持一致性 (例如,您可以在將檔案傳輸到外部各方的批次應用程式中維護相同的檔案配置)

  • 在大型主機遷移期間加速開發和測試

  • 支援遷移後的維護活動

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 虛擬私有雲端 (VPC),具有傳統平台可連線的子網路

  • 注意

    輸入檔案及其對應的常見業務導向語言 (COBOL) 複製手冊 (:如需輸入檔案和 COBOL 複製手冊範例,請參閱 GitHub 儲存庫上的 gfs-mainframe-solutions。 如需 COBOL 複本手冊的詳細資訊,請參閱 IBM 網站上的適用於 z/OS 6.3 的企業 COBOL 程式設計指南。)

限制

  • 複製手冊剖析限制為不超過兩個巢狀層級 (OCCURS)

架構

來源技術堆疊

目標技術堆疊

  • Amazon Athena

  • Amazon OpenSearch Service

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Lambda

  • AWS Step Functions

目標架構

下圖顯示剖析大型主機輸入檔案並將其轉換為 OpenSearch Service 文件以供瀏覽和搜尋的程序。

剖析大型主機輸入檔案並將其轉換為 OpenSearch Service 的程序。

該圖顯示以下工作流程:

  1. 管理員使用者或應用程式會將輸入檔案推送至一個 S3 儲存貯體,並將 COBOL 複製手冊推送至另一個 S3 儲存貯體。

  2. 注意

    具有輸入檔案的 S3 儲存貯體會叫用 Lambda 函數,以啟動無伺服器 Step Functions 工作流程。:使用 S3 事件觸發和 Lambda 函數來驅動此模式中的 Step Functions 工作流程是選用的。此模式中的 GitHub 程式碼範例不包含這些服務的使用,但您可以根據您的需求使用這些服務。

  3. Step Functions 工作流程會協調來自下列 Lambda 函數的所有批次程序:

    • s3copybookparser.py 函數會剖析複製手冊配置,並擷取欄位屬性、資料類型和位移 (輸入資料處理時需要)。

    • s3toathena.py 函數會建立 Athena 資料表配置。Athena 會剖析函數處理的輸入資料,s3toathena.py並將資料轉換為 CSV 檔案。

    • s3toelasticsearch.py 函數會從 S3 儲存貯體擷取結果檔案,並將檔案推送至 OpenSearch Service。

  4. 使用者使用 OpenSearch Service 存取 OpenSearch Dashboards,以各種資料表和資料欄格式擷取資料,然後針對索引資料執行查詢。

工具

AWS 服務

  • Amazon Athena 是一種互動式查詢服務,可協助您使用標準 SQL 直接在 Amazon Simple Storage Service (Amazon S3) 中分析資料。

  • AWS Lambda 是一種運算服務,可協助您執行程式碼,而不需要佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展,因此您只需支付您使用的運算時間。在此模式中,您可以使用 Lambda 實作核心邏輯,例如剖析檔案、轉換資料,以及將資料載入 OpenSearch Service 以進行互動式檔案存取。

  • Amazon OpenSearch Service 是一項受管服務,可協助您在 AWS 雲端中部署、操作和擴展 OpenSearch Service 叢集。在此模式中,您會使用 OpenSearch Service 為轉換的檔案編製索引,並為使用者提供互動式搜尋功能。

  • Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。

  • AWS Command Line Interface (AWS CLI) 是一種開放原始碼工具,可協助您透過命令列 shell 中的命令與 AWS 服務互動。

  • AWS Identity and Access Management (IAM) 可透過控制已驗證並授權使用的人員,協助您安全地管理對 AWS 資源的存取。

  • AWS Step Functions 是一種無伺服器協調服務,可協助您結合 Lambda 函數和其他 AWS 服務來建置業務關鍵型應用程式。在此模式中,您可以使用 Step Functions 來協調 Lambda 函數。

其他工具

  • GitHub 是一種程式碼託管服務,可提供協作工具和版本控制。

  • Python 是一種高階程式設計語言。

Code

此模式的程式碼可在 GitHub gfs-mainframe-patterns 儲存庫中使用。

史詩

任務描述所需的技能

建立 S3 儲存貯體。

建立用於存放複製手冊、輸入檔案和輸出檔案的 aS3 儲存貯體。建議您的 S3 儲存貯體使用下列資料夾結構:

  • copybook/

  • input/

  • output/

  • query/

  • results/

一般 AWS

建立 s3copybookparser 函數。

  1. 建立名為 的 Lambda 函數,並從 GitHub 儲存庫上傳原始程式碼 (s3copybookparser.pycopybook.py)。s3copybookparser

  2. 將 IAM 政策S3ReadOnly連接至 Lambda 函數。

一般 AWS

建立 s3toathena 函數。

  1. 建立名為 的 Lambda 函數,s3toathena並從 GitHub 儲存庫上傳原始程式碼 (s3toathena.py)。將 Lambda 逾時設定為 > 60 秒。

  2. 若要提供必要資源的存取權,請將 IAM 政策和 AmazonAthenaFullAccess S3FullAccess 連接至 Lambda 函數。

一般 AWS

建立 s3toelasticsearch 函數。

  1. 重要

    將 Python 相依性新增至 Lambda 環境。:若要使用 s3toelasticsearch函數,您必須新增 Python 相依性,因為 Lambda 函數使用 Python Elasticsearch 用戶端相依性 (Elasticsearch==7.9.0requests_aws4auth)。

  2. 建立名為 的 Lambda 函數,s3toelasticsearch並從 GitHub 儲存庫上傳原始程式碼 (s3toelasticsearch.py)。

  3. 將 Python 相依性匯入為 Lambda 層。

  4. 將 IAM 政策和 S3ReadOnly AmazonOpenSearchServiceReadOnlyAccess 連接到 Lambda 函數。

一般 AWS

建立 OpenSearch Service 叢集。

建立叢集

  1. 建立 OpenSearch Service 叢集。當您建立叢集時,請執行下列動作:

    • 注意

      為叢集建立主要使用者和密碼,供您用來登入 OpenSearch Dashboards。:如果您透過 Amazon Cognito 使用身分驗證,則不需要此步驟。

    • 選擇精細存取控制。這可讓您在 OpenSearch Service 中控制對資料的存取。

  2. 複製網域 URL,並將其做為環境變數「HOST」傳遞至 Lambda 函數 s3toelasticsearch

授予 IAM 角色的存取權

若要提供 Lambda 函數 IAM 角色 (arn:aws:iam::**:role/service-role/s3toelasticsearch-role-**) 的精細存取權,請執行下列動作:

  1. 以主要使用者身分登入 OpenSearch Dashboards。

  2. 選擇安全索引標籤,然後選擇角色all_access映射使用者後端角色

  3. 新增 Lambda 函數 IAM 角色的 Amazon Resource Name (ARN),然後選擇儲存。如需詳細資訊,請參閱 OpenSearch Service 文件中的將角色映射至使用者

一般 AWS

建立用於協調的步驟函數。

  1. 使用標準流程建立 Step Functions 狀態機器。定義包含在 GitHub 儲存庫中。

  2. 在 JSON 指令碼中,將 Lambda 函數的 ARNs 取代為環境中 Lambda 函數的 ARNs。

一般 AWS

準備目標環境

任務描述所需的技能

建立 S3 儲存貯體。

建立用於存放複製手冊、輸入檔案和輸出檔案的 aS3 儲存貯體。建議您的 S3 儲存貯體使用下列資料夾結構:

  • copybook/

  • input/

  • output/

  • query/

  • results/

一般 AWS

建立 s3copybookparser 函數。

  1. 建立名為 的 Lambda 函數,並從 GitHub 儲存庫上傳原始程式碼 (s3copybookparser.pycopybook.py)。s3copybookparser

  2. 將 IAM 政策S3ReadOnly連接至 Lambda 函數。

一般 AWS

建立 s3toathena 函數。

  1. 建立名為 的 Lambda 函數,s3toathena並從 GitHub 儲存庫上傳原始程式碼 (s3toathena.py)。將 Lambda 逾時設定為 > 60 秒。

  2. 若要提供必要資源的存取權,請將 IAM 政策和 AmazonAthenaFullAccess S3FullAccess 連接至 Lambda 函數。

一般 AWS

建立 s3toelasticsearch 函數。

  1. 重要

    將 Python 相依性新增至 Lambda 環境。:若要使用 s3toelasticsearch函數,您必須新增 Python 相依性,因為 Lambda 函數使用 Python Elasticsearch 用戶端相依性 (Elasticsearch==7.9.0requests_aws4auth)。

  2. 建立名為 的 Lambda 函數,s3toelasticsearch並從 GitHub 儲存庫上傳原始程式碼 (s3toelasticsearch.py)。

  3. 將 Python 相依性匯入為 Lambda 層。

  4. 將 IAM 政策和 S3ReadOnly AmazonOpenSearchServiceReadOnlyAccess 連接到 Lambda 函數。

一般 AWS

建立 OpenSearch Service 叢集。

建立叢集

  1. 建立 OpenSearch Service 叢集。當您建立叢集時,請執行下列動作:

    • 注意

      為叢集建立主要使用者和密碼,供您用來登入 OpenSearch Dashboards。:如果您透過 Amazon Cognito 使用身分驗證,則不需要此步驟。

    • 選擇精細存取控制。這可讓您在 OpenSearch Service 中控制對資料的存取。

  2. 複製網域 URL,並將其做為環境變數「HOST」傳遞至 Lambda 函數 s3toelasticsearch

授予 IAM 角色的存取權

若要提供 Lambda 函數 IAM 角色 (arn:aws:iam::**:role/service-role/s3toelasticsearch-role-**) 的精細存取權,請執行下列動作:

  1. 以主要使用者身分登入 OpenSearch Dashboards。

  2. 選擇安全索引標籤,然後選擇角色all_access映射使用者後端角色

  3. 新增 Lambda 函數 IAM 角色的 Amazon Resource Name (ARN),然後選擇儲存。如需詳細資訊,請參閱 OpenSearch Service 文件中的將角色映射至使用者

一般 AWS

建立用於協調的步驟函數。

  1. 使用標準流程建立 Step Functions 狀態機器。定義包含在 GitHub 儲存庫中。

  2. 在 JSON 指令碼中,將 Lambda 函數的 ARNs 取代為環境中 Lambda 函數的 ARNs。

一般 AWS
任務描述所需的技能

將輸入檔案和複製手冊上傳至 S3 儲存貯體。

GitHub 儲存庫範例資料夾下載範例檔案,並將檔案上傳至您先前建立的 S3 儲存貯體。

  1. acctix.cpyMockedcopy.cpy和 上傳至 <S3_Bucket>/copybook 資料夾。

  2. Modedupdate.txtacctindex.cpy範例輸入檔案上傳至 <S3_Bucket>/input 資料夾。

一般 AWS

叫用 Step Functions。

  1. 登入 AWS 管理主控台並開啟 Step Functions 主控台

  2. 在導覽窗格中,選擇狀態機器

  3. 選擇您的狀態機器,然後選擇開始執行

  4. 輸入方塊中,輸入下列複本/檔案路徑做為 S3 儲存貯體的 JSON 變數,然後選擇開始執行

{ "s3_copybook_bucket_name": "<BUCKET NAME>", "s3_copybook_bucket_key": "<COPYBOOK PATH>", "s3_source_bucket_name": "<BUCKET NAME", "s3_source_bucket_key": "INPUT FILE PATH" }

例如:

{ "s3_copybook_bucket_name": "fileaidtest", "s3_copybook_bucket_key": "copybook/acctix.cpy", "s3_source_bucket_name": "fileaidtest", "s3_source_bucket_key": "input/acctindex" }
一般 AWS

驗證 Step Functions 中的工作流程執行。

Step Functions 主控台中,檢閱圖形檢查器中的工作流程執行。執行執行狀態會以顏色編碼來表示執行狀態。例如,藍色表示進行中,綠色表示成功,紅色表示失敗。您也可以檢閱執行事件歷史記錄區段中的資料表,以取得執行事件的詳細資訊。

如需圖形工作流程執行的範例,請參閱此模式其他資訊區段中的步驟函數圖形

一般 AWS

驗證 Amazon CloudWatch 中的交付日誌。

  1. 登入 AWS 管理主控台並開啟 CloudWatch 主控台

  2. 在導覽窗格中,展開日誌,然後選擇日誌群組

  3. 在搜尋方塊中,搜尋s3toelasticsearch函數的日誌群組。

如需成功交付日誌的範例,請參閱此模式其他資訊區段中的 CloudWatch 交付日誌

一般 AWS

驗證 OpenSearch Dashboards 中的格式化檔案,並執行檔案操作。

  1. 登入 AWS 管理主控台。在 Analytics (分析) 下,選擇 Amazon OpenSearch Service

  2. 在導覽窗格中,選擇網域

  3. 在搜尋方塊中,在 OpenSearch Dashboards 中輸入網域的 URL。

  4. 選擇您的儀表板,然後以主要使用者身分登入

  5. 以資料表格式瀏覽索引資料。

  6. 比較輸入檔案與 OpenSearch Dashboards 中的格式化輸出檔案 (索引文件)。儀表板檢視會顯示您格式化檔案新增的資料欄標頭。確認來自未格式化輸入檔案的來源資料符合儀表板檢視中的目標資料。

  7. 針對索引檔案執行搜尋 (例如,使用欄位名稱、值或表達式)、篩選條件和 DQL (儀表板查詢語言) 操作等動作。

一般 AWS

部署和執行

任務描述所需的技能

將輸入檔案和複製手冊上傳至 S3 儲存貯體。

GitHub 儲存庫範例資料夾下載範例檔案,並將檔案上傳至您先前建立的 S3 儲存貯體。

  1. acctix.cpyMockedcopy.cpy和 上傳至 <S3_Bucket>/copybook 資料夾。

  2. Modedupdate.txtacctindex.cpy範例輸入檔案上傳至 <S3_Bucket>/input 資料夾。

一般 AWS

叫用 Step Functions。

  1. 登入 AWS 管理主控台並開啟 Step Functions 主控台

  2. 在導覽窗格中,選擇狀態機器

  3. 選擇您的狀態機器,然後選擇開始執行

  4. 輸入方塊中,輸入下列複本/檔案路徑做為 S3 儲存貯體的 JSON 變數,然後選擇開始執行

{ "s3_copybook_bucket_name": "<BUCKET NAME>", "s3_copybook_bucket_key": "<COPYBOOK PATH>", "s3_source_bucket_name": "<BUCKET NAME", "s3_source_bucket_key": "INPUT FILE PATH" }

例如:

{ "s3_copybook_bucket_name": "fileaidtest", "s3_copybook_bucket_key": "copybook/acctix.cpy", "s3_source_bucket_name": "fileaidtest", "s3_source_bucket_key": "input/acctindex" }
一般 AWS

驗證 Step Functions 中的工作流程執行。

Step Functions 主控台中,檢閱圖形檢查器中的工作流程執行。執行執行狀態會以顏色編碼來表示執行狀態。例如,藍色表示進行中,綠色表示成功,紅色表示失敗。您也可以檢閱執行事件歷史記錄區段中的資料表,以取得執行事件的詳細資訊。

如需圖形工作流程執行的範例,請參閱此模式其他資訊區段中的步驟函數圖形

一般 AWS

驗證 Amazon CloudWatch 中的交付日誌。

  1. 登入 AWS 管理主控台並開啟 CloudWatch 主控台

  2. 在導覽窗格中,展開日誌,然後選擇日誌群組

  3. 在搜尋方塊中,搜尋s3toelasticsearch函數的日誌群組。

如需成功交付日誌的範例,請參閱此模式其他資訊區段中的 CloudWatch 交付日誌

一般 AWS

驗證 OpenSearch Dashboards 中的格式化檔案,並執行檔案操作。

  1. 登入 AWS 管理主控台。在 Analytics (分析) 下,選擇 Amazon OpenSearch Service

  2. 在導覽窗格中,選擇網域

  3. 在搜尋方塊中,在 OpenSearch Dashboards 中輸入網域的 URL。

  4. 選擇您的儀表板,然後以主要使用者身分登入

  5. 以資料表格式瀏覽索引資料。

  6. 比較輸入檔案與 OpenSearch Dashboards 中的格式化輸出檔案 (索引文件)。儀表板檢視會顯示您格式化檔案新增的資料欄標頭。確認來自未格式化輸入檔案的來源資料符合儀表板檢視中的目標資料。

  7. 針對索引檔案執行搜尋 (例如,使用欄位名稱、值或表達式)、篩選條件和 DQL (儀表板查詢語言) 操作等動作。

一般 AWS

相關資源

參考

教學課程

其他資訊

Step Functions 圖形

下列範例顯示 Step Functions 圖形。此圖形顯示此模式中使用的 Lambda 函數的執行執行狀態。

Step Functions 圖形顯示此模式中使用的 Lambda 函數的執行執行狀態。

CloudWatch 交付日誌

下列範例顯示執行成功交付日誌s3toelasticsearch

2022-08-10T15:53:33.033-05:00

處理文件數量:100

2022-08-10T15:53:33.171 年 5 月 00 日

【INFO】 2022-08-10T20:53:33.171Z a1b2c3d4-5678-90ab-cdef-EXAMPLE11111POST https://search-essearch-3h4uqclifeqaj2vg4mphe7ffle.us-east-2.es.amazonaws.com:443/_bulk 【status:200 request:0.100s】

2022-08-10T15:53:33.172 年 5 月 00 日

大量寫入成功:100 個文件

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。