AWS LambdaでPythonを動かす中で、NumPyのレイヤーを適応して実行したときに発生したエラーにハマってしまった話です。
環境
・ランタイム:python3.11
・アーキテクチャ:x86_64
現象
NumPyのレイヤーを適応して実行すると下記エラーが起きました。
[code]
[ERROR] Runtime.ImportModuleError: Unable to import module ‘getComments_lamda’: No module named ‘numpy’
[/code]
レイヤーにするzipファイルは下記コマンドで環境を合わせて作成しています。
Dockerコンテナ起動
[code]
docker run -it –name lambda-build amazonlinux:2023 bash
[/code]
レイヤー用ディレクトリ作成
※ディレクトリ名は必ずpythonである必要がある。
[code]mkdir -p /tmp/layer/python[/code]
必要なライブラリをインストール(python3.11)
[code]python3.11 -m pip install numpy -t /tmp/layer/python[/code]
.zip化
[code]zip -r9 /tmp/numpy_layer.zip python[/code]
解決
有志の方がKlayersというNumPy, pandasをはじめとしたライブラリをアップロードしており、それを使用するとうまくレイヤーをインポートすることができました。
まとめ
結局原因は不明ですが、私と同じようにNumPyインポートでハマっている多数の記事を発見しましたのでAWSの仕様的に難しいのかもしれません。
こちらの記事も NumPy 関連のトラブルについて触れていますが、ほかの記事にはあまり見られない“原因の核心部分”まで踏み込んだ内容だったので参考としてリンクを貼っておきます。
私の場合はこの記事を試してもエラーは解決しませんでしたが。。。

