¿Cómo puedo solucionar el error «Unable to import module» que se muestra cuando ejecuto código Lambda en Python?

3 minutos de lectura
0

Cuando intento ejecutar mi código de AWS Lambda en Python, se muestra el error «Unable to import module».

Breve descripción

El error «Unable to import module» se muestra cuando el entorno de AWS Lambda no puede encontrar la biblioteca especificada en su paquete de despliegue de Lambda.

Para solucionar este error, cree un paquete de despliegue con todas las bibliotecas necesarias. Como alternativa, cree una capa de Lambda con las bibliotecas necesarias y asóciela a la función de Lambda. El método de la capa de Lambda le permite reutilizar esta capa en varias funciones de Lambda.

Solución

Creación de una capa de Lambda para asociarla a varias funciones de Lambda

Nota: Al crear la capa de Lambda, coloque las bibliotecas en las carpetas /**python ** o python/lib/python3.x/site-packages. Se recomienda crear una capa de Lambda en el mismo sistema operativo en el que se basa la versión ejecutable de Lambda. Por ejemplo, Python 3.12 se basa en una imagen de máquina de Amazon (AMI) de Amazon Linux 2023. Por lo tanto, cree la capa en un sistema operativo Amazon Linux 2023.

Si su instancia de Amazon Elastic Compute Cloud (Amazon EC2) no tiene permisos para cargar capas de Lambda mediante la llamada a la API PublishLayerVersion, siga los pasos 1 a 3. Si la instancia ya tiene los permisos, continúe con el paso 4.

  1. Utilice la consola de Amazon EC2 para crear una instancia con la AMI de Amazon Linux 2023. Como alternativa, utilice la consola de AWS Cloud9.

  2. Cree una política de AWS Identity and Access Management (IAM) que otorgue permisos para llamar a la operación de la API PublishLayerVersion.
    Ejemplo de instrucción de política de IAM:

    {
     "Version": "2012-10-17",
     "Statement": [
     {
     "Sid": "VisualEditor0",
     "Effect": "Allow",
     "Action": "lambda:PublishLayerVersion",
     "Resource": "*"
     }
     ]
    }
  3. Cree un rol de IAM y, a continuación, asocie la política de IAM al rol.

  4. Asocie el rol de IAM a la instancia.

  5. Conéctese a su instancia o al entorno de Cloud9.

  6. Ejecute los siguientes comandos para crear una nueva carpeta y utilice pip para instalar la biblioteca llamada «numpy»:

    mkdir -p lambda-layer/python
    cd lambda-layer/python
    pip3 install --platform manylinux2014_x86_64 --target . --python-version 3.12 --only-binary=:all: numpy

    Nota: Actualice el parámetro platform para su tipo de función. En el caso de una función de Lambda x86_64, defina el valor manylinux2014_x86_64. En el caso de una función arm64, defina el valor manylinux2014_aarch64. Actualice el parámetro python-version a la misma versión que usa la función de Lambda.

  7. Ejecute el siguiente comando para colocar el contenido de la carpeta python en un archivo layer.zip:

    cd ..
    zip -r layer.zip python

    Ejecute el siguiente comando para publicar la capa de Lambda:

    aws lambda publish-layer-version --layer-name numpy-layer --zip-file fileb://layer.zip --compatible-runtimes python3.12 --region us-east-1

    Nota: Sustituya us-east-1 por la región de AWS en la que se encuentre su función de Lambda.

  8. Añada la capa a la función de Lambda.

  9. Para probar la función de Lambda, importe el paquete e imprima la versión.
    Ejemplo de resultado satisfactorio: 

    import json
    import numpy
    
    
    def lambda_handler(event, context):
     print(numpy.__version__)
     return {
     'statusCode': 200,
     'body': json.dumps('Hello from Lambda!')
     }	
OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 4 meses