Функция фиксации AWS Amplify
Я с досадой пытался имитировать функции с помощью AWS ampify.
По какой-то причине они всегда тайм-аут, независимо от того, что я установил для --timeout.
Я недавно наткнулся на решение, подумал, что отправлю его в качестве ответа.
2 ответа
В основном я меняю обработчик с
exports.handler = async (event) => {
к const mainFunct = async () => {
и вызовите функцию, используя
mainFunct();
в конце файла index.js
вы можете установить
aws-sdk
используя свой терминал и полностью погрузившись в функцию
....\src
каталог. затем бег
\src> npm install missing-modules
для тех модулей, которые отсутствуют.
-Просто не забудьте обновить свой
.gitignore
чтобы не фиксировать папку node-modules в папке src функции. (Так много файлов...)
Затем просто запустите функцию, как если бы это файл node.js. C:\path\to\function\src> node index.js
вы также можете добавить выходной файл, который, как я считаю, значительно упрощает чтение и отладку операторов console.log()C:\path\to\function\src> node index.js > functionOutputFile.json
Пока работает у меня, я ничего не нашел в Интернете об этом...
На веб-сайте Amplify есть много информации о локальном запуске лямбда-функций . Вы можете вызвать функцию напрямую с помощью
amplify mock myfunction
, или используйте
amplify mock
с API GraphQL. https://docs.amplify.aws/cli/usage/mock
NB: REST API в настоящее время нельзя имитировать локально.
я использовал
amplify function add
чтобы создать функцию, я изменил схему своего GraphQL API на прокси-сервер лямбда локально, используя
@function
директива. https://docs.amplify.aws/cli/graphql-transformer/function
Возможно, вам потребуется настроить вашу функцию с помощью переменных среды. Команда Amplify недавно добавила поддержку через файлы .env,https://docs.amplify.aws/cli/usage/mock#function-mock-environment-variables.