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可能になる。
あとは、ロジックで使用する。
以上、忘れないようにメモでした。