AWS Lambda Layers + OpenAI でつまづいた件
この記事は株式会社ガラパゴス(有志)アドベントカレンダーの17日目の記事です。
今回は、最新のOpenAIモジュールを詰め込んだ Lambda Layer でつまづいた件を記事にしてます。
僕と同じつまづいた方の助けになればと思っています。
最新じゃなくても問題ないという方は、誰かが公開しているものを使ってもいいと思います。ARNまで公開されていれば、楽ちんに利用できるので、おすすめです。
※僕は、python3.11環境 + openaiの最新モジュールを使いたかったので、自分で作成しています
Lambda Layersとは
AWS Lambda Layersは、Lambda関数に必要なライブラリや依存関係を分離し、共有可能なレイヤーとして管理するAWSの機能です。これにより、複数のLambda関数が同じコードやライブラリを再利用でき、コードの重複を減らし、管理を効率化できます。例えば、特定のSDKやフレームワークを多くの関数で使用する場合、それらをLayerに配置し、必要な関数から参照することが可能です。
Lambda Layersを作ろう
openaiのモジュールをローカルにダウンロードして、Lambda Layersを作ります。
mkdir python
pip install -t ./python openai
zip -r openai.zip ./python
Lambda Layers を作る際に、zipファイル(10MB以内)をアップロードすれば、完成です。
※多少は超えれます(なんでか分からないけど)
Lambda Layers を追加して実行(エラーに)
Lambda に、先ほど作成したLayersを追加し、実行すると...エラーになります。
え...なんで
下のエラーが発生します。
Unable to import module 'lambda_function': No module named 'pydantic_core._pydantic_core
原因と対応
エラー原因はなんと、openaiのdependacyであるfastapiのバージョンが新しいため、発生してました。
fastapiが新すぎると、pydantic v2がインストールされるのですが、openaiがpydantic v2に対応していなかったです。
なので、fastapiのバージョンを下げて対応しました。
mkdir python
pip install -t ./python fastapi==0.99.0 openai
zip -r openai.zip ./python
これで無事に、実行できるようになりました。
Discussion
ありがとうございます…!!
同じ症状で悩んでいました!
ありがとうございます!