小编tjc*_*jc4的帖子

使用 CFLAGS 和 PIP 缩小 AWS Lambda 部署包以适应 sklearn

我正在使用 Lambda 处理程序加载腌制的机器学习模型,因此我需要 sklearn(如果未包含,我会收到“ModuleNotFoundError:没有名为 'sklearn' 的模块”)

因此,我使用 sklearn 在 Docker 中创建了一个新的部署包。

但是当我尝试上传新的 lambda.zip 文件时,我无法保存 lambda 函数。我收到错误:解压后的大小必须小于 262144000 字节

我做了一些谷歌搜索,发现了两个建议:(1)将 CLFAG 与 PIP 结合使用,(2)使用 Lambda Layers

我不认为图层会起作用。将我的部署包的部分内容移动到层不会减少总大小(并且AWS 文档指出“函数和所有层的解压缩总大小不能超过解压部署包大小限制 250 MB”。

CFLAGS 听起来很有希望,但我以前从未使用过 CFLAGS,并且遇到了错误。

我正在尝试添加标志:-Os -g0 -Wl,--strip-all

在 CLFAGS 之前,我的 docker pip 命令是:pip3 install requests pandas s3fs datetime bs4 sklearn -t ./

首先我尝试:pip3 install requests pandas s3fs datetime bs4 sklearn -t -Os -g0 -Wl,--strip-all ./

这产生了各种错误“没有这样的选项:-g”

然后我尝试了CFLAGS = -Os -g0 -Wl,--strip-all pip3 …

python pip amazon-web-services scikit-learn aws-lambda

7
推荐指数
1
解决办法
3568
查看次数

如何将代码转换为 AWS Lambda 函数?

我编写了一些 Python 代码,用于从两个 API 请求数据、打开 .CSV 文件、将 API 数据作为新行添加到 .CSV 中,并保存更新的 .CSV 文件。

在我的本地机器上运行良好。

现在我想将此代码转换为 AWS Lambda 函数(由 CloudWatch 每小时触发 1 次,并将 .CSV 存储在 S3 中),但不确定如何操作。

我想我已经弄清楚了部署包部分。我有一个带有依赖项的 .zip。现在我想我只需要添加一个带有我的函数的 .py 文件。

触发器很简单。

但不确定如何将我的代码变成函数。

有人可以告诉我如何将代码转换为 Lambda 函数吗?

import requests
import json
import csv
import pandas as pd
import time

# OpenWeatherMap parameters
OWM_parameters = {"lat": 30.4013804, "lon": -97.6863783, "units": 'imperial', "APPID": 'redacted'}

# OpenWeatherMap API call 
OWM_response = requests.get("http://api.openweathermap.org/data/2.5/weather",params=OWM_parameters)
OMW_json_data = OWM_response.content 
OMW_json_parsed = json.loads(OMW_json_data) 

# OWM does not provide rain data …
Run Code Online (Sandbox Code Playgroud)

python amazon-s3 amazon-web-services aws-lambda

3
推荐指数
1
解决办法
3420
查看次数