AWS Lambdaに依存関係ファイルをアップロードする方法

AWS Lambdaに依存関係ファイルをアップロードする方法

私はPythonベースのAWS Lambda関数を作ろうとしており、モジュールをインポートする必要があります。デプロイメント パッケージの作成 (Python)Amazonで。

ZIP ファイルを作成してアップロードすると、ZIP には次のものが含まれます。

メインのZIPコンテンツ、tester2は私のメインのPythonプログラムです

usaddress フォルダーに usaddress 依存関係を配置しましたが、それがその場所に属するものであることは推測しているだけです。

いずれにしても、ファイルを Lambda にアップロードすると、エラーが返されます。

{ 
"errorMessage": "Unable to import module 'Tester2'"
}
START RequestId: e9c2cafe-3705-11e6-a289-5366a5578765 Version: $LATEST
Unable to import module 'Tester2': No module named future.builtins
END RequestId: e9c2cafe-3705-11e6-a289-5366a5578765

usaddress/pycrfsuite/_pycrfsuite.pyd ファイルがファイルによってインポートされていますusaddress/pycrfsuite __init_。_pycrfsuite は正しいディレクトリにありますが、なぜ無視されているのかわかりません。

これを動作させるにはどうすればよいですか?

答え1

いろいろ調べた結果、.pyd ファイル (無視されていたファイルのファイル タイプ) はコンパイルされた cython ファイルであり、DOS システムと UNIX システムではコンパイル方法が異なることがわかりました。そこで、EC2 インスタンスを開き、依存ライブラリである usaddress をインストールし、ec2 インスタンスがコンパイルした .so ファイルをコピーしました。

結局それはうまくいきました。つまり、これは実際には互換性のないシステム ファイルの問題でした。

関連情報