最近、AWS Lambdaを使用して、python私が書いたコードに対してトリガーを使用し始めました。現在、Zipファイルで作成された2つのラムダ関数があります。トリガーイベントをテストすることになっています。
これはテスト用であるため、私はすべての中で最高のコードを使用しています。
def lambda_handler(event, context):
print ("Hello World")
ただし、このエラーが返されます:
Response:
{
"errorMessage": "Unable to import module 'lambda_function'"
}
Request ID:
"65024f16-172c-11e8-ab26-27ff3322e597"
Function Logs:
START RequestId: 65024f16-172c-11e8-ab26-27ff3322e597 Version: $LATEST
Unable to import module 'lambda_function': No module named 'requests'
END RequestId: 65024f16-172c-11e8-ab26-27ff3322e597
REPORT RequestId: 65024f16-172c-11e8-ab26-27ff3322e597 Duration: 15.93 ms
Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 22 MB
これを検索したすべての場所で、関数の名前が正しいことを確認するか、.Zipファイルが読み取り可能であることを確認することで、答えは解決されました。これらの両方の条件を満たしました(ファイルの名前はlambda_function.pyで、ルートにあります)。
または、ログに問題があるようです。許可を再確認し、すべてのリソースでログを作成することができます。他に何か問題がありますか?
requests
ライブラリーは、デフォルトではラムダに含まれていません。どこかの関数/ライブラリにインポートしようとしているようです。インポートするには、次の行が必要です。
from botocore.vendored import requests
または、Zipファイルのルートにあるrequests
ライブラリをZipする必要があります。
編集:これを必要とするライブラリのいずれかに依存関係がある可能性があります。これを克服するには、アプリケーションZipにrequests
をインストールします。これを行うには、アプリケーションのルートディレクトリで次のコマンドを実行します:pip install requests -t ./
。
より良い方法は、requirements.txt
というファイルを作成し、そこにすべての依存関係を追加することです。 virtualenvを使用して、requirements.txtで定義されているすべてのパッケージをインストールします。pip install -r requirements.txt -t ./