AWS LambdaでGemini APIが動かない?『GLIBC_2.28 not found』エラーを解決する正しいデプロイ手順

Python 3.12環境のAWS Lambda上でGemini APIを動かそうとした際、ローカルでは正常に動作するのにデプロイ後にインポートエラーが発生してハマったので、備忘録として解決策を残します。

この記事でわかること

  • AWS Lambdaで「GLIBC_2.28 not found」が発生する根本原因
  • google-generativeaiの依存パッケージ「grpcio」の互換性問題
  • GitHub Actions等のCI/CD環境から正しくデプロイするためのpipコマンド

[現象] Lambda実行時にImportModuleErrorが発生

Lambda関数をテスト実行すると、以下のメッセージが表示され、ライブラリの読み込みに失敗します。

Runtime.ImportModuleError: Unable to import module 'lambda_function': /lib64/libc.so.6: version 'GLIBC_2.28' not found (required by /var/task/grpc/_cython/cygrpc.cpython-312-x86_64-linux-gnu.so)

[環境] 開発・デプロイ構成

ランタイムPython 3.12
実行環境AWS Lambda (Amazon Linux 2023等)
使用ライブラリgoogle-generativeai (Gemini API SDK)
CI/CDツールGitHub Actions (ubuntu-latest)

[原因] grpcioのバイナリ互換性とGLIBCのバージョン不一致

このエラーの原因は、Gemini APIの公式SDKが依存する『grpcio』パッケージのバイナリ互換性にあります。

GitHub Actionsのデフォルトランナー(Ubuntu最新版)で pip install を実行すると、そのビルド環境のGLIBCバージョン(2.31以上)に依存したバイナリがインストールされます。一方で、AWS Lambda側の環境に含まれるGLIBCはそれより古いため、デプロイした共有ライブラリ(.soファイル)をリンクできず、実行時にエラーを吐いて停止してしまいます。

[解決策] pip install時にプラットフォームを明示指定する

GitHub ActionsなどのUbuntu環境からデプロイパッケージを作成する場合、Lambdaの実行環境と互換性のあるプラットフォームのバイナリを強制的に取得する必要があります。

【Before】(エラーが発生するデプロイ手順)

pip install google-generativeai -t .

【After】(互換性を確保した修正コマンド)

pip install --platform manylinux2014_x86_64 --only-binary=:all: --target . google-generativeai

コマンドのポイント:

  • –platform manylinux2014_x86_64: LambdaのOS環境でも動作する、汎用的なLinuxバイナリを指定します。
  • –only-binary=:all:: ビルド環境のソースからコンパイルするのではなく、必ずビルド済みバイナリ(Wheel)を取得するように強制します。

[まとめ] バイナリパッケージを含むデプロイの注意点

AWS LambdaでGemini API(google-generativeai)を利用する際は、内部で動くgrpcioのバージョン管理が鍵となります。CI/CDパイプラインを構築する際は、OS環境の差異を意識し、今回のようにプラットフォームを明示するか、Amazon LinuxベースのDockerコンテナ内でビルドを行うようにしましょう。

タイトルとURLをコピーしました