70106


AWS Cloud9(Amazon Linux)を使用し、Etherreum smartcontractへ接続するLambda+API
Gatewayの開発をしています  
言語はpython3.6  
パッケージのインストールは以下の通りです

[code]

    $ 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
    
[/code]

エラーになるコードです

[code]

    # -*- coding: utf-8 -*-
    from web3 import Web3
    
    def lambda_handler(event, context):
    
        return ''
    
[/code]

8月末(最後に取得した日付ははっきりせず...)までは、上記の内容で開発が出来ていたのですが、本日新たに作成したものは、以下のエラーが出るようになりました  
CloudWatchから取得したエラーは以下の通りです

[code]

    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)
    
[/code]

web3の使用を止めるとエラーは出ないので、web3のパケージで問題が起きているようです

現在 glibcのバージョンは以下の通りです

[code]

    $ 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
    
[/code]

パッケージのバージョンは固定にしていたのに、なぜエラーになるかわかりません  
バージョン指定を解除しても同じエラーになります  
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が力不足で確認できていませんが、他にありませんでしょうか

* * *

対応内容記載しましたが、記載場所が適切ではない指摘をいただきましたので改めます


CC BY-SA 4.0
2020-09-03T09:05:06.987
70105
2021-07-20T02:09:55.740
2021-07-20T02:09:55.740
3060
27721
question
aws-lambda amazon-linux ethereum aws-cloud9
Cloud9 web3.py インストール後実行時にglibcのエラーが出るようになった


以下のエラーは、ツール等が要求したライブラリバージョンに対して OS にインストールされた glibc のバージョンが合わない (=主にOS側が古い)
場合に表示されます。

[code]

    /lib64/libc.so.6: version `GLIBC_2.18' not found
    
[/code]

※ほぼ同じ内容ですが、同じく glibc のエラーに関して私が
[過去に回答したもの](https://ja.stackoverflow.com/a/65338)

yum で参照しているパッケージバージョン (2.17-292.180. **amzn1** ) から察するに、今現在は Amazon Linux
**1** を使っているんじゃないかと思われます。

しかし Amazon Linux 1 では glibc 2.17 までのサポートのようなので、glibc 2.18 以降が必要な場合には、Amazon
Linux **2** の環境を用意する必要がありそうです。

**参考:** (別ツールに関する回答ですが、glibc のエラーに対する説明は参考になると思います)

<https://unix.stackexchange.com/a/595730>

> This is because you are using Amazon Linux 1 -- i.e. Amazon Linux (2013.03+)
> which supports up to GLIBC_2.17.


CC BY-SA 4.0
2020-09-03T11:22:49.640
70106
2020-09-03T11:22:49.640
3060
70105
answer


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のまま開発を続けることとしました  
これにより最初に記載したテストコードが通るようになりました

ありがとうございました


CC BY-SA 4.0
2020-09-16T09:59:18.603
70448
2020-09-16T09:59:18.603
27721
70105
answer