Может ли API-шлюз прокси-сервер к HTTP-серверу больше, чем JSON?
Я экспериментирую с 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
, Я ожидаю, что это как-то связано с настройкой пути.
Вместо того, чтобы просто возвращать один ответ (т. Е. Ответ API json), есть ли способ настроить 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>
Этот JS не загружается (403) и не выполняется.
// static/app.js
console.log('Logging from app.js');
alert('WOOT!');
1 ответ
Вы можете проверить, что ваша функция вызывается (и правильно настраивается) на панели Lambda в AWS. Если ваш API-шлюз настроен правильно, он должен появиться как триггер для вашей лямбда-функции:
После этого вы можете увидеть статистику и журналы вашей лямбды на вкладке мониторинга:
Вам нужна функция обработчика событий, которая перенаправляет запрос API-шлюза на соответствующий ресурс в вашем экспресс-приложении, а это значит, что вам нужно реализовать какой-то промежуточный уровень для правильного сопоставления запросов API GateWay с вашим экспресс-методом / path / parameters / files.
AWS Lambda - это функции, которые вызываются, когда происходит событие в таких сервисах, как API Gateway, SNS, Alexa Skills и т. Д. Я бы попытался настроить https://github.com/awslabs/aws-serverless-express или использовать какой-либо другой сервис, такой как Elastic Beanstalk или ECS.