• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

567
Vistas
La biblioteca pysftp no funciona en la capa lambda de AWS

Quiero cargar archivos en la instancia de EC2 usando la biblioteca pysftp (secuencia de comandos de Python). Así que he creado un pequeño script de Python que está usando la línea de abajo para conectarse

 pysftp.Connection( host=Constants.MY_HOST_NAME, username=Constants.MY_EC2_INSTANCE_USERNAME, private_key="./mypemfilelocation.pem", ) some code here ..... pysftp.put(file_to_be_upload, ec2_remote_file_path)

Este script cargará archivos desde mi máquina Windows local a la instancia EC2 usando el archivo .pem y funciona correctamente.

Ahora quiero realizar esta acción usando AWS lambda con la funcionalidad API Gateway .

Así que cargué el script de Python en AWS lambda. Ahora no estoy seguro de cómo usar la biblioteca pysftp en AWS lambda, así que encontré una solución que agrega la capa de biblioteca pysftp en la capa lambda de AWS. lo hice con

pip3 install pysftp -t ./carpeta_biblioteca

Y hago zip de la carpeta anterior y lo agrego en AWS lambda Layer.

Pero aún tengo tantos errores como uno por uno: -

Ningún módulo llamado 'pysftp'

Ningún módulo llamado 'paramiko'

Símbolo indefinido: PyInt_FromLong

no se puede importar el nombre '_bcrypt' del módulo 'bcrypt' parcialmente inicializado (probablemente debido a una importación circular)

módulo cffi no encontrado

Acabo de desaparecer de los errores anteriores. No encontré la solución adecuada. ¿Cómo puedo usar la biblioteca pysftp en mi AWS lambda sin problemas?

about 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Construí la capa pysftp y la probé en mi lambda con python 3.8. Solo para ver la importación y la impresión básica:

 import json import pysftp def lambda_handler(event, context): # TODO implement print(dir(pysftp)) return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }

Usé la siguiente herramienta acoplable para construir la capa pysftp :

  • https://github.com/lambci/docker-lambda

Entonces, lo que hice para pysftp fue:

 # create pysftp fresh python 3.8 environment python -m venv pysftp # activate it source pysftp/bin/activate cd pysftp # install pysftp in the environemnt pip3 install pysftp # generate requirements.txt pip freeze > requirements.txt # use docker to construct the layer docker run --rm -v `pwd`:/var/task:z lambci/lambda:build-python3.8 python3.8 -m pip --isolated install -t ./mylayer -r requirements.txt zip -r pysftp-layer.zip .

Y el resto es cargar el zip en s3, crear una nueva capa en la consola de AWS, configurar el tiempo de Compatible runtime en python 3.8 y usarlo en mi función lambda de prueba.

También puede consultar aquí cómo usar esta herramienta de ventana acoplable (el comando de ventana acoplable que utilicé se basa en lo que hay en ese enlace).

Espero que esto ayude

about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda