AWS lamda Numpyレイヤーでハマった話

技術情報
技術情報

環境

・ランタイム:python3.11
・アーキテクチャ:x86_64

現象

Numpyのレイヤーを適応して実行すると下記エラーが起きました。

[ERROR] Runtime.ImportModuleError: Unable to import module 'getComments_lamda': No module named 'numpy'

レイヤーにするzipファイルは下記コマンドで環境を合わせて作成しています。

 Dockerコンテナ起動

docker run -it --name lambda-build amazonlinux:2023 bash

レイヤー用ディレクトリ作成
※ディレクトリ名は必ずpythonである必要がある。

mkdir -p /tmp/layer/python

必要なライブラリをインストール(python3.11)

python3.11 -m pip install numpy  -t /tmp/layer/python

.zip化

zip -r9 /tmp/numpy_layer.zip python

解決

有志の方がKlayersというNumpy, pandasをはじめとしたライブラリをアップロードしており、それを使用するとうまくレイヤーをインポートすることができました。

GitHub - keithrozario/Klayers: Python Packages as AWS Lambda Layers
Python Packages as AWS Lambda Layers. Contribute to keithrozario/Klayers development by creating an account on GitHub.

まとめ

結局原因は不明ですが、私と同じようにNumpyインポートでハマっている多数の記事を発見しましたのでAWSの仕様的に難しいのかもしれません。

こちらの記事も NumPy 関連のトラブルについて触れていますが、ほかの記事にはあまり見られない“原因の核心部分”まで踏み込んだ内容だったので参考としてリンクを貼っておきます。
私の場合はこの記事を試してもエラーは解決しませんでしたが。。。

AWS LambdaでPython向けLayerを作ろうとしたらはまった話 - Qiita
AWS Lambda(Python)を使ってGoogle APIにアクセスしようとしたらライブラリではまった話です。 (Python初心者なので誤った記述があるかもしれません) 環境 開発環境用にEC2 Amazon Linux2 + Py...

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