Ограничить доступ к статическому веб-сайту S3, который использует шлюз API в качестве прокси-сервера

У меня есть корзина S3, которая действует как статический веб-сайт, и я использую шлюз API для распределения трафика на нее. Я понимаю, что CloudFront здесь лучше, но, пожалуйста, не предлагайте его. Это не вариант, по причинам, которые я не буду вдаваться.

Я выполняю свое решение, настраивая ресурс {proxy+}. Изображение ниже:

Ограничить доступ к статическому веб-сайту S3, который использует шлюз API в качестве прокси-сервера

Я хотел бы разрешить доступ к веб-сайту S3 только из прокси-ресурса шлюза API. Есть ли способ предоставить роль исполнения прокси-ресурсу, аналогично тому, как вы можете предоставить роль выполнения ресурсу для запуска лямбда-функции? Пример роли исполнения Lambda ниже:

Ограничить доступ к статическому веб-сайту S3, который использует шлюз API в качестве прокси-сервера

Часть запроса на интеграцию прокси-ресурса, по-видимому, не имеет роли исполнения:

Ограничить доступ к статическому веб-сайту S3, который использует шлюз API в качестве прокси-сервера

Или есть способ назначить роль всему шлюзу API, чтобы предоставить ему право доступа к корзине S3?

Другие вещи, которые я пробовал:

  1. Редактирование политики корзины, чтобы разрешить трафик только от службы шлюза API:

    { «Версия»: «2012-10-17», «Идентификатор»: «apiGatewayOnly», "Заявление": [ { "Сид": "apiGW", «Эффект»: «Разрешить», "Главный": { "Сервис": ["api-gateway-amazonaws.com"] }, «Действие»: «s3: GetObject», "Ресурс": "http://test-proxy-bucket-01.s3-website.us-east-2.amazonaws.com/*" } ] }

  2. Редактирование политики корзины, чтобы разрешить трафик только с 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" ] } } } ] }

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
11
0
4 192
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Создайте частную корзину S3
  2. Создайте роль IAM, которая может получить доступ к корзине. Установите доверенное лицо / принципал, который может взять на себя эту роль, apigateway.amazonaws.com
  3. Используйте тип интеграции сервиса AWS и выберите s3. Установите роль выполнения на роль, созданную в 2

Дополнительные сведения см. в документы.

Спасибо, это именно то, что мне было нужно. Для всех, кто увидит этот пост позже, раздел документации, который выполнил то, что мне было нужно, был «Предоставление методов API для доступа к объекту Amazon S3 в корзине», поскольку мне нужно было не только видеть корзины, но и видеть объекты внутри них.

stanaka 14.03.2019 01:06

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

Android3000 17.02.2020 17:28

Другие вопросы по теме