@AndrewRusinas

Как обрабатывать все запросы, направленные в API Gateway через одну Lambda функцию?

Я создал лямбда-функцию, которая имеет такой код:
'use strict'

const { createServer, proxy } = require('aws-serverless-express')
const express = require('express')


const app = express()

app.use(express.urlencoded({ extended: true }))
app.use(express.json())


app.get('/', (req, res) => {
  res.send('ALOHA HONUA!')
})

app.get('/products', async (req, res) => {
  res.send('Товары')
})


app.get('/categories', async (req, res) => {
  res.send('Категории')
})

module.exports.handler = (event, ctx) => {
  proxy(server, event, ctx)
}


API Gateway настроил таким образом:
61c707f61a943795674377.png

Т.е. все запросы по данному API ведут в одну функцию. В логах вижу, что функция вызывается, однако, вне зависимости от эндпоинта, отрабатывает только обработчик для get('/'). Если его удалить, то получаю ошибку Cannot GET /.

Полагаю, что проблема в конфигурации самого express, но не понимаю, как это поправить.
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AndrewRusinas Автор вопроса
В общем, пакет aws-serverless-express уже не очень-то и актуален оказался. Возможно, его можно было сконфигурировать, чтобы всё работало, однако их страница npm теперь ведёт на несколько иной репозиторий в гитхабе.

Достаточно проследовать одному из их примеров, например этому, и всё заработает, как часы.

Весьма удобно для различного рода безделушек, если лень морочиться с докерами/нжинксами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы