Использовать aws-sdk по умолчанию, который импортируется lambda в codestar? - PullRequest
0 голосов
/ 26 сентября 2018

Я развертываю свое приложение реакции с использованием AWS codestar.Где я выбрал серверную лямбду с node.js.Здесь я использую пряжу, чтобы построить свой проект.Вот как выглядит мой buildspec.yml

version: 0.2

phases:
  install:
    commands:
      # Install dependencies needed for running tests
      - npm install -g yarn

      # Upgrade AWS CLI to the latest version
      - pip install --upgrade awscli
  pre_build:
    commands:
      # Discover and run unit tests in the 'tests' directory
      - yarn install
  build:
    commands:
      # Use AWS SAM to package the application by using AWS CloudFormation
      - yarn build
      - aws s3 cp --recursive ./build s3://$WEBSITE_S3_BUCKET/build/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
      - sed -i -e "s|/assets/|$WEBSITE_S3_PREFIX/build/assets/|g" build/index.html
      - aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.yml

artifacts:
  type: zip
  files:
    - template-export.yml

Вот мой package.json

{
  "name": "react-plotly-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "aws-sdk": "^2.315.0",
    "plotly.js": "^1.41.1",
    "react": "^16.5.2",
    "react-dom": "^16.5.2",
    "react-pivottable": "^0.6.0",
    "react-plotly.js": "^2.2.0",
    "react-scripts": "1.1.5"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }
}

Когда Codebuild заархивирует мой проект, его размер составит около 74 МБ.Но когда лямбда пытается распаковать ее, она прибывает на 266 МБ, что превышает допустимый размер лямбды (т.е. 262 МБ).

Мой TAKEAWAY для описанного выше сценария

Обычно aws-sdk по умолчанию импортируется lambda, поэтому я удалил его из своих зависимостей.Затем попробуйте с помощью codebuild, но обнаружите ошибку, подобную этой Module not found: Error: Can't resolve 'aws-sdk' in '/codebuild/output/src909458172/src/src', я думаю, что это вызвано, потому что я сохранил import AWS from 'aws-sdk'; в своем файле App.js.

Есть ли способ, которым я могу избежать этого?По сути, я хочу использовать aws-sdk из aws lambda, я не хочу использовать его в моих зависимостях, потому что он стоит мне (28 МБ) размера.При его удалении будет развернут мой шаблон codestar cloudformation.

Есть ли какие-нибудь обходные пути для этого?

Статический веб-хостинг с S3 против Lambda без сервера

Когда я развернул такое же приложение с использованием статического хостинга веб-сайтов с S3, оно просто занялосборка и чтение index.html, я не видел в нем node_modules.Но в serverless он принимает node_modules, а также разархивирует и читает index.html в lambda.Не знаете почему?

Любая помощь высоко ценится

Спасибо

...