はじめに
外部モジュールを使用するLambdaではモジュールをアップロードする必要があります。
AWS SAMを使うと簡単にソースコードとモジュールを一緒にアップロードする事が可能です。
AWS SAMである関数に久しぶりにdeployを行った時に、モジュールのバージョンを固定する必要がありました。
やらかし先生
RDSに接続するPythonのLambdaで pymsql
を使用しています。
RDS接続には関与しない変更を行いデプロイしたところ、RDSへの接続がエラーになりました
原因としてはpymysql
のバージョンが0.9系から1.0系に変更されていたため、同じ構文では接続が出来なくなっていました。
そのためpymysql
のバージョンを0.9系に固定する回避策を行いました。
モジュールのバージョン固定方法
結論
requirements.txt でバージョンを明記します
例 pymysqlを0.9.3のバージョンを指定したい時
pymysql == 0.9.3
記述方法について
上記の指定方法はAWS SAMに限ったわけではなく、Pythonにおけるrequirements.txtの扱いになります。
指定方法などは以下の記事が参考になりました。
おわりに
更新時の落とし穴になるので、出来る限りバージョンは指定しておきたいなと思いました。
どなたかの助けになれば幸いです。