Ограничить доступ к статическому сайту S3, который использует API Gateway в качестве прокси - PullRequest
4 голосов
/ 13 марта 2019

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

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

enter image description here

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

enter image description here

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

enter image description here

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

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

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

    { «Версия»: «2012-10-17», "Id": "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 referer», "Утверждение": [ { «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 / прод / ", "http://xxxxxxxx.execute -api.us-east-2.amazonaws.com / прод " ] } } } ] }

1 Ответ

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

Подробнее см. документы .

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...