Lambdaでpandasqlを使用する

Lambdaでpandasqlを利用するまでのメモ

Lambdaではpandasが用意されていないため、ダウンロードして読み込む必要がある。
ただし、AmazonLinuxでかためたpandasでバージョンを合わせる必要がるため下記を行う。

◆pandasのライブラリをかためる
・EC2 AmazonLinux(AmazonLinux2ではない)インスタンス起動

==EC2コマンドで事前準備==
・pyenvインストール
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

・環境パス設定
$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bash_profile
$ echo ‘export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.bash_profile
$ echo ‘eval “$(pyenv init -)”‘ >> ~/.bash_profile
$ source ~/.bash_profile

・必要な依存関係のインストール
$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel -y

・pythonインストール(今回は3.7.2)※ここLambdaのバージョンと合わさないと動かない
$ pyenv install 3.7.2

・バージョンの切り替え
$ pyenv global 3.7.2
$ pyenv rehash

==pandas・pandasqlを固める==
・ダウンロード用のフォルダ作成
$ mkdir python

・作成したフォルダにライブラリをインストール
(pandasqlをインストールするとpandasも同時にインストールされる)
$ pip install -t ./python pandasql

・インストールしたライブラリを圧縮
$ zip -r pandas.zip python

==圧縮したファイルをS3へダウンロード==
(※S3にIAMユーザを作成して、アクセスキー・シークレットキーを作成しておく)
・認証設定(設定したキーを設定する)
$ aws configure
AWS Access Key ID [None]: xxxxx
AWS Secret Access Key [None]: yyyyy
Default region name [None]: zzzzz
Default output format [None]: (不要でOK)

・ファイルをS3へコピー
aws s3 cp {ファイルパス} s3://{バケット名}/{パス}

◆LambdaのLayer作成

上記でpandas・pandasqlをzipで固めれたら、LambdaのLayer作成よりファイルをアップロードを行いLayerを作成する。
Lambda作成時に作成したLayerを追加するとpandas、pandasqlがimport可能になる。

あとは、ロジックで使用する。

以上、忘れないようにメモでした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です