По умолчанию корзины Amazon S3 являются частными.
Доступ к объектам может быть предоставлен несколькими способами:
- A Политика корзины может создать корзинуили часть корзины, общедоступная (не применимо для вашего варианта использования)
- Список контроля доступа (ACL) *1011* на объекте может сделать его общедоступным (неприменимо для вашегосценарий использования)
- Пользователи IAM могут быть предоставлены разрешения для корзины Amazon S3 (но пользователи IAM должны использоваться только для вашего персонала, а не для пользователей приложений)
- Роли IAM могут быть временно приняты, но сначала требуется аутентификация (подробнее об этом ниже)
- Можно создать предварительно подписанные URL , чтобы обеспечить ограниченный по времени доступ к AmazonОбъекты S3
Для вашего варианта использования наиболее подходящим подходом будет:
- Users аутентификация для вашего приложения.Это может использовать Amazon Cognito или любой другой метод аутентификации, который вы хотите использовать.
- Когда пользователь желает получить доступ к частному объекту, ваше приложение определяет, имеют ли они право на такой доступ (выполняется черезваш собственный код).
- Если им разрешен доступ, приложение должно сгенерировать предварительно подписанный URL .Этот URL-адрес может быть включен в теги, такие как
<a>
и <img>
. - Когда пользователь получит доступ к URL-адресу, он сможет получить доступ к объекту непосредственно из Amazon S3.
- . время истечения прошло, предварительно подписанный URL больше не работает.
Итак, вы можете использовать OAuth или любой другой метод аутентификации, но это ответственность вашего приложенияопределить, имеют ли они право на доступ к отдельным объектам, и, если да, создать и вернуть предварительно подписанный URL.(Это всего лишь пара строк кода, для его генерации не требуется никаких вызовов API.)
См .: Совместное использование объекта с другими - Amazon Simple Storage Service
AmazonCognito имеет возможность выдавать учетные данные, связанные с IAM Role , и пользователи могут затем использовать эти учетные данные для выполнения вызовов API для AWS.Однако это общая роль, которой могут пользоваться многие пользователи, и она не является способом предоставления пользовательских разрешений.