AWS Javascript SDK устанавливает только определенные модули вместо всего SDK - PullRequest
1 голос
/ 16 мая 2019

Я использую функции Lambda (Nodejs runtime) в своем проекте и использую некоторые модули из aws-sdk.

. До сих пор я установил все aws-sdk и мне требуетсякаждый пакет отдельно, как это:

const ApiGatewayManagementApi = require('aws-sdk/clients/apigatewaymanagementapi');

Это работает, но проблема в том, что мне нужно установить весь aws-sdk, который большой, и, следовательно, делает мой пакет функций большим.

Есть ли способ установить только те модули, которые я на самом деле буду использовать?

Я пробовал это:

$ npm install aws-sdk/clients/apigatewaymanagementapi --save

Что дает мне следующие ошибки:

npm ERR! code ENOLOCAL
npm ERR! Could not install from "aws-sdk/clients/apigatewaymanagementapi" as it does not contain a package.json file.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/gustavocsdc/.npm/_logs/2019-05-16T02_32_28_129Z-debug.log

1 Ответ

3 голосов
/ 16 мая 2019

К сожалению, в текущей версии (2.x) AWS JavaScript SDK это невозможно. В разработке есть новый AWS SDK для JavaScript V3 , который решит эту проблему, но все еще находится в «Предварительном просмотре для разработчиков» (16 мая 2019 г.).

Тем временем вам предлагается установить полную aws-sdk для ваших функций JavaScript Lambda. Рекомендации по применению лямбда-приложений гласят:

Контроль зависимостей в пакете развертывания вашей функции. Среда выполнения AWS Lambda содержит ряд библиотек, таких как AWS SDK для сред выполнения Node.js и Python (полный список можно найти здесь: AWS Lambda Runtimes ). Чтобы включить последний набор функций и обновлений безопасности, Lambda будет периодически обновлять эти библиотеки. Эти обновления могут вносить незначительные изменения в поведение вашей лямбда-функции. Чтобы получить полный контроль над зависимостями, которые использует ваша функция, мы рекомендуем объединить все ваши зависимости с пакетом развертывания.

Как видно, не является строгим требованием включать sdk в пакет Lambda (тем самым уменьшая его размер), если вы хотите сделать упомянутые компромиссы. Другая причина, по которой вы можете рассмотреть возможность предоставления aws-sdk как части вашего пакета, заключается в том, что в более позднем выпуске sdk может появиться новая функция, которую вы хотели бы использовать и которая отсутствует в sdk, предоставляемом средой выполнения. ,

Для полноты выполнения nodejs10.x предоставляет версию 2.437.0 aws-sdk, а nodejs8.10 предоставляет версию 2.290.0 aws-sdk в соответствии с AWS Lambda Runtimes .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...