Может ли API-шлюз прокси-сервер к HTTP-серверу больше, чем JSON? - PullRequest
0 голосов
/ 02 сентября 2018

Я экспериментирую с AWS API Gateway в качестве решения для аутентификации частного HTTP-сервиса, и у меня возникают проблемы с его настройкой.

У меня есть фиктивная служба node.js, работающая в частном VPC с внутренним балансировщиком нагрузки сети (примечание: это исправно).

Затем я настроил API и настроил ссылку VPC на это руководство: https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-with-private-integration.html

URL ресурса метода get указывает на DNS-имя внутреннего подсистемы балансировки нагрузки.

Когда я перехожу к URL-адресу шлюза API (например, https://ABC123.execute -api.us-west-2.amazonaws.com / prod / ), я могу получить HTML-ответ сервер (см. ниже). Однако файлы javascript возвращают 403 Forbidden. Я ожидаю, что это как-то связано с настройкой пути.

Вместо того, чтобы просто возвращать один ответ (т. Е. Ответ json API), есть ли способ настроить шлюз API для возврата полнофункционального приложения, которое включает ресурсы HTML, css и js?


Вот фиктивный код, который запускает приложение:

// server.js
var express = require('express'),
app = express(); 
app.use('/', express.static('/home/ubuntu/static/'));
app.listen(8080);

страница индекса - это страница, которая загружается, когда я нажимаю на шлюз API

<!-- static/index.html -->
<html>
<body>
<h1>Hello world!</h1>
<p>This is some text.</p>
<script src="./app.js"></script>
</body>
</html>

the index page

JS не загружается (403) и не выполняется.

// static/app.js
console.log('Logging from app.js');
alert('WOOT!');

console output

1 Ответ

0 голосов
/ 04 сентября 2018

Вы можете проверить, что ваша функция вызывается (и правильно настраивается) на панели Lambda в AWS. Если ваш API-шлюз правильно настроен, он должен отображаться как триггер для вашей лямбда-функции:

lambdaconfig

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

lambdamonitoring

Вам нужна функция обработчика событий, которая перенаправляет запрос API-шлюза на соответствующий ресурс в вашем экспресс-приложении, что означает, что вам нужно реализовать какой-то промежуточный уровень для правильного сопоставления запросов API-интерфейса GateWay с вашим экспресс-методом / path / parameters / файлы.

AWS Lambda - это функции, которые вызываются, когда происходит событие в таких сервисах, как API Gateway, SNS, Alexa Skills и т. Д. Я бы попытался настроить aws-serverless-express или использовать другие сервис, такой как Elastic Beanstalk или ECS

...