Совместное использование кода в AWS Lambda - PullRequest
0 голосов
/ 06 мая 2018

Каков предпочтительный способ обмена кодом между функциями AWS Lambda?

У меня есть такая структура:

  • функции
    • а
      • node_modules
      • index.js
      • package.json
    • б
      • node_modules
      • index.js
      • package.json
    • с
      • node_modules
      • index.js
      • package.json

Это позволяет каждой функции сохранять свои собственные node_modules, и я могу упаковать все это с помощью CLI.

А как насчет пользовательского кода, которым нужно поделиться?

Я могу require("../mylibrary"), но команда пакета все равно не включит его.

Ответы [ 4 ]

0 голосов
/ 25 июля 2019

Попробуйте безсерверный фреймворк, вы можете использовать артефакты включения / исключения без необходимости написания собственных сценариев.

оформить заказ serverless.com

Я также использую пакеты частных узлов, но их необходимо установить перед развертыванием sls.

0 голосов
/ 05 декабря 2018

Теперь вы можете использовать Layers для совместного использования библиотек и кода между вашими функциями. Вы можете создать слой из zip-файла так же, как это делается для функции.

Пакет слоев будет выглядеть примерно так:

my-layer.zip
└ nodejs/node_modules/mylibrary

Если вы создаете свои функции поверх этого слоя, то в коде на него можно ссылаться так:

const shared = require('mylibrary');

Стоит отметить, что слои поддерживают управление версиями и относятся к функциям как многие ко многим. Что делает их вторым нпм

0 голосов
/ 12 декабря 2018

Как уже упоминалось в dmigo, это возможно со слоями Lambda. Вот пример кода SAM для использования Lambda Layer Code:

Globals:
  Function:
    Runtime: nodejs8.10

MyFunction:
    Type: AWS::Serverless::Function
    Properties:
        CodeUri: a/
        Handler: index.handler
        Layers:
        - !Ref MySharedLayer
MySharedLayer:
    Type: AWS::Serverless::LayerVersion
    Properties:
        LayerName: SharedLayer
        Description: Some code to share with the other lambda functions
        ContentUri: layer/
        CompatibleRuntimes:
            - nodejs8.10
        RetentionPolicy: Retain
0 голосов
/ 09 августа 2018

Проблема с Lambda заключается в том, что вам необходимо развернуть ZIP-файл, поэтому весь ваш код должен быть доступен из одного корневого каталога.

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

Симлинки, вероятно, также возможны.

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