Imagina que necesitas ejecutar un script de Python en la función AWS Lambda y obtienes este error.
{ "errorMessage": "Unable to import module 'lambda_function': No module named 'pandas', "errorType": "Runtime.ImportModuleError" ... }
No te preocupes, este es un error común y no voy a extenderme tanto
Hay varias formas, pero le daré la forma más sencilla de importar pandas en la función AWS Lambda: ¿agregar una capa Lambda?
Es un ? capa de queso en la función Lambda que contiene código adicional como bibliotecas, dependencias, etc.
Las capas AWS Lambda son como bloques de construcción para sus funciones. Imagina que necesitas herramientas adicionales (como la biblioteca Pandas) para completar un proyecto. En lugar de empaquetar todas esas herramientas dentro de cada proyecto (lo que desperdicia espacio y tiempo), AWS le permite crear capas de herramientas (bibliotecas, dependencias o código compartido). Estas capas se encuentran fuera de su función principal, pero siempre están disponibles cuando su función las necesita.
En resumen, Lambda Layers te ayuda a:
Ahorre espacio en su código separando la lógica principal de las bibliotecas adicionales.
Reutilice bibliotecas y códigos en múltiples funciones Lambda.
Actualice o administre fácilmente sus dependencias sin cambiar el código de su función principal.
Piense en las capas como una caja de almacenamiento adicional adjunta a su función Lambda, que contiene todo lo que su función necesita para funcionar sin problemas. Puede apilar varias capas en su función sin saturar su código principal.
Solo se necesitan 3 pasos para ejecutar Pandas en su función Lambda con éxito
Como puede ver, tenemos una opción Capas bajo el nombre de nuestra función Lambda, en mi caso, es "import-pandas-function" y el recuento de capas es 0
Este paso se divide en dos pasos porque necesitamos agregar un script de Python que contenga algo de código Pandas y escribir un evento de prueba en JSON para verificar si el código se está ejecutando correctamente.
import json import pandas as pd def lambda_handler(event, context): data = event.get('data', []) df = pd.DataFrame(data) if not df.empty: mean_value = df['column_name'].mean() result = { "mean_value": mean_value, "data_shape": df.shape, "summary": df.describe().to_dict() } else: result = { "message": "Empty DataFrame" } # Return the response return { 'statusCode': 200, 'body': json.dumps(result) }
{ "data": [ {"column_name": 10, "other_column": "A"}, {"column_name": 20, "other_column": "B"}, {"column_name": 30, "other_column": "C"}, {"column_name": 40, "other_column": "D"} ] }
Presiona el botón de prueba y probablemente recibas el error:-
"errorMessage": "No se puede importar el módulo 'lambda_function': No hay ningún módulo llamado 'pandas',
"errorType": "Runtime.ImportModuleError"
...
Desplácese hacia abajo hasta su función Lambda, probablemente pueda ver la sección separada "Capas" al final de la página
Después de hacer clic en "Agregar una capa", puede ver la página que tiene un par de secciones "Configuración de tiempo de ejecución de funciones" y "Elegir una capa"
Puedes ver tres opciones en la sección "Elegir una capa", haz clic en "Capas de AWS".
Después de seleccionar las capas de AWS, puede ver el menú desplegable en "Capas de AWS".
En un menú desplegable de "capas de AWS", seleccione -> AWSSDKPandas-Python312
En un menú desplegable de "Versión", seleccione -> 13 (seleccione la que más)
haga clic en el botón "Agregar"
Cuando su página se dirige a la descripción general de la función, puede ver que la capa se agrega debajo del nombre de la función "import-pandas-function"
Obtuviste exitosamente la respuesta "statusCode": 200
{ "statusCode": 200, "body": "{\"mean_value\": 25.0, \"data_shape\": [4, 2], \"summary\": {\"column_name\": {\"count\": 4.0, \"mean\": 25.0, \"std\": 12.909944487358056, \"min\": 10.0, \"25%\": 17.5, \"50%\": 25.0, \"75%\": 32.5, \"max\": 40.0}}}" }
¿Seguir codificando?
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3