解压后的大小必须小于 262144000 字节 - AWS Lambda 错误

Dan*_*ilo 5 amazon-web-services aws-lambda serverless aws-serverless

我曾尝试使用 servless/lambda 函数 AWS 上传我的应用程序,但我遇到了这个问题:

发生错误:AppLambdaFunction - 解压后的大小必须小于 262144000 字节(服务:AWSLambdaInternal;状态代码:400;错误代码:InvalidParameterValueException;请求 ID:8ea0d887-5743-4db1-96cd-6c5efa57b081)。

解决它的最佳方法是什么?

看看我的依赖:

  "dependencies": {
    "ethereumjs-tx": "^1.3.7",
    "aws-sdk": "^2.4.52",
    "body-parser": "^1.18.3",
    "compression": "^1.7.4",
    "consign": "^0.1.6",
    "cors": "^2.8.5",
    "express": "^4.16.4",
    "helmet": "^3.16.0",
    "moment": "^2.24.0",
    "openzeppelin-solidity": "^2.3.0",
    "serverless": "^1.48.2",
    "serverless-http": "^1.9.1",
    "serverless-offline": "^4.9.4",
    "truffle": "^5.1.9",
    "truffle-hdwallet-provider": "^1.0.17",
    "web3": "^1.2.5-rc.0"
  },
Run Code Online (Sandbox Code Playgroud)

无服务器.yml:

provider:
  name: aws
  runtime: nodejs8.10
  stage: v1
  region: us-east-1
  timeout: 30
  memorySize: 512
  package:
    excludeDevDependencies: true
    exclude:
      - .git/**
      - .vscode/**        
      - venv/**

functions:
  app:  
    handler: handler.run
    events:
      - http:
          path: /
          method: ANY
          cors: true
      - http:
          path: /{proxy+}
          method: ANY
          cors: true

plugins:
  - serverless-offline  
Run Code Online (Sandbox Code Playgroud)

Adr*_*ira 8

使用excludeserverless.yml 文件中的指令。在 Python 的情况下,我已经按如下方式使用它:

package:
  exclude:
    - node_modules/**
    - venv/**
Run Code Online (Sandbox Code Playgroud)

构建过程会将它们从构建中排除,然后再发送到 AWS。

提示我在 Github 上遇到了这个问题此处详细介绍了该指令的文档。

  • 那么我的包裹如何加载...? (14认同)
  • `package.exclude` 很快就会被弃用,并且应该根据 [docs](https://www.serverless.com/framework/docs/deprecations/#NEW_PACKAGE_PATTERNS) 使用 *patterns* 来代替 (4认同)

小智 -1

您可以使用 s3 将较大的包间接加载到 AWS Lambda 中:

  • 将您的包加载到 S3 上的存储桶/密钥中
  • 在 Lambda 控制台中,选择函数代码 -> 代码输入类型 -> 从 S3 上传文件

  • 我认为无论你把它放在哪里,你都不能拥有超过 250MB 的包。无论如何,Serverless 可能会先将其上传到 S3。 (4认同)