Amplify: как потребовать / импортировать пользовательскую функцию из слоя лямбда? - PullRequest
0 голосов
/ 10 июля 2020

У меня есть проект Amplify, в котором я хотел бы использовать лямбда-слои. Слой и лямбда были настроены с помощью Amplify CLI.

Слой лямбда в названии «общий». Это файл ./amplify/backend/function/common/opt/param.js. Он экспортирует одну функцию:

const getValue = async (name) => {
...
}
module.exports = getValue;

В моей лямбда-функции я хотел бы использовать указанную выше вспомогательную функцию. Однако я не знаю, как это импортировать. Я пробовал:

const getValue = require('param');
const getValue = require('./param');
const getValue = require('/opt/param');
const getValue = require('./opt/param');

, но все они терпят неудачу с ошибкой, например:

"errorType": "Runtime.ImportModuleError",
    "errorMessage": "Error: Cannot find module '/opt/param'

Обратите внимание, что я обновил лямбду после нажатия слоя и его подключения к последней версии слоя . Таким образом, код должен быть доступен для лямбды.

Ответы [ 3 ]

1 голос
/ 27 июля 2020

(Добавление ответа, чтобы эта важная информация не была скрыта в разделе комментариев).

Это была ошибка в Amplify CLI. Это было исправлено в версии 4.25.0.

Правильный способ импорта кода слоя (расположенный в каталоге opt/) теперь снова логичен:

require('/opt/<module-name>')

1 голос
/ 11 июля 2020

Я просто искал лучшее объяснение / решение (или, если это может быть ошибка?), Но если вы поместите модули в каталог opt / по умолчанию, созданный с помощью ampify, он появится здесь: const getValue = require('/opt/opt/param');

0 голосов
/ 12 июля 2020

Вы можете поместить это в свой package.json:

{
    ...
    "dependencies": {
        ...
        "layer": "file:../../opt/"
    }
}

И затем вы установите пакеты.

const { ... } = require('layer/...');
...