Función de capa lambda para copo de nieve
He seguido el método estándar para crear una capa Lambda en Snowflake.
[en una instancia de 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 copo de nieve/python/lib/python3.7/site-packages cd copo de nieve; rm -f copo de nieve.zip; zip -r copo de nieve.zip .
Puedo crear la capa Lambda y luego agregarla a mi función Lambda. Además de validar que la biblioteca está adjunta, pero cuando llamo a la función Lambda, está fallando
importar copo de nieve.conector
[ERROR] Runtime.ImportModuleError: no se puede importar el módulo 'lambda_function': ningún módulo se llama 'snowflake'
¿Hay bibliotecas Lambda de copos de nieve o guías detalladas sobre lo que puede estar fallando aquí? Construyo capas lambda todo el tiempo de esta manera y, por lo general, el proceso anterior funciona.
Respuestas
El problema resultó ser un requisito en 3.7. Agregué lo siguiente a la creación de mi biblioteca y funcionó bien:
Cambié la versión predeterminada de python en mi función Lambda a 3.7 para que coincida con la instancia de python que usé para compilar la biblioteca, luego agregué lo siguiente en mi código:
ssh -i ${PEM_FILE} ${EC2_HOST} "cp -r snowflake/python/lib/python3.7/site-packages/* dblayer/python/lib/python3.7/site-packages"