mnm*_*mnm 6 amazon-s3 python-3.x aws-lambda aws-lambda-layers
START RequestId:3d5691d9-ad79-4eed-a26c-5bc3f1a23a99版本:$ LATEST无法导入模块“ lambda_function”:没有名为“ pandas”的模块
END RequestId:3d5691d9-ad79-4eed-a26c-5bc3f1a23a99
我正在使用Windows 7 64位作为主机OS。
我只想在AWS-Lambda环境中使用熊猫。就像在Windows环境中使用它一样,我正在寻找Lambda的简单解决方案。
myvenv在virtual-box上的Xubuntu中创建一个虚拟环境。myvenv。myvenv,在位置'/usr/local/lib/python3.6/site-packages/'我的主机操作系统。packs,粘贴了的内容myvenv。lambda_function.py脚本packspacks使用7zip的软件并上传它zip在Lambdalambda_handler()。该代码段如下所示:将熊猫作为pd导入
Run Code Online (Sandbox Code Playgroud)def lambda_handler(event, context): dates = pd.date_range('2019001', periods=6) df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD')) print(df)
lambda_function.lambda_handler。我已授予lambda-role AWSLambdaFullAccess许可。测试事件看起来像
{“ key1”:“如果一切正常,将打印此内容”}
我尝试了以下解决方案:
Handler info到python_filename.function_name。对于我来说,这是lambda_function.lambda_handler - 没有名为“熊猫”的错误模块失效。python\lib\python3.6\site_packages\lambda_function.py失败的位置,没有名为'pandas'error的模块。注意:我不想使用Docker,因为我不知道如何使用它,而且由于现在我很生气,所以我不愿意学习它。我来自Windows环境(很糟糕,我现在知道。)
关于如何使它起作用的任何想法。
jmp*_*jmp 15
我能够使用 Lambda 层和Amazon linuxCloud 9 实例成功导入 pandas 库。有我在 Cloud 9 实例中执行的命令和 Lambda 函数的输出。我不得不稍微更改代码,因为它因导入错误和字符串值错误而失败。
或者,这些命令也可以在 EC2 实例中执行。如果无法在 Windows上使用SAM CLI(使用 docker)或仅使用普通 docker,我们将需要使用一个Amazon Linux实例来构建所有内容,因为这是AWS Lambda 当前使用的。我不相信在这里使用 ubuntu 实例会起作用。
命令:
python --version
Python 3.6.8
# https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
# python 3.6 uses Amazon Linux currently
mkdir project
cd project
virtualenv v-env
source ./v-env/bin/activate
pip install pandas
deactivate
# creating layer
# https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-path
mkdir python
cd python
cp -r ../v-env/lib64/python3.6/dist-packages/* .
cd ..
zip -r panda_layer.zip python
aws lambda publish-layer-version --layer-name pandas --zip-file fileb://panda_layer.zip --compatible-runtimes python3.6
Run Code Online (Sandbox Code Playgroud)
在发布更高版本版本命令将创建一个新的AWS LAMBDA层在命令或者给定的区域配置文件的CLI。
Lambda 层会将库应用于 Lambda 函数的代码,而无需将其直接应用于部署包。这也允许在 Lambda 中使用在线代码编辑器,因为部署包在3MB的限制下
我通过单击 Web 控制台中的图层按钮并选择我最近发布的图层版本来应用 Lambda 图层。我在那里有第二个版本,因为我第一次尝试将lib目录的内容放在不适用于 64 位操作系统的目录中,并且我的代码在 AWS Lambda 中失败。
或者,您也可以使用 CLI 命令update-function-configuration应用层
我使用的 Lambda 函数代码:
python --version
Python 3.6.8
# https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
# python 3.6 uses Amazon Linux currently
mkdir project
cd project
virtualenv v-env
source ./v-env/bin/activate
pip install pandas
deactivate
# creating layer
# https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration-layers-path
mkdir python
cd python
cp -r ../v-env/lib64/python3.6/dist-packages/* .
cd ..
zip -r panda_layer.zip python
aws lambda publish-layer-version --layer-name pandas --zip-file fileb://panda_layer.zip --compatible-runtimes python3.6
Run Code Online (Sandbox Code Playgroud)
拉姆达输出:
START RequestId: 27f09b6c-a4cd-49dd-bb3e-ae6fc7cd5850 Version: $LATEST
A B C D
2018-01-01 -1.040318 0.450841 -0.381687 -0.105480
2018-01-02 -1.381793 -0.481572 0.828419 -0.885205
2018-01-03 1.437799 -0.649816 -0.577112 0.400670
2018-01-04 -0.730997 -0.778775 -1.514203 1.165661
2018-01-05 1.963595 -1.137054 0.920218 0.960210
2018-01-06 -0.429179 -0.745549 1.482562 0.298623
2018-01-07 -1.082388 -0.529476 -1.051663 1.616683
2018-01-08 0.042779 -2.338471 -0.142992 0.680399
END RequestId: 27f09b6c-a4cd-49dd-bb3e-ae6fc7cd5850
REPORT RequestId: 27f09b6c-a4cd-49dd-bb3e-ae6fc7cd5850 Duration: 536.76 ms Billed Duration: 600 ms Memory Size: 128 MB Max Memory Used: 122 MB Init Duration: 1721.51 ms
XRAY TraceId: 1-5d741e40-1311daa29fc16c74735988fc SegmentId: 61a595dd3492c331 Sampled: false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1210 次 |
| 最近记录: |