質問: AWS Cloud9(Amazon Linux)を使用し、Etherreum smartcontractへ接続するLambda+API Gatewayの開発をしています 言語はpython3.6 パッケージのインストールは以下の通りです ``` $ pip install web3==5.11.1 setuptools==49.6.0 -t . $ ../venv/bin/pip install --use-feature=2020-resolver web3==5.11.1 setuptools==49.6.0 ``` エラーになるコードです ``` # -*- coding: utf-8 -*- from web3 import Web3 def lambda_handler(event, context): return '' ``` 8月末(最後に取得した日付ははっきりせず...)までは、上記の内容で開発が出来ていたのですが、本日新たに作成したものは、以下のエラーが出るようになりました CloudWatchから取得したエラーは以下の通りです ``` Unable to import module 'hogehoge/lambda_function': /lib64/libc.so.6: version `GLIBC_2.18' not found (required by /var/task/rusty_rlp.cpython-36m-x86_64-linux-gnu.so) ``` web3の使用を止めるとエラーは出ないので、web3のパケージで問題が起きているようです 現在 glibcのバージョンは以下の通りです ``` $ yum list installed | grep glibc glibc.x86_64 2.17-292.180.amzn1 @amzn-updates glibc-common.x86_64 2.17-292.180.amzn1 @amzn-updates glibc-devel.x86_64 2.17-292.180.amzn1 @amzn-updates glibc-headers.x86_64 2.17-292.180.amzn1 @amzn-updates ``` パッケージのバージョンは固定にしていたのに、なぜエラーになるかわかりません バージョン指定を解除しても同じエラーになります glibcを上げれば済むのかわかりませんが、対処方法を教えていただけないでしょうか 他に提示すべき情報もあればご指摘ください --- 指摘いただき試したことは以下の通りです * コードをEC2サーバ上で実行 lambdaから離れ、EC2(ubuntu18.04)で動作するコードか確認しました 想定どおりの動作です * パッケージをlayer化し、lambdaで実行 使用するパッケージ(web3.py)をlayer化しlambdaで実行しました 同じglibcのエラーが出ました * Cloud9(ubuntu18.04)を作成し、実行 同じglibcのエラーが出ました * Cloud9(AmazonLinux2)を作成し、実行 環境を作ることが出来ず確認出来ませんでした cloud9からec2(AmazonLinux2)にsshするところまでは出来たのですが、それ以降やることがわからずLambdaFunctionの作成すまでいたりませんでした * 他のAWSアカウントで作成した類似環境での実行 同じAmazonLinux1で開発していた環境を利用 同じglibcのエラーが出ました AmazonLinux2が力不足で確認できていませんが、他にありませんでしょうか --- 対応内容記載しましたが、記載場所が適切ではない指摘をいただきましたので改めます
回答: AWSサポートに問い合わせし回答受領及び対応出来ました 根本原因は`rusty_rlp`のバージョンでした 8/28に0.1.14 -> 0.1.15に上がり、そこでglibc 2.18を必要とすることになったようです AWSからの回答も、cubickさんからあったように、AmazonLinux2を使うようにということでした ただその場合、python3.8を使用する必要があるのですが、私の力不足でEC2(AmazonLinux2)+Cloud9(ssh)の環境が構築出来ず方法を変えました web3をpipする際に、`web==3.5.11.1 rusty_rlp==0.1.14`とし、AmazonLinux1のまま開発を続けることとしました これにより最初に記載したテストコードが通るようになりました ありがとうございました