2017-07-11 7 views
0

AWS Lambdaのsasl pypiパッケージを使用できるようにするサーバーレスサービスがあります。残念ながら、AWS Lambda環境にはlibstdC++の最新バージョンがないようです。つまり、ビルドサーバがpip installのd saslパッケージを解凍してラムダを呼び出すと、予期されるエラーがあります:AWS Lambdaで使用するためのpythonパッケージのC(++)依存関係の指定

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

私の質問は:これを回避するには? 更新されたlibstdC++。so.6に対してAmazon Linuxインスタンスでこれらをビルドする方法はありますか?それで、libsにバンドルすることができますか? LD_LIBRARY_PATH env変数を.に設定し、libstdC++。so.6の最新バージョンを含めますか?この周りのベストプラクティスはありますか?

+0

「C(++)」とは何ですか? –

+0

@LightnessRacesinOrbit cまたはC++ –

+0

CはlibstdC++。so.6を使用しません。一度に1つの言語に集中してください。 CとC++は異なります。セパレート。 –

答えて

-1

Here's your problem

AWSラムダは、あなたがAWSラムダ(つまり、Node.jsの、ジャワ、C#とによってサポートされる言語でアプリケーションのコードを書くことができて、多くのアプリケーションシナリオのための理想的なコンピューティングプラットフォームですPython)

あなたはすべきではないことをやっています。

あなたは(私はどこかに私の実行に伴い、それらをplonking、彼らがで好まれていることを確認すること、私のビルドマシンからのlibstdC++libgcc_sを再配布すると、過去の成功を持っていたそれをハックすることができるかもしれませんランタイムは-Wl,-rpath,'$ORIGIN'を使用しています)が、基本的にはあなたのものになります。

C++は実際にビルドされたプラットフォーム以外のプラットフォームにデプロイするように設計されていないため、AmazonがAWSラムダ環境を提供しない限り、そのようなハッキングに悩まされます。

+0

私のコードはすべてPython2.7です。いくつかの言語のライブラリの中には、CとC++のコード/ライブラリがありますが、Pythonも例外ではありません。明らかに必要な場合、私はそれをEC2インスタンスに置いてポーリングなどを設定して呼び出しを行うことができますが、残りのサービスがすべてラムダである場合はPITAのように見えます。 –

+1

'pip install -b python_pkg_w_c_deps'を実行すると、プリコンパイルされたバイナリをダウンロードできます。 –

+0

'Amazonが" AWS Lambda "環境を提供している場合を除き、<これはamazon linux afaikです。後であなたのために。 –

関連する問題