Я прочитал довольно много страниц документации и другие вопросы / ответы StackOverflow, но, похоже, не нашел ничего, что могло бы помочь мне в моем сценарии.

Я размещаю общедоступный статический сайт в корзине S3. Этот сайт выполняет несколько обращений к API, который я разместил в экземпляре EC2 в VPC. Из-за этого мой API может вызываться только другими экземплярами и службами в том же VPC.

Но я не уверен, как разрешить сайту S3 Bucket доступ к моему API.

Я пробовал создавать конечные точки VPC и идти по этому маршруту, но все, что я сделал, - это ограничил доступ к моему сайту S3 только для экземпляров в моем VPC (чего я не хочу).

Буду признателен за любую помощь с этим, большое вам спасибо. Надеюсь, мой вопрос ясен.

3
Chris Leyva 24 Сен 2018 в 18:02

2 ответа

Лучший ответ

Нет, статические сайты S3 - это 100% клиентский код. Таким образом, в основном доставляется просто html + css + javascript, как есть от S3. Если вы хотите разместить на своем веб-сайте динамический контент, вам нужно рассмотреть вызов API, доступного из браузера вашего пользователя, то есть из Интернета.

AWS API-шлюз с частной интеграцией может использоваться для приема входящего вызова REST и отправки его на сервер EC2 в вашем VPC.

Я предпочитаю добавлять динамические данные на статические веб-сайты S3 с помощью API Gateway с AWS Lambda для создания бессерверного веб-сайта. Это сводит к минимуму эксплуатационные расходы, обслуживание и позволяет быстро развертывать. См. Бессерверную платформу для того, чтобы начать работу с этим решением.

6
Matt D 24 Сен 2018 в 15:16

Статический сайт не работает на сервере. Он полностью запускается в веб-браузере каждого посетителя сайта. Компьютер, на котором он работает, будет ноутбуком вашего конечного пользователя. Ни один из ваших кодов не работает в корзине S3. Корзина S3 просто хранит файлы и передает их браузеру конечного пользователя, который затем запускает код. Маршрут, по которому вы собираетесь попытаться предоставить сегменту S3 доступ к ресурсу VPC, не будет работать.

Вам нужно будет сделать свой API общедоступным, чтобы код, работающий на вашем статическом сайте (работающий в веб-браузерах, на ноутбуках / планшетах / телефонах конечных пользователей и т. Д.), Имел к нему доступ. Вам следует изучить что-то вроде ключей API или токенов JWT, чтобы обеспечить безопасность вашего общедоступного API.

2
Mark B 24 Сен 2018 в 15:16