es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de Python sin servidor: No existe tal archivo o directorio: ‘/tmp/_temp-sls-py-req’ -> ‘/tmp/sls-py-req’

Estoy trabajando en un proyecto utilizando el framework serverless y python. He utilizado los plugins de serverless-python-requirements y todavía me está dando un error.

El despliegue está bien, pero cada vez que activo la función me da este error:


[ERROR] FileNotFoundError: [Errno 2] No such file or directory: '/tmp/_temp-sls-py-req' -> '/tmp/sls-py-req'

Aquí hay un fragmento de mi archivo serverless.yml:

custom:
  pythonRequirements:
    dockerizePip: true
    zip: true

plugins:
  - serverless-offline
  - serverless-python-requirements

y aquí hay un fragmento de mi código que causa el error:

try:
    import unzip_requirements
except ImportError:
    pass

import json
import boto3
import pandas as pd
from sklearn.neighbors import NearestNeighbors
from boto3.dynamodb.types import TypeDeserializer

Todo lo que sabía era que estaba dando un error al importar unzip_requirements (línea 2). Seguí la documentación y me pide que haga la importación.

La causa del error parece ser que no puede encontrar algo en la carpeta /tmp de lambda.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que podría haber un problema con la implementación de los requisitos de Python. Dado que ya has utilizado el plugin serverless-python-requirements, es posible que el plugin no haya empaquetado todas las dependencias necesarias para tu función Lambda.

    Una posible solución es intentar ejecutar la implementación con el flag --verbose para obtener más información sobre el proceso de implementación. Esto puede darte más información sobre lo que podría estar causando el error.

    Otra cosa a verificar es si el plugin está utilizando la versión correcta de Python. AWS Lambda actualmente soporta Python 3.6, 3.7 y 3.8. Asegúrate de que el plugin esté utilizando una de estas versiones.

    Por último, puedes intentar empaquetar manualmente las dependencias de Python utilizando un entorno virtual y subiéndolas a Lambda. Esto implica la creación de un entorno virtual, la instalación de todas las dependencias y luego comprimir el contenido del entorno virtual (excluyendo la carpeta site-packages). Puedes luego subir el archivo zip a tu función Lambda.

    Asegúrate de que tu función Lambda tenga los permisos necesarios para acceder a cualquier recurso externo requerido (como DynamoDB).

Comments are closed.