Python >> Tutoriel Python >  >> Python Tag >> Requests

Python sur AWS Lambda :`requests` de botocore.vendored obsolète, mais `requests` non disponible

J'ai réussi à envoyer des requêtes HTTP POST en utilisant le urllib3 bibliothèque, qui est disponible sur AWS Lambda sans nécessiter d'instructions d'installation supplémentaires.

import urllib3

http = urllib3.PoolManager()

response = http.request('POST',
                        url,
                        body = json.dumps(some_data_structure),
                        headers = {'Content-Type': 'application/json'},
                        retries = False)

Consultez les instructions ici :https://docs.aws.amazon.com/lambda/latest/dg/python-package.html#python-package-dependencies

Tout ce que vous avez à faire est de télécharger le module de demandes localement, puis de l'inclure dans votre package de déploiement de fonction Lambda (archive ZIP).

Exemple (si toute votre fonction Lambda consistait en un seul module Python + module de requêtes) :

$ pip install --target ./package requests
$ cd package
$ zip -r9 ${OLDPWD}/function.zip .
$ cd $OLDPWD
$ zip -g function.zip lambda_function.py
$ aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip

Réponse 2020-06-18

J'ai trouvé un moyen agréable et facile d'utiliser requests dans les fonctions AWS Lambda !

Ouvrez ce lien et recherchez la région utilisée par votre fonction :
https://github.com/keithrozario/Klayers/tree/master/deployments/python3.8/arns

Ouvrez le .csv correspondant à votre région et recherchez le requests ligne.
C'est le ARN lié à requests bibliothèque:
arn:aws:lambda:us-east-1:770693421928:layer:Klayers-python38-requests:6

Alors maintenant, dans votre fonction lambda, ajoutez une couche en utilisant l'ARN trouvé.
Obs. : assurez-vous que l'environnement d'exécution de votre fonction Python lambda est python3.8 .