ClaudiaJs с многоцелевым приложением ExpressJS, развертываемым на AWS Lambda и AWS API Gateway - PullRequest
0 голосов
/ 07 мая 2018

У меня есть проект ExpressJS с несколькими маршрутами

var app = new express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use('/car', car);
app.use('/bike', bike);
app.use('/bus', bus);
app.use('/train', train);
app.get('/',function(req,res){
  res.render('layout', { title: 'app example' });
});
module.exports = app

Я развернул с ClaudiaJS на AWS Lambda, и развертывание, похоже, работает.

После этого я настраиваю AWS API Gateway для вызова разных путей к ресурсам в лямбда-функции. Я обнаружил, что он правильно работает для корневого пути «/», но когда я пытаюсь вызвать путь к ресурсу, отличный от API-шлюза, я получаю эту ошибку в API-шлюзе:

"You do not have permission to perform this action"

Дополнительно я получаю это сообщение в лямбда-функции:

"The API with ID XXXXXXXXX does not include a resource with path /car having an integration arn:aws:lambda:myzone:XXXXXXXXXXXXX:function:functioname on the GET method."

Возможно ли это в настоящее время сделать с ClaudiaJS или даже с поддерживаемой конфигурацией (несколько путей ресурсов) в функциях Lambda? Есть опыт?


Обновление 1: это возможно для AWS Lambdas. См. Здесь: Возможно ли связать API-шлюз с маршрутами узлов в AWS lambda? Не уверен, что ClaudiaJS может управлять этим вариантом использования


Обновление 2: ClaudiaJS подтверждает в своей группе поддержки https://gitter.im/claudiajs/claudia, что развертывание многоцелевого приложения ExpressJS на одной AWS Lambda возможно с их продуктом и ссылается на https://livebook.manning.com/#!/book/serverless-apps-with-node-and-claudiajs/chapter-13/v-5/167 Так выглядит ошибка конфигурации / вызова на моей стороне


Обновление 3: удалось успешно вызвать 2 маршрута:

app.get('/test', function (req, res) {
    res.send('Hello World test!');
});
app.get('/', function (req, res) {
    res.send('Hello World!');
});

Получение {"message": "Внутренняя ошибка сервера"} для доступа к MongoDB на третьем маршруте в EC2. Выглядит разрешение вопроса.

1 Ответ

0 голосов
/ 07 мая 2018

Наконец, эта проблема не имеет ничего общего с ClaudiaJS.

Просто нужно было использовать внутренний IP-адрес EC2, а не внешний, как описано здесь Неверное разрешение от Lambda до MongoDB в EC2

...