Распакованный размер должен быть меньше 262144000 байт - AWS Лямбда-ошибка - PullRequest
1 голос
/ 27 января 2020

Я попытался загрузить свое приложение, используя функцию servless / lambda AWS, но у меня возникла эта проблема:

Произошла ошибка: AppLambdaFunction - размер разархивированного файла должен быть меньше 262144000 байт (служба : AWSLambdaInternal; Код состояния: 400; Код ошибки: InvalidParameterValueException; Идентификатор запроса: 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"
  },

Serverless.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  

Ответы [ 2 ]

1 голос
/ 28 января 2020

Вы можете использовать модули пакетов для упаковки кода.

Использование пакетов модулей, таких как webpack

Вы можете использовать плагины типа serverless-webpack. Плагин serverless-webpack использует webpack для сборки проекта, и он будет включать только минимальные файлы, необходимые для запуска вашего приложения. Он не будет включать в себя весь каталог node_modules. так что ваш пакет развертывания будет меньше.

примечание об использовании слоев Lambda

Как и другие упомянутые выше, вы можете использовать слои и перенести некоторые библиотеки и код на слой. Слои в основном используются для обмена кодом между функциями. Разархивированный развернутый пакет, включая слои, не может превышать 250 МБ.

надеюсь, это поможет.

Ссылки:

https://github.com/serverless-heaven/serverless-webpack

https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html#configuration -слойная дорожка

0 голосов
/ 27 января 2020

Вы можете загружать большие пакеты в AWS Lambda косвенно, используя s3:

  • Загрузите ваш пакет в корзину / ключ на S3
  • В консоли Lambda выберите Функциональный код - > Тип ввода кода -> Загрузить файл с S3
...