Recientemente comencé a usar AWS Lambda para usar disparadores contra un código de Python que he escrito. Actualmente tengo 2 funciones lambda, ambas creadas con archivos ZIP. Se supone que el segundo que creé prueba los eventos desencadenantes.
Esto es para fines de prueba, así que estoy usando el mejor código de todos:
def lambda_handler(event, context): print ("Hello World")Sin embargo, me devuelve este error:
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 MBEn todos los lugares donde busqué esto, la respuesta se resolvió asegurándome de que los nombres de las funciones fueran correctos o asegurándome de que el archivo .zip fuera legible. He satisfecho ambas condiciones (el nombre del archivo es lambda_function.py y está en la raíz).
Alternativamente, parece que podría ser un problema con los registros. Verifiqué dos veces mi permiso y tengo la capacidad de crear registros con todos los recursos. ¿Alguna otra idea de cuál podría ser el problema?
La biblioteca de requests no viene por defecto en lambda. Parece que está intentando importarlo en su función/biblioteca en alguna parte. Para importarlo, necesita la siguiente línea:
from botocore.vendored import requests Alternativamente, necesitaría comprimir la biblioteca de requests en la raíz de su archivo zip.
EDITAR: Puede haber una dependencia en una de sus bibliotecas que pueda necesitar esto. Para superar esto, instale requests en el zip de su aplicación. Para hacer esto, ejecute el siguiente comando en el directorio raíz de su aplicación: pip install requests -t ./ .
Una mejor manera sería crear un archivo llamado requirements.txt y agregar todas las dependencias allí. Use virtualenv para instalar todos los paquetes definidos en los requisitos.txt usando: pip install -r requirements.txt -t ./
ACTUALIZACIÓN : a partir del 21/10/19, se eliminará la versión de proveedor de la biblioteca de solicitudes en botocore. Consulte esta publicación de blog para obtener más detalles.
Dale un cheque a esta respuesta
Si está trabajando con Python en AWS Lambda y necesita usar solicitudes , es mejor que use urllib3 , actualmente es compatible con AWS Lambda y puede importarlo directamente, consulte el ejemplo en el sitio urllib3.
import urllib3 http = urllib3.PoolManager() r = http.request('GET', 'http://httpbin.org/robots.txt') r.data # b'User-agent: *\nDisallow: /deny\n' r.status # 200Unable to import module 'lambda_function': No module named 'requests'Intente usar python3.7 como tiempo de ejecución. ¡Solucionará el problema de las solicitudes!