#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 в зависимости от разработчиков — это хороший призыв! Спасибо!