【问题标题】:How do I add librosa (python lib) to aws lambda using serverless如何使用无服务器将 librosa (python lib) 添加到 aws lambda
【发布时间】:2021-02-22 03:05:47
【问题描述】:

我正在尝试使用 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).

【问题讨论】:

  • 熊猫没有那么大。我猜 librosa 占用了所有空间?

标签: python amazon-web-services serverless-framework serverless aws-serverless


【解决方案1】:

您已达到 AWS Lambda 部署包的大小限制,请参阅 here。解压后最多可以有 250 MB(这是您的错误消息告诉您的内容)。

查看serverless-python-requirements 插件文档中的处理 Lambda 的大小限制部分。

简而言之,serverless-python-requirements 推荐/支持的是:


通过在 serverless.yml 中添加以下内容来进行压缩

custom:
  pythonRequirements:
    zip: true

然后在使用依赖项之前将其添加到您的处理程序:

try:
  import unzip_requirements
except ImportError:
  pass

但有些用户似乎遇到了librosa 的问题并且似乎无法使其正常工作,请参阅this GitHub issue 或此other SO question

其中的一个建议是拆分您的 Lambda 并将它们链接起来,即一个 Lambda 只有 librosa 作为依赖项(可能会压缩依赖项),然后移交给第二个 Lambda 进行进一步处理,我如果这对您可行,不知道您要做什么。

【讨论】:

  • 谢谢。我测试了几种将 librosa 单独放入 lambda 的方法,唯一有效的方法是从 ECR 中的容器映像运行。我想我会这样做的。
猜你喜欢
  • 2023-02-08
  • 2021-03-20
  • 2020-11-10
  • 1970-01-01
  • 2021-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多