Внедрение библиотек / зависимостей в AWS Lambda с помощью бессерверной платформы

#python #amazon-web-services #aws-lambda #amazon-cloudformation #serverless-framework

#python #amazon-веб-сервисы #aws-lambda #amazon-cloudformation #бессерверная платформа

Вопрос:

действительно быстрый вопрос; нужно ли мне устанавливать из командной строки sls plugin install -n serverless-python-requirements в каждый проект serverless framework, который я создаю, чтобы загружать зависимости python в функцию stack / lambda, которую я собираюсь развернуть?

Я играл с бессерверной платформой, пытаясь использовать ее для проекта, включающего AWS Lambda и python для преобразований csv. Поэтому я хотел бы использовать pandas и numpy в функции Lambda.

У меня установлен Docker, и в файле yaml есть

 custom:
  pythonRequirements:
    dockerizePip: true

plugins:
  - serverless-python-requirements

 

Но мне было интересно, нужно ли мне повторно устанавливать это sls plugin install -n serverless-python-requirements каждый раз, когда я создаю новый проект. Я заметил, что если я это сделаю, он загрузит два пакета документов json — lock.json и package.json в папку проекта. Но я заметил, что в других руководствах не было этих файлов json, несмотря на использование зависимостей, поэтому я не был совсем уверен, повторяется ли это шаг, который я делаю для каждого проекта.

Ответ №1:

Отличный вопрос!

Бессерверная платформа — это проект, написанный на NodeJS.

В частности sls plugin install , в основном просто работает npm install под капотом. Это означает, что sls plugin install просто извлекает плагин из NPM и устанавливает его (путем добавления его в проект package.json и package-lock.json )

Я предполагаю, что вы, вероятно, можете запустить npm i -g serverless-python-requirements установку библиотеки глобально для своей системы, а затем, я подозреваю, вы могли бы просто объявить плагин в plugins блоке serverless.yml файла каждого проекта и готово.

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

1. однако выполнение a npm i -g serverless-python-requirements в каждой папке проекта (индивидуально для каждого проекта) не является необходимым и обычно не выполняется? Если это так, то я не знаю, почему я так подумал, но это привело меня в странную кроличью нору.

2. -g устанавливает пакет глобально , что означает, что вам не нужно будет устанавливать его где-либо еще.

3. Хорошо, интересно. Да, я объявлял плагины в блоке плагинов каждого файла yaml (как показано в исходном сообщении) для каждого проекта, а затем ТАКЖЕ запускал sls plugin install -n serverless-python-requirements каждый проект, но затем задавался вопросом, было ли это чрезмерным.