如何使用serverless将librosa(python库)添加到aws lambda

如何使用serverless将librosa(python库)添加到aws lambda,python,amazon-web-services,serverless-framework,serverless,aws-serverless,Python,Amazon Web Services,Serverless Framework,Serverless,Aws Serverless,我试图使用它来管理一个简单aws lambda函数的依赖项 一个关键依赖项是librosa python库() 我是新来的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-

我试图使用它来管理一个简单aws lambda函数的依赖项

一个关键依赖项是librosa python库()

我是新来的
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部署包的大小限制,请参阅。它最大可以解压250 MB(这是错误消息告诉您的)

看看插件文档中关于Lambda大小限制的部分

简而言之,
无服务器python需求
建议/支持的是:

  • 压缩依赖项
  • 添加一个(例如,
    librosa
    单独)

压缩通过在
serverless.yml

custom:
  pythonRequirements:
    zip: true
然后在使用依赖项之前将其添加到处理程序:

try:
  import unzip_requirements
except ImportError:
  pass

但是一些用户似乎对librosa有问题,并且似乎无法使其正常工作,例如,请参见下面的例子


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

pandas没有那么大。我猜librosa占据了所有的空间?谢谢。我测试了几种将
librosa
单独放入lambda的方法,唯一有效的方法是从ECR中的容器映像运行。我想我会的。