0

J'ai testé avec succès pandas, numpy et sqlalchemy dans une image docker Amazon Linux en utilisant python 3.6. J'ai pu importer, utiliser et me connecter à une base de données dans l'environnement virtuel en utilisant create_engine depuis le module sqlalchemy de python 3.6.create_engine dans sqlalchemy ne fonctionne pas dans python 3.6 runtime pour aws lambda

J'ai ensuite exporté toutes les dépendances et construit un paquet de déploiement python pour l'exécuter dans AWS Lambda mais pour une raison quelconque, je continue d'obtenir une erreur pour create_engine dans lambda.

Module

'sqlalchemy' n'a pas d'attribut 'create_engine': AttributeError

Voici mon code:

import pandas as pd 
import numpy as np 
import sqlalchemy 
from datetime import datetime, timedelta 

def lambda_handler(event, context): 

    engine = sqlalchemy.create_engine("DB_URI") 

    return "Hello world!" 

Cependant, si je commente simplement la ligne où j'appelle create_engine, Je reçois mon "Bonjour tout le monde!" réponse.

Je ne comprends pas pourquoi create_engine ne fonctionne pas dans cet environnement lorsqu'il fonctionne parfaitement dans l'environnement docker identique. Des idées?

Répondre

0

Je l'ai compris. J'ai eu une erreur de débutant quand je compressais mon dossier et n'ai pas utilisé l'option qui signifiait seulement le plus haut niveau de mes dossiers de module de python où zipper vers le haut. Cela explique pourquoi je n'obtenais pas d'erreur d'importation, mais aucune des méthodes réelles ne fonctionnait.

Donc, je le répète, la solution a été d'ajouter l'option -r à mon zip opération pour ajouter tous les fichiers récursive:

zip -r package.zip *