如何解决如何使用无服务器将 librosapython lib添加到 aws lambda
我正在尝试使用 https://www.serverless.com/ 来管理一个简单的 aws lambda 函数的依赖项。
一个关键的依赖项是 librosa python 库 (https://github.com/librosa/librosa)。
我是 serverless
的新手,所以我很感激 serverless.yml
文件的指导。
到目前为止我有
service: my-app-123
app: my-app-123-app
org: my-org
frameworkVersion: '2'
provider:
name: aws
runtime: python3.6
stage: dev
region: eu-west-2
plugins:
- serverless-python-requirements
functions:
hello:
handler: handler.hello
package:
individually: false
exclude:
- '**/*'
include:
- handler.py
和 requirements.txt
是:
librosa==0.8.0
pandas==1.1.5
当我尝试上述操作时出现此错误:
An error occurred: HelloLambdaFunction - Unzipped size must be smaller than 262144000 bytes (Service: AWSLambdaInternal; Status Code: 400; Error Code: InvalidParameterValueException; Request ID: f6bd001e-5592-44c8-8f10-3b56180d7ec7; Proxy: null).
解决方法
您遇到了 AWS Lambda 部署包的大小限制,请参阅 here。解压缩后最多可以有 250 MB(这就是错误消息告诉您的内容)。
查看 serverless-python-requirements 插件文档中的处理 Lambda 的大小限制部分。
简而言之,serverless-python-requirements
推荐/支持的是:
- 压缩依赖
- 添加 Lambda Layer(例如单独的
librosa
)
压缩的工作原理是在您的 serverless.yml
custom:
pythonRequirements:
zip: true
然后在使用依赖项之前将其添加到您的处理程序中:
try:
import unzip_requirements
except ImportError:
pass
但有些用户似乎对 librosa
有问题并且似乎无法使其正常工作,例如参见 this GitHub issue 或此 other SO question。
那里的建议是拆分您的 Lambda 并将它们链接起来,即一个只有 librosa
作为依赖项的 Lambda(可能会压缩依赖项),然后移交给第二个 Lambda 进行进一步处理,如果这对您可行,我不知道您想做什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。