Как хранить данные в S3 и предоставлять пользователям безопасный доступ с помощью API-интерфейса rails/iOS-клиента?

Я новичок в написании Rails и API. Мне нужна помощь с решением для хранения S3. Вот моя проблема.

Я пишу API для приложения iOS, в котором пользователи входят в систему с помощью API Facebook на iOS. Сервер проверяет пользователя на соответствие токену, который Facebook выдает пользователю iOS, и выдает временный токен сеанса. С этого момента пользователю необходимо загрузить контент, хранящийся в S3. Этот контент принадлежит только пользователю и его друзьям. Этот пользователь может добавить больше контента в S3, к которому может получить доступ та же группа людей. Я предполагаю, что это похоже на прикрепление файла к группе Facebook...

Есть 2 способа, которыми пользователь может взаимодействовать с S3... оставить это на сервере или заставить сервер выдать временный токен S3 (не уверен возможностей здесь), и пользователь может перейти по URL-адресам контента непосредственно на S3.Я нашел этот вопрос, говорящий о подходах, однако он действительно устарел (2 года назад): Архитектурный и дизайнерский вопрос о загрузке фотографий из приложения iPhone и S3

Итак, вопросы:

  • Есть ли способ ограничить пользователю доступ только к некоторому контенту на S3 при выдаче временного токена? Как я могу это сделать? Предположим, есть... скажем, 100 000 или более пользователей.
  • Стоит ли позволять устройству iOS извлекать этот контент напрямую?
  • Или следует позволить серверу контролировать передачу всего контента (конечно, это решает проблему безопасности)? Означает ли это, что я должен загрузить весь контент на сервер, прежде чем передать его подключенным пользователям?
  • Если вы знаете рельсы... могу ли я использовать скрепку и драгоценные камни aws-sdk для достижения такой настройки?

Приносим извинения за многочисленные вопросы. Буду признательна за понимание проблемы. Спасибо :)

92
задан Community 23 May 2017 в 10:31
поделиться