Загрузка изображений на S3 из передового опыта - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть статический сайт React, который я использую для загрузки изображения в s3 с использованием пула идентификаторов в cognito. Я сделал это больше из любопытства, чем что-либо еще. Я понимаю, что одним из способов сделать это было бы загрузить мое изображение на мой сервер, который затем мог бы загрузить его на s3. но я хочу знать, есть ли лучшие практики для этого со стороны клиента напрямую без сервера. Одна из моих проблем в моем текущем подходе заключается в том, что идентификатор пула идентификаторов является открытым. Любые отзывы полезны.

Ответы [ 4 ]

0 голосов
/ 06 сентября 2018

Обычным примером является то, что ваш сервер аутентифицирует запрос пользователя и возвращает предварительно подписанный URL. Затем его можно использовать для прямой загрузки на S3 с использованием стандартных методов HTTP. См. Загрузка объектов с использованием предварительно подписанных URL-адресов .

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

0 голосов
/ 06 сентября 2018

Может быть, вы можете рассмотреть аналогичный дизайн, как описано здесь: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_cognito.html

0 голосов
/ 06 сентября 2018

Этот ресурс Безсерверный стек поможет вам точно выполнить то, что вы хотите сделать, он помог мне настроить аналогичные "безсерверные" развертывания.

Шаблон для того, что вы описываете, выглядит следующим образом:

  1. Пользователи проходят проверку подлинности с помощью пула удостоверений, возвращается JWT
  2. Федеративные удостоверения возвращает учетные данные AWS IAM для действительного JWT (примечание: федеративное удостоверение должно иметь Политику, позволяющую учетным данным AWS IAM получать доступ к S3)
  3. Используя учетные данные AWS IAM, пользовательский клиент может загрузить изображение на S3

Что касается пула идентификаторов, то ваш идентификатор пула идентификаторов фактически является общедоступным ресурсом, как и ваше веб-приложение. Ваш пул удостоверений защищен тем фактом, что пользователи должны существовать в пуле удостоверений и иметь правильный пароль для этого пользователя.

0 голосов
/ 06 сентября 2018

Если вы не хотите показывать свой идентификатор в клиентской кодовой базе (вы не должны), обычно я устанавливаю идентификатор как переменную окружения в файле .env, затем используйте пакет с именем dotenv выставить его в файл .js, которому нужен идентификатор. Затем, конечно, включите файл .env в свой .gitignore, чтобы избежать его отслеживания в управлении версиями.

Подробнее здесь: https://github.com/motdotla/dotenv

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