Health開発者の皆さん、こんにちは。関数からPyODBC経由でIRISに接続するまでの流れを試してみました。IRIS」をご参照ください。参考にしたAWSドキュメント:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-python.html以下の流れでご紹介します。Lambda関数を作成する。例で使用しているコード一式はこちらにあります👉https://github.com/Intersystems-jp/iris-pyodbc-lambda流れに入る前に事前準備についてご紹介します。IRISの準備EC2インスタンスを用意し(例ではUbuntu20.04)IRISをインストールした環境を用意し、IRISのスーパーサーバーポート(1972番)にアクセスできるようにします。IRISに以下テーブルとデータを用意しておきます(USERネームスペースで作成する例)。IRISにログインします。入力するとSQLシェルに切り替えできます)、CREATE文とINSERT文を実行します。quitIRISからログアウトするには、haltコマンドを使用します。必要であれば、Lambda関数からEC2にアクセスするときのロールを作成しておきます。レイヤ―を作成する《参考にしたページ》https://qiita.com/Todate/items/03c5d3911b52b93d39afレイヤーは、Lambda関数で使用するライブラリとその他依存関係ファイルをZipファイルでアーカイブしたものでコードやデータも含めることができるそうですが、以下の流れでは、IRISの接続に必要なunixODBC用ファイル、pyodbcモジュール用ファイルを含めたレイヤ―作成の流れでご紹介します。soファイルを入手するため、以下ページを参考にしています。https://qiita.com/Todate/items/03c5d3911b52b93d39af以下任意ディレクトリ上で実行します。できるので、libディレクトリをレイヤー作成用ディレクトリに全コピーします。IRIS用ドライバのダウンロードIRIS用ドライバlibirisodbcur6435.soをレイヤー作成用ディレクトリ以下libディレクトリにダウンロードします。pyodbcのインストールlambda関数で使用するPythonモジュールは、レイヤー内pythonディレクトリ以下に配置します。ODBCデータソース用ファイルの作成odbc.iniとodbcinst.iniを、レイヤー作成用ディレクトリ以下pythonディレクトリに配置します。レイヤー用ディレクトリ以下にあるファイルは以下の通りです。zip作成(レイヤーの作成)レイヤー用ディレクトリで以下実行します。Lambdaでレイヤーを追加します。以上でレイヤーの作成が完了です。次はいよいよ、lambda関数の作成です。Lambda関数を追加する以下の順序で追加します。テスト実行サンプルのpythonスクリプト:index.pyを使用して登録します。確認:IRISへの接続情報についてサンプルのpythonスクリプト:index.pyでは、以下いずれかの方法でIRISに接続できるように記述しています。index.pyには、lambda関数作成時に設定する環境変数を利用するように記述しています(18~22行目)。環境変数は、Lambda関数登録後、画面で追加/変更できます。9行目と11~15行目のコメントを外し18~22行目をコメント化して利用します。接続するIRISの情報に合わせてconnection.configを変更してください。今回登録するLambda関数ハンドラーとして設定します。Lambdaの関数メニューから登録します。必要であれば、Lambda関数がEC2にアクセスできるようにロールを作成します。この他、IRISへの接続情報に環境変数を利用する場合は以下追加します。コードタブを選択し画面下のほうにある「ランタイム設定」の「編集」をクリックして変更保存します。手順で作成したレイヤーをLambda関数に追加します。コードタブを選択した状態で画面一番下の「レイヤー」から「レイヤーの追加」ボタンで追加します。コード類のアップロード以下のファイルをZipファイルに含めてアップロードします。(IRISへの接続情報を記載したファイル)index.pyodbcinst.ini※IRISへ接続情報を環境変数から取得する場合は、connection.configは不要です。ご参考:iris_pyodbc_code.zipコードタブの右端のボタン「アップロード元」をクリックし、Zipを選択してアップロードします。テスト実行テストタブを使用します。新しいイベントを作成します。(何度もテストする場合は保存しておくと便利です)サンプルは特に引数入力がないので、指定する引数は{}と指定していますが、引数がある場合はJSONできるようです。接続ができ、SELECT文が実行できると以下のような結果を表示します。画面上には実行した関数の戻り値の表示(JSON配列)画面下のほうにスクリプト内で記述したprint()の結果が表示されています。最後にご紹介するのは、レイヤーとLambda関数追加の流れをCloudformationを利用して自動的に作成する方法です。メモ:事前に準備したEC2の情報を指定する流れで試しています。Lambda関数を作成する」の流れを自動化します。S3にZipを配置するS3のバケットを作成し、作成したZipファイル(例:iris_pyodbc_lambda2.zip)を配置します。"IRISPyODBCLayer"lambda関数を作成しています。"index.lambda_handler"必要であれば、Lambda関数がEC2にアクセスするときに使用するロール名を指定します。"arn:aws:iam::109671571309:role/lambda_vpc_basic_execution_IRIS"※各設定値を適宜変更してください。後は、cloudformationの画面でスタックを作成し、ymlを実行するだけです。ymlのアップロード手順は以下の通りです。https://ap-northeast-1.console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/cloudformation.ymlをアップロードし、スタック名を任意に決定します。この後、2画面表示されますが、すべてデフォルトで「次へ」と「送信」ボタンをクリックします。作成できるとこの表示になります。作成したスタックの「リソース」タブをクリックすると、lambda関数へのリンクが表示されます。テスト実行が成功すると以下のような出力が表示されます。接続できない場合は、環境変数の値をご確認ください(「設定」タブで確認できます)。続けるにはログインするか新規アカウントを作成してくださいログイン。