はじめに
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を実行する
「実行を開始」を押下し、入力欄に以下の内容を記入します。
1 2 3 4 5 6 |
{ "s3_copybook_bucket_name": "${BUCKET NAME}", "s3_copybook_bucket_key": "copybook/acctix.cpy", "s3_source_bucket_name": "${BUCKET NAME}", "s3_source_bucket_key": "input/acctindex.txt" } |
7. OpenSearchでデータを確認する
インデックスパターンを作成する
OpenSearchダッシュボードURLにアクセスします。
Discoverを開き、「+ Create index pattern」を押下します。
Index pattern nameに「acctindex.csv」と入力し、「Next Step」を押下します。遷移先で「Create index pattern」を押下します。
データを確認する
おわりに
メインフレーム上のデータをAWS上で扱いやすい形式に処理することで、データ分析や機械学習等データの活用が進められそうです。
ハイブリッド環境のようにAWSへの移行を前提としない場合も含め、メインフレームのモダナイズを実現できる方法のひとつになると考えられます。