技術系TIPS
PR

Lambda実行時に「Unable to import module ‘lambda_function’: /lib64/libc.so.6: version `GLIBC_2.28′ not found」エラー

saratogax
記事内に商品プロモーションを含む場合があります

以前、Python で Paramiko を使った Lambda を書く機会がありました。

あわせて読みたい
【Python】Paramikoでディレクトリのファイル一覧を取得する方法
【Python】Paramikoでディレクトリのファイル一覧を取得する方法

その際、pycrypt 周りで Lambda 実行時エラーが出て苦労した記憶があります。

今回、他の Lambda を久し振りに serverless でデプロイしたところ、同じエラーに遭遇したので解決したいと思います。

エラーの内容

Lambda 実行時に表示されたエラーは以下の通り。

Runtime.ImportModuleError: Unable to import module ‘lambda_function’: /lib64/libc.so.6: version `GLIBC_2.28′ not found (required by /var/task/cryptography/hazmat/bindings/_rust.abi3.so)

lambda_function は Lambda の実行ファイル名です。

AWS Lambda では GLIBC_2.28 を実行できないけど、どこかのタイミングでライブラリ側が使うようになってしまっているのでしょうか。

対応策

そこで、該当するライブラリ周りのバージョンを指定してみることにします。

requirements.txt に以下の定義を追加してみましょう。

cryptography と bcrypt を追記してみました。
paramiko==3.2.0
pycrypto==2.6.1
cryptography==3.4.8
bcrypt==3.2.2

これで問題なく Lambda を実行することができました。

定期的に更新がかかる Lambda だともっと早く気付けたかもしれないので、開発環境だけでも定期的に serverless でデプロイしておきたいですね。

久し振りに触った Lambda でこういったことが起こると焦ります・・・。

まとめ

冒頭の Lambda のエラーの解決方法を紹介してきました。

glibc や _rust.abi3.so などを同梱するという方法もあるでしょうが、今回はライブラリのバージョン固定で回避。

運用上、管理が手薄になってしまっているプログラムには気をつけていきたいですね。

ABOUT ME
saratoga
saratoga
フリーランスエンジニア
仕事にも趣味にも IT を駆使するフリーランスエンジニア。技術的な TIPS や日々の生活の中で深堀りしてみたくなったことを備忘録として残していきます。
記事URLをコピーしました