[PYTHON] Environnement lorsque des bibliothèques natives sont incluses dans AWS Lambda

introduction

Lors de l'utilisation d'une bibliothèque native dans une bibliothèque de dépendances Python, J'ai entendu il y a longtemps que l'environnement à construire (pip) et l'environnement côté AWS Lambda sont alignés.

Mais quel est l'effet réel et en quoi est-il mauvais? Je ne l'ai pas du tout vérifié, alors C'est un mémo que j'ai vérifié la bibliothèque obtenue par pip install alors que j'y étais accro.

Erreur lors de l'exécution de Lambda

contenu de l'erreur

Cela s'est produit lors de l'utilisation d'un module qui calcule la distance appelée «pyproj». (Au début, je ne savais pas ce qui n'allait pas avec cette seule erreur ...)

[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_handler': cannot import name '_datadir' from partially initialized module 'pyproj' (most likely due to a circular import) (/var/task/pyproj/__init__.py)

Environnement au moment de l'erreur

Environnement au moment de la résolution des erreurs

Contenu de la bibliothèque pyproj (extrait partiel)

Je ne comprends pas le mécanisme d'installation détaillé, mais il saisit automatiquement l'environnement et Il semblait télécharger les bibliothèques natives dépendantes.

L'environnement de construction est Docker Image Python 3.7

pyproj
- _crs.cpython-37m-x86_64-linux-gnu.so
- _datadir.cpython-37m-x86_64-linux-gnu.so
- proj.py

L'environnement de construction est Docker Image Python 3.8

pyproj
- _crs.cpython-38m-x86_64-linux-gnu.so
- _datadir.cpython-38m-x86_64-linux-gnu.so
- proj.py

L'environnement de construction est l'installation de Windows Python 3.7 (bonus)

pyproj
- _crs.cp37-win32.pyd
- _datadir.cp37-win32.pyd
- proj.py

à la fin

J'ai un peu plus de compréhension ou un sentiment de conviction. Cependant, comme l'image Docker officielle d'Amazon Linux est distribuée, il se peut que l'environnement de construction soit là.

Recommended Posts

Environnement lorsque des bibliothèques natives sont incluses dans AWS Lambda
Prise en charge de la variable d'environnement AWS Lambda
Essayez de fournir des variables d'environnement AWS Lambda?
Vérifiez types_map lors de l'utilisation de mimetypes avec AWS Lambda (Python)
J'ai essayé d'exécuter TensorFlow dans l'environnement AWS Lambda: Préparation
Tweet d'AWS Lambda
Essayez les destinations AWS Lambda
Points addictifs lors du téléchargement de fichiers à l'aide de boto sur AWS Lambda
Je viens de créer un environnement virtuel avec la couche AWS lambda