Как сделать файлы в S3 приватными, если сессия истекла - PullRequest
0 голосов
/ 15 января 2019

У меня есть несколько изображений, хранящихся в корзине Amazon S3. Я указываю на них на своих веб-страницах, используя <img src>.

Я не хочу, чтобы изображения можно было просматривать, когда пользователь не вошел в систему. Могу ли я сделать его приватным из моего бэкэнда, когда пользователь выходит из системы?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Используйте URL-адреса предварительно назначенных объектов , чтобы получить изображения из частного сегмента S3. Эти предварительно назначенные URL действительны только в течение указанного периода времени. Вот основной пример того, как сгенерировать эти предопределенные URL-адреса с помощью boto3 в Python:

import boto3

AWS_ACCESS_KEY_ID = <access_key_id>
AWS_SECRET_KEY = <secret_key>
AWS_REGION = <region_name>

client = boto3.client(
    's3',
    aws_access_key_id = AWS_ACCESS_KEY_ID,
    aws_secret_access_key = AWS_SECRET_KEY,
    region_name = AWS_REGION
)

PRESIGNED_DOWNLOAD_URL = client.generate_presigned_url(
    ClientMethod = 'get_object',  
    Params = {
        'Bucket': AWS_BUCKET_NAME,
        'Key': FILE_NAME,
    }, 
    ExpiresIn = 3600,
)
print(PRESIGNED_DOWNLOAD_URL)

Здесь вам просто нужно указать AWS_ACCESS_KEY_ID, AWS_SECRET_KEY, AWS_REGION группы, AWS_BUCKET_NAME и FILE_NAME, которые вы хотите загрузить. ExpiresIn = 3600 дается в секундах. Таким образом, этот URL будет действителен в течение 60 минут.

Остальная часть должна обрабатываться вашим приложением. То есть, когда пользователь входит в систему, генерирует предварительно заданные URL-адреса и получает изображения с URL-адреса в шаблоне. В противном случае не отображайте изображения в шаблоне.

0 голосов
/ 15 января 2019

Вы должны:

Предварительно подписанный URL-адрес предоставляет ограниченный по времени доступ к частному объекту в S3. По истечении этого периода он становится недоступным.

Ваше приложение отвечает за аутентификацию пользователей и определение того, разрешено ли им доступ к объекту. Если это так, приложение должно сгенерировать предварительно подписанный URL. Затем URL может быть включен в HTML так же, как обычный URL (например, в теге <img>).

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