web-dev-qa-db-ja.com

AWS python lambda function:requestsという名前のモジュールはありません

私はAWSを初めて使用し、いくつかの問題が発生しています。ここに私のコードがあります:

from __future__ import print_function
from urllib2 import Request, urlopen, URLError
import requests
import boto3
import json

def lambda_handler(event, context):
    url = "https://globalcurrencies.xignite.com/xGlobalCurrencies.json/GetHistoricalRatesRange?Symbol=BTCUSD&PriceType=Mid&StartDate=01/01/2017&EndDate=10/27/2017&PeriodType=Daily&FixingTime=22:00&_token=some_token_xyz"
    response = requests.get(url).json()
    # print json.dumps(response, indent=4) # gives a syntax error
    return response

ファイルの名前はlambda_function.pyです。 stackoverflowで同様の問題をチェックし、ファイルの名前を変更する必要があると言った人もいました。しかし、それは助けにはなりませんでした。 pythonメソッドの名前は次のとおりです。
enter image description here ここに私が得ているエラーがあります:START RequestId: cf24e9be-bbef-11e7-97b4-d9b586307f3e Version: $LATEST Unable to import module 'lambda_function': No module named requestsそして、印刷しようとすると、構文エラーが発生します。書式設定にごめんなさい。助言がありますか?

10
inson

リクエストはAWS lambdaの標準ライブラリではありません。

これを解決する2つの方法:

1- Botocoreライブラリスタックから次のようにインポートします。

from botocore.vendored import requests

ここ ラムダでインポート可能なすべてのライブラリのリストがあります

2- 作成 virtualenvを使用した展開パッケージ。

21
Nilo_DS

これは、ラムダで実行しているときにrequestsライブラリが欠落しているためです。ローカルマシンにグローバルにインストールされている可能性があります。実行する場合:
pip install requests -t .
ソースコードと同じディレクトリで、リクエストパッケージをそのディレクトリにインストールし、lambda_function.pyとともにlambdaにアップロードできます。 boto3とjsonについても同じことが必要になる場合があります。
pip install boto3 -t .
pip install json -t .

6
Mark Kell

「requests」モジュールは、インストールしようとしている「Zip」ファイルにありません。 'pip install module_name(requests)-t)ですべてのモジュールをZipファイルに入れる必要があります。

1
vedat