Funzione Lambda Layer per Snowflake
Ho seguito il metodo standard per creare un Lambda Layer in Snowflake.
[in un'istanza AWS EC2] rm -rf snowflake mkdir -p snowflake/python/lib/python3.7/site-packages pip3 install --no-cache-dir --ignore-installed --upgrade snowflake-connector-python - t fiocco di neve/python/lib/python3.7/site-packages cd fiocco di neve; rm -f fiocco di neve.zip; zip -r fiocco di neve.zip .
Posso creare il livello Lambda e quindi aggiungerlo alla mia funzione Lambda. Oltre a convalidare che la libreria è collegata, ma quando chiamo la funzione Lambda, non riesce
importa snowflake.connector
[ERRORE] Runtime.ImportModuleError: impossibile importare il modulo 'lambda_function': nessun modulo denominato 'fiocco di neve'
Ci sono librerie Lambda a fiocco di neve o guide dettagliate su cosa potrebbe andare storto qui. Costruisco sempre strati lambda in questo modo e di solito il processo sopra funziona.
Risposte
Il problema si è rivelato essere un requisito su 3.7. Ho aggiunto quanto segue alla creazione della mia libreria e ha funzionato bene:
Ho modificato la versione predefinita di Python nella mia funzione Lambda in 3.7 in modo che corrisponda all'istanza di Python che ho utilizzato per compilare la libreria, quindi ho aggiunto quanto segue nel mio codice:
ssh -i ${PEM_FILE} ${EC2_HOST} "cp -r snowflake/python/lib/python3.7/site-packages/* dblayer/python/lib/python3.7/site-packages"