AWS python lambda-Funktion:Keine Modul namens Anfragen
Ich ziemlich neu bin und AWS ich habe einige Probleme. Hier ist mein code:
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
Name der Datei ist lambda_function.py; ich habe ähnliche Probleme auf stackoverflow und einige erwähnt, dass ich die Datei benennen. Aber es hat nicht geholfen. Hier ist, wie python-Methode wurde benannt:
Hier ist die Fehlermeldung die ich erhalte:
START RequestId: cf24e9be-bbef-11e7-97b4-d9b586307f3e Version: $LATEST
Unable to import module 'lambda_function': No module named requests
Und wenn Sie versuchen, zu drucken, es gibt mir einen syntax-Fehler. Sorry für die Formatierung. Irgendwelche Vorschläge?
requests
ist nicht in der standard-Bibliothek. Sie müssen schauen, in wie Abhängigkeiten auf, die Plattform; es ist üblich, verwenden Sie einerequirements.txt
Datei angeben, zum Beispiel. Haben Sie einen Blick auf z.B. docs.aws.amazon.com/lambda/latest/dg/...- Ich habe virtuelle Umgebung auf meinem Rechner. Soll ich das einfach hochladen, alles zu tun
pip install -r requirements.txt
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anfragen ist nicht ein standard-Bibliothek in AWS lambda.
Also zwei Möglichkeiten, um dieses Problem zu lösen:
1 - Import aus der Botocore Bibliotheken Stapel wie:
Hier es wird eine Liste aller verfügbaren Bibliotheken zu importieren lambda
2- Erstellen ein Bereitstellung-Paket mit virtualenv.
Dies ist weil es fehlt, ist die Anfragen Bibliothek beim laufen in den lambda - ist es wahrscheinlich, dass seine Global installiert auf Ihrem lokalen Rechner. Wenn Sie ausführen:
pip install requests -t .
in das selbe Verzeichnis wie die source-code installieren, der die Anfragen-Paket in diesem Verzeichnis können Sie dann laden Sie es auf lambda zusammen mit Ihrem lambda_function.py. Möglicherweise müssen Sie das gleiche tun für boto3 und json:
pip install boto3 -t .
pip install json -t .
'requests' - Modul ist nicht in Ihrem 'zip' - Datei, die Ihr versuchen zu installieren. Sie haben, um alle Module in die zip-Datei von 'pip install Modulname(wie Anfragen) -t .'
haben Sie den Namen Ihrer lambda-Ausdruck auf diese Weise in python-code:
und in lambda-console-handler:
für Ihre Anfrage ein Fehler auf, muss der Ordner des Moduls auf Ihrem .zip, bevor Sie Sie hochladen zu lambda.
Unable to import module 'main': No module named requests