У меня есть корзина S3, которая действует как статический веб-сайт, и я использую шлюз API для распределения трафика на нее. Я понимаю, что CloudFront здесь лучше, но, пожалуйста, не предлагайте его. Это не вариант, по причинам, которые я не буду вдаваться.
Я выполняю свое решение, настраивая ресурс {proxy+}. Изображение ниже:
Я хотел бы разрешить доступ к веб-сайту S3 только из прокси-ресурса шлюза API. Есть ли способ предоставить роль исполнения прокси-ресурсу, аналогично тому, как вы можете предоставить роль выполнения ресурсу для запуска лямбда-функции? Пример роли исполнения Lambda ниже:
Часть запроса на интеграцию прокси-ресурса, по-видимому, не имеет роли исполнения:
Или есть способ назначить роль всему шлюзу API, чтобы предоставить ему право доступа к корзине S3?
Другие вещи, которые я пробовал:
Редактирование политики корзины, чтобы разрешить трафик только от службы шлюза API:
{ «Версия»: «2012-10-17», «Идентификатор»: «apiGatewayOnly», "Заявление": [ { "Сид": "apiGW", «Эффект»: «Разрешить», "Главный": { "Сервис": ["api-gateway-amazonaws.com"] }, «Действие»: «s3: GetObject», "Ресурс": "http://test-proxy-bucket-01.s3-website.us-east-2.amazonaws.com/*" } ] }
Редактирование политики корзины, чтобы разрешить трафик только с URL-адреса шлюза API:
{ «Версия»: «2012-10-17», "Id": "пример политики HTTP-реферера", "Заявление": [ { "Sid": "Разрешить получать запросы с www.example.com и example.com.", «Эффект»: «Разрешить», "Принципал": "", «Действие»: «s3: GetObject», "Ресурс": "http://test-proxy-bucket-01.s3-website.us-east-2.amazonaws.com/", "Условие": { "StringLike": { "aws:Referer": [ "https://xxxxxxx.execute-api.us-east-2.amazonaws.com/prod/", "http://xxxxxxxx.execute-api.us-east-2.amazonaws.com/prod" ] } } } ] }





apigateway.amazonaws.comДополнительные сведения см. в документы.
Одна проблема, с которой я столкнулся при переходе по этому пути, заключается в том, что здесь используется базовый API S3, а не веб-сайт S3, который имеет ограничения. Например, путь к веб-сайту позволяет указать возвращаемую страницу индекса/ошибки, которая может указывать на index.html, что отлично подходит для SPA. Для s3 API ошибки возвращают s3 xml - это нарушает маршрутизацию SPA с использованием современной маршрутизации браузера, насколько я могу судить (вторая перезагрузка страницы на вложенном маршруте, вы возвращаете ошибку s3 xml 404). Единственный способ, которым я мог заставить его работать, - это хеш-маршрутизация в старом стиле.
Спасибо, это именно то, что мне было нужно. Для всех, кто увидит этот пост позже, раздел документации, который выполнил то, что мне было нужно, был «Предоставление методов API для доступа к объекту Amazon S3 в корзине», поскольку мне нужно было не только видеть корзины, но и видеть объекты внутри них.