web-dev-qa-db-fra.com

Fonction AWS python lambda: aucune demande de module nommée

Je suis assez nouveau sur AWS et j'ai quelques problèmes. Voici mon 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

Le nom du fichier est lambda_function.py; J'ai vérifié des problèmes similaires sur stackoverflow et certains ont mentionné que je devais changer le nom du fichier. Mais ça n'a pas aidé. Voici comment la méthode python a été nommée:
 enter image description here Voici l'erreur que je reçois: START RequestId: cf24e9be-bbef-11e7-97b4-d9b586307f3e Version: $LATEST Unable to import module 'lambda_function': No module named requests Et quand j'essaie de l'imprimer, cela me donne une erreur de syntaxe. Désolé pour le formatage. Aucune suggestion?

4
inson

request n'est pas une bibliothèque standard dans AWS lambda.

Donc, deux façons de résoudre ce problème:

1- Importez-le de la pile de bibliothèques Botocore en tant que:

from botocore.vendored import requests

Ici il y a une liste de toutes les bibliothèques disponibles à importer dans lambda

2- Créez un package de déploiement avec virtualenv.

11
Nilo_DS

En effet, il manque la bibliothèque request lors de son exécution dans le fichier lambda -, et il est probable qu’elle soit installée globalement sur votre ordinateur local. Si vous exécutez:
pip install requests -t .
dans le même répertoire que votre code source, il installera le paquet de requêtes dans ce répertoire, puis vous pourrez le télécharger sur lambda avec votre fonction_lambda.py. Vous devrez peut-être faire la même chose pour boto3 et json:
pip install boto3 -t .
pip install json -t .

4
Mark Kell

Le module 'Requêtes' n'est pas dans votre fichier 'Zip' que vous essayez d'installer. vous devez mettre tous les modules dans le fichier Zip avec "pip install nom_du_module (comme les requêtes) -t".

1
vedat