Это можно сделать двумя способами.
- Вы можете использовать предварительно подписанные URL-адреса или
- Укажите временные учетные данные, которые разрешают доступ к их папке.
Предварительно подписанные URL
Сохранить все содержимое личное . Затем, когда клиент (например, приложение Android) требует доступа к объекту, ваше приложение должно проверить, имеют ли они право доступа к объекту, проверив базу данных. Если они имеют разрешенный доступ, то приложение должно сгенерировать предварительно подписанный URL , который предоставляет ограниченный по времени доступ к объекту.
Создание предварительно подписанного URL занимает всего пару строк кода и не требует вызова AWS. Таким образом, его создание очень быстрое, и приложение сохраняет полный контроль над тем, кому разрешен доступ к каким объектам.
Временные полномочия
Поскольку вашим пользователям разрешен доступ ко всему контенту в их папке, вы можете создать временные учетные данные безопасности с помощью службы маркеров безопасности . Этим учетным данным может быть назначена политика, которая разрешает доступ к s3://bucket_name/user_1/*
. Затем приложение Android может использовать эти учетные данные, чтобы напрямую вызывать API-интерфейс AWS для загрузки контента (или для загрузки, или для выполнения любых назначенных вами разрешений).
Это позволяет приложению напрямую связываться с AWS, а не вызывать ваши серверы для доступа к каждому объекту.
Если вы используете федеративную аутентификацию (например, доверяете Facebook), вы можете использовать Amazon Cognito для получения учетных данных .