やりたいこと
AWS Lambda にて、pythonのスクレイピングをしたい。
詰まったこと
ソースコード内で使用しているrequestsについて、no moduleエラーが発生する。
Response
{
"errorMessage": "Unable to import module 'lambda_function': No module named 'requests'",
"errorType": "Runtime.ImportModuleError",
"stackTrace": []
}
対処方法
LambdaのLayerを使用し、使用するモジュールをzipファイルにまとめて読み込んでもらう設定をする。
ec2内の作業
ec2内でpip installを行い、使用したいモジュールをまとめたフォルダを作成する。
今回は「requests」が対象。「python」フォルダにまとめる。
$ mkdir python
$ cd python
$ sudo yum -y install gcc gcc-c++ kernel-devel python-devel libxslt-devel libffi-devel openssl-devel
$ sudo yum -y install python-pip
$ pip install -t ./ requests
ec2で作成したフォルダをzipでまとめて、S3バケットに配置。
LayerにオブジェクトURLを指定して、そのLayerを追加。
結果
無事動いた。