Как скачать сотни конфиденциальных файлов с S3? - PullRequest
0 голосов
/ 13 марта 2019

Я использую S3 для хранения нескольких конфиденциальных файлов для клиентов.Ведро не может иметь публичный доступ, и только аутентифицированные пользователи могут получить доступ к этим файлам.

Это моя текущая идея

Я использую Cognito для аутентификации пользователей и предоставления им доступа к API-шлюзу.Когда они делают запрос к пути /files, он направляет запрос в лямбду, которая генерирует подписанный URL для каждого файла, к которому у пользователя тоже есть доступ.Затем API Gateway возвращает список всех этих подписанных URL-адресов, и браузер отображает их.

Сбор подписанного URL-адреса для каждого файла кажется очень неэффективным.Есть ли другой способ получить конфиденциальные файлы из S3 в одной большой партии?

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

Более безопасный подход для вашего приложения - генерировать подписанные URL-адреса, действительные для одного запроса или периода, и ваша корзина будет принимать только запросы, исходящие из CloudFront, с использованием Origin Access Identity.

См. Документацию дляэто в https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html

1 голос
/ 13 марта 2019

Вы говорите: «Сбор подписанного URL для каждого файла кажется очень неэффективным», но сам процесс создания подписанного URL очень прост - всего несколько строк кода.

Однако, если файлов много, пользователям придется загружать каждый файл по отдельности.

Таким образом, другой подход может быть:

  • Укажите все файлы, которые они хотят загрузить
  • Создайте Zip из файлов и сохраните его в Amazon S3
  • Укажите подписанный URL в Zip-файле
  • Удалите файл Zip позже (поскольку он больше не требуется), возможно, путем создания правила жизненного цикла для папки внутри корзины

Обратите внимание, что функции AWS Lambda имеют ограничение на дисковое пространство 500 МБ, которого может быть недостаточно для создания Zip-файла.

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