moto の 1.3.15 でエラー

こんにちは。

概要

python から AWS のリソースを操作したいとき、 SDK である boto3 を利用してる方も多いと思います。 その boto3 を mock してくれる大変ありがたいライブラリである、 moto ですが、 09/08 にリリースされた ver.1.3.15 で、必要な依存ライブラリがインストールされなくなりテストに失敗するケースが出ているようです。 github.com

起こったこと

かくいう私も、 S3 と Cognito のモックでエラーが出てしまいました。 GitHub のブランチに Push すると CodePipeline が動きはじめ、CodeBuild で pytest を実行後、 serverless framework でデプロイをしています。

その pytest の部分がエラーになってしまい、デプロイ失敗となっていました。

なぜ気づいたか

なぜ moto が原因かと気づいたかというと、 * 同じソースコードを09/07 にデプロイしたときは問題なく通っていた * ソースコードやビルド環境は変更していない * 使用しているライブラリは Pipfile で管理しており、バージョン固定していない(ビルド時の最新を使用する)

利用しているライブラリの最終更新はないかな?と調べたら、ちょうど moto がバージョンアップしていました。 そこで、 Pipfile にてバージョンを 1.3.14 に固定してデプロイしたらテスト成功。 これだ。となった次第です。

対応

ひとまずはバージョン固定でデプロイすることにしました。 moto は現在修正作業が行われているので、次のバージョンを待ちましょう。

教訓

デプロイ時のバージョンには気を付けましょう。 バージョン固定をするべきかどうか。このあたりもきちんと考えて方針を決めたいですね。

最後に

moto は AWS 関連の開発を行う上で非常に便利なライブラリです。 これからもお世話になります!