2017-07-11 1 views
0

J'ai un service sans serveur que je souhaite utiliser dans AWS Lambda avec le package p123i sasl. Malheureusement, l'environnement AWS Lambda ne semble pas avoir les dernières versions de libstdC++, ce qui signifie que lorsque notre serveur de build zippe le paquet sasl pip install 'd et que nous appelons le lambda, il y a les erreurs attendues:Spécification des dépendances C (++) pour les packages python à utiliser dans AWS Lambda

Unable to import module 'handler': /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /var/task/sasl/saslwrapper.so) 

Ma question est: Comment se déplacer? Existe-t-il un moyen de les compiler sur une instance Amazon Linux par rapport à la version mise à jour de libstdC++. So.6 afin qu'elle puisse être intégrée aux bibliothèques? Définirait LD_LIBRARY_PATH variable d'environnement à . et en incluant la dernière version de libstdC++. So.6 travail? Y a-t-il des bonnes pratiques partout dans le monde?

+0

Qu'est-ce que c'est «C (++)»? –

+0

@ LightnessRacesinOrbit c ou C++ –

+0

C n'utilise pas libstdC++. So.6. S'il vous plaît se concentrer sur la langue _one_ à la fois. C et C++ sont différents. Séparé. –

Répondre

-1

Here's your problem:

AWS Lambda est une plate-forme de calcul idéal pour de nombreux scénarios d'application, à condition que vous pouvez écrire votre code d'application dans les langues prises en charge par AWS Lambda (qui est, Node.js, Java, C# et Python)

Vous faites quelque chose que vous ne devriez pas faire.

Vous pourriez être en mesure de le pirater (je l'ai eu du succès dans le passé avec redistribuant libstdC++ et libgcc_s de ma machine de construction, les plonking quelque part avec mon exécutable et faire en sorte qu'ils sont préférés à runtime en utilisant -Wl,-rpath,'$ORIGIN') mais vous serez essentiellement seul. C++ n'est pas vraiment conçu pour être déployé sur une plate-forme autre que celle sur laquelle il a été construit, donc à moins qu'Amazon fournisse un environnement "AWS Lambda" pour construire des choses, vous serez bloqué avec de tels hacks.

+0

Eh bien, pour être honnête, tout mon code est Python2.7 - certaines bibliothèques dans un certain nombre de langages sont ou dépendent de C/C++ code/libs, et Python n'est pas une exception ici. Évidemment si besoin est, je peux le mettre sur une instance EC2 et mettre en place un polling etc pour obtenir l'invocation mais il me semble que c'est un PITA quand le reste de mes services sont tous lambda. –

+1

vous pouvez essayer 'pip install -b python_pkg_w_c_deps' qui va télécharger un binaire précompilé si un est disponible ... –

+0

'sauf si Amazon fournit un environnement" AWS Lambda "<- c'est juste amazon linux afaik, au cas où il apparait pour toi plus tard. –