「AWSクラウドで高度なメインフレームファイルビューアを構築」してみた

はじめに

AWS規範ガイダンスの「AWSクラウドで高度なメインフレームファイルビューアを構築」を実際にやってみました。
COBOLのコピーブックの情報を使って、固定長データを処理するという内容です。
S3に格納したデータをLambdaとAthenaを使って処理し、OpenSearch Serviceに送ります。

この記事は網羅的な手順ではなく、手を動かしてみて迷ったところを中心に記載しておりますので、実施される際はAWSのページをご確認ください。

手順

1. S3バケットを作成する

デフォルトの設定でS3バケットを作成します。
バケットにフォルダを作成します。

2. Lambda関数3つを作成する

Pythonバージョン指定

今回はPython3.13を指定しました(boto3==1.35.92)。
ドキュメントの記載はboto3==1.16.25ですが、古いバージョンのため執筆時点でap-northeast-1にてboto3のバージョンを確認した限りでは利用できませんでした。

ハンドラの設定変更

ソースコードのファイル名をデフォルトのlambda_function.pyから変更する場合は、合わせてランタイム設定のハンドラを変更する必要があります。
参考:Python の Lambda 関数ハンドラーの定義#ハンドラーの命名規則

レイヤーの作成

Amazon Linux 2023のEC2インスタンスを作成して実施しました。
Python3.13のインストールはこちらの記事を参考にさせていただきました。
※Lambda関数のPythonと同じバージョンを用意します。

3. OpenSearch Serviceドメインを作成し、Lambdaから接続できるようにする

ドメインを作成する

設定値はこちらの記事を参考にさせていただきつつ、以下2点を変更しました。

  • バージョン: 2.19
  • IPアドレスタイプ: IPv4のみ

LambdaのIAMロールにアクセス許可を付与する

OpenSearchダッシュボードURLにアクセスし、Security > Roles > all_access > Mapped usersにある「Manage Mapping」を押下します。
Backend rolesにLambda関数s3toelasticsearchにアタッチされたIAMロールのARNを入力し「Map」を押下します。

アクセスキーを作成する

IAMユーザーを新たに作成し適切な権限を付与します。今回はAmazonOpenSearchServiceFullAccessを付与しました。
※一時的な検証のためAWSマネージドポリシーを使用しましたが、より小さい権限で実行できる可能性もあります。

IAMユーザーのアクセスキーを作成します。
※作成したアクセスキーは検証完了後速やかに無効化・削除します。

Lambdaの環境変数を設定する


環境変数'HOST'には、OpenSearch Serviceのドメインエンドポイントを設定します。https:// を除きドメインのみを記載します。
'ACCESS_KEY'、'SECRET_KEY'にはそれぞれ作成したアクセスキー、シークレットアクセスキーの値を渡します。
※サンプルコードではLambdaの環境変数にシークレットアクセスキーを保存することになりますが、実際にアクセスキーを利用する方法で実施される際はAWS Systems Manager Parameter StoreまたはAWS Secrets Managerにてシークレットアクセスキーを管理することを推奨します。

4. Step Functions ステートマシンを作成する

ステートマシンを作成し、コードエディタに切り替えます。
stepfunction_definition.jsonを貼り付け、”FunctionName”を作成したLambda関数のARNに置き換えます。

5. S3バケットにファイルをアップロードする

コピーブックとデータをS3バケットに格納します。
Mockedcopy.cpy → /copybook
acctix.cpy → /copybook
Modedupdate.txt → /input
acctindex.txt → /input

6. Step Functionsを実行する

「実行を開始」を押下し、入力欄に以下の内容を記入します。

ジョブが成功することを確認します。

7. OpenSearchでデータを確認する

インデックスパターンを作成する

OpenSearchダッシュボードURLにアクセスします。
Discoverを開き、「+ Create index pattern」を押下します。

Index pattern nameに「acctindex.csv」と入力し、「Next Step」を押下します。遷移先で「Create index pattern」を押下します。

データを確認する

Discoverにてデータが入っていることを確認します。

おわりに

メインフレーム上のデータをAWS上で扱いやすい形式に処理することで、データ分析や機械学習等データの活用が進められそうです。
ハイブリッド環境のようにAWSへの移行を前提としない場合も含め、メインフレームのモダナイズを実現できる方法のひとつになると考えられます。

投稿者プロフィール

n_sato