🫠

AWS Lambda Layers + OpenAI でつまづいた件

2023/12/17に公開2

この記事は株式会社ガラパゴス(有志)アドベントカレンダーの17日目の記事です。

今回は、最新のOpenAIモジュールを詰め込んだ Lambda Layer でつまづいた件を記事にしてます。
僕と同じつまづいた方の助けになればと思っています。
最新じゃなくても問題ないという方は、誰かが公開しているものを使ってもいいと思います。ARNまで公開されていれば、楽ちんに利用できるので、おすすめです。
※僕は、python3.11環境 + openaiの最新モジュールを使いたかったので、自分で作成しています
https://github.com/erenyasarkurt/OpenAI-AWS-Lambda-Layer

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

daikidaiki

同じ症状で悩んでいました!
ありがとうございます!