lambdaでエラー「AttributeError: module ‘os’ has no attribute ‘add_dll_directory’」が発生した時の対応方法について解説!

aws

ライブラリと実行用のpyファイルをzip化し、Lambdaにアップロードして作成したLambda関数をAPI Gatewayに設定し、ローカルのreactで問題なく動作するか検証していた時に発生しました。エラー時の検証環境、原因、解決方法について簡単に解説します。

検証環境

Windows11
Python 3.11.9 (FastAPIのバージョン0.99.0を使用できるようにするため。)
FastAPI 0.99.0 (Lambdaでエラーが発生しないようにするため。)

原因

Lambdaと異なるOSの環境でzip化したことにより、Linux環境だと不要なものまでzipファイルに含まれていたためです。

解決方法

Lambda Layerにnumpyを追加し、zipファイルに含めないように対応しました。

numpyのARNを確認

こちらのサイトにアクセスし、READMEファイルの「List of ARNs」の「Python 3.11」をクリックします。

「ap-northeast-1」の「html」をクリックしてARNs一覧を表示します。
※リージョンはご自身のリージョンに合わせてください。

「numpy」のARNをコピーします。

LambdaのLayerにコピーしたARNを追加

対象のLambda関数画面を開き、「レイヤーの追加」をクリックします。
※画像は既にnumpyが追加されている状態です。

以下を設定し、保存をクリックします。

  • 「レイヤーを選択」のラジオボタンで「ARNを指定」を選択
  • 「ARNを指定」のテキストボックスにこちらからコピーしたARNをペーストし、検証をクリック

参考

[1]https://qiita.com/polarbear08/items/202752d5ffcb65595bd9

コメント

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