Размер пакета развертывания AWS Lambda GitLab CI / CD намного больше, чем при развертывании из моей локальной среды

#node.js #deployment #aws-lambda #gitlab #serverless-framework

#node.js #развертывание #aws-lambda #gitlab #бессерверная платформа

Вопрос:

Я настроил GitLab CI / CD для развертывания Node.js Лямбда для AWS. Однако размер заархивированного пакета составляет 42,01 МБ при развертывании GitLab. Но с моего локального КОМПЬЮТЕРА размер пакета составляет всего 10,72 МБ. Для развертывания используется та же команда.

.gitlab-ci.yml Имеет следующую настройку

 image: node:latest

stages:
  - test
  - deploy_dev

test:
  stage: test
  script:
    - npm install
    - npm test

dev:
    stage: deploy_dev
    before_script:
        - FAILURE_MESSAGE="Must define $AWS_ACCESS_KEY_ID and $AWS_SECRET_ACCESS_KEY. Add keys to $CI_PROJECT_URL/-/settings/ci_cd"
        - test -z "$AWS_SECRET_ACCESS_KEY" amp;amp; echo $FAILURE_MESSAGE amp;amp; exit 1
        - test -z "$AWS_ACCESS_KEY_ID" amp;amp; echo $FAILURE_MESSAGE amp;amp; exit 1
        - npm config set prefix /usr/local
        - npm install -g serverless
    script:
        - npm install
        - npm run deploy -- --stage dev --verbose
    environment: dev
    only: 
        - master
  

И package.json это выглядит следующим образом

 {
  "name": "test app",
  "version": "1.0.0",
  "description": "",
  "main": "handler.js",
  "scripts": {
    "test": "jest",
    "deploy": "serverless deploy"
  },
  "repository": {
    "type": "git",
    "url": ""
  },
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": ""
  },
  "homepage": "",
  "dependencies": {
    "aws-sdk": "^2.754.0",
    "cheerio": "^1.0.0-rc.3",
    "logplease": "^1.2.15",
    "node-fetch": "^2.6.1"
  },
  "devDependencies": {
    "jest": "^26.6.1",
    "serverless-offline": "^6.7.0",
    "serverless-offline-direct-lambda": "0.0.1"
  }
}
  

Вывод из GitLab:

 $ npm install
added 725 packages, and audited 725 packages in 19s
found 0 vulnerabilities
$ npm run deploy -- --stage dev --verbose
> test-app@1.0.0 deploy
> serverless deploy "--stage" "dev" "--verbose"
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service test-app.zip file to S3 (42.01 MB)...
  

Локальный вывод

 added 725 packages from 598 contributors and audited 725 packages in 12.388s

45 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities



Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service test-app.zip file to S3 (10.72 MB)...
  

Похоже, что зависимости разработчиков НЕ исключены, хотя в журналах указано Excluding development dependencies... .

У кого-нибудь есть идеи о том, почему размер пакета отличается?

Заранее спасибо!

Ответ №1:

  • Прежде всего, пожалуйста, переместите aws-sdk зависимости в dev. Он уже установлен в контейнере AWS lambda.

  • Во-вторых, вы также можете использовать бессерверный плагин — serverless-webpack для большего уменьшения размера lambda.

Кроме того, я не могу заметить ничего существенного, что может привести к изменению размера сборки: (

Комментарии:

1. Да, перенос aws-sdk в зависимости от разработчиков — это хороший призыв! Спасибо!