AWS GlueJob(Pythoh shell)でMySQL(RDS | Aurora MySQL compatible)に接続する
なぜだかは不明だが(pythonの事がわかってないからなのか)GlueのPython実行(PythonShel)にはMySQLへの接続ライブラリが無い。
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/add-job-python.html
しょうがないので外部ライブラリとして作って自分のバケットにおいて読み込ませる事にした。
ドキュメント漁ってもいまいち一気通貫に行かなかったので、 実際やったことを記録しておく。
ライブラリをローカルに取得してeggファイルを作る
git clone https://github.com/PyMySQL/PyMySQL.git cd PyMySQL/ python setup.py bdist_egg
これでdistディレクトリ配下にeggファイルが作成されるので。 この
PyMySQL-0.9.3-py3.6.egg
ファイルをGlueが読み込めるS3のバケットに配置してやる。
注意点
eggファイルを作る時のpythonバージョンとGlue上のPythonバージョンを揃える事。 このファイルを作った時は
Python 3.6.9
揃ってないとjob実行時にエラーになります。
S3の設定
Jobからread可能なS3の適当な場所にアップロードする
Glue側の設定
GlueのJob設定の
Python library path
という所にS3のフルパスを記入してやる。
s3://バケット/PyMySQL-0.9.3-py3.6.egg
みたいな感じ。 これで後は
import pymysql.cursors
みたいな感じでjobから読み出せる。
次はDataframe使っていい感じにETLする。