Как я могу позволить пользователю загружать файл из корзины s3 при нажатии на кнопку? - PullRequest
0 голосов
/ 28 июня 2019

Извините, если этот вопрос прост, я ожидал найти много информации по нему, но, к сожалению, я искал некоторое время и не могу ничего найти.Как я могу позволить пользователю загружать файл, который хранится в корзине Amazon S3, при нажатии на кнопку?Я думал о реализации этого с помощью лямбда-функции с помощью pyto SDK boto3, но я не уверен, возможно ли это.Заранее благодарим за любую помощь, которую вы можете оказать

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Да, это должно быть возможно.Вы можете создать предварительно подписанную ссылку способом, подобным следующему.

            url = s3.generate_presigned_url(
                ClientMethod='get_object',
                Params={
                    'Bucket': get_bucket_name(),
                    'Key': s3_key
                }
            )
0 голосов
/ 28 июня 2019

Случай, который вы упомянули, возможен. Мы можем справиться с тем же, используя несколько способов.

  • Мы могли бы сделать корзину s3 общедоступной, что эффективно сделает объекты доступными для всех пользователей, что, на мой взгляд, не очень хороший подход, если вы подумаете о сценариях безопасности.
  • Мы можем использовать предварительно подписанный URL-адрес, для которого мы можем установить срок действия, чтобы срок действия ссылки истек через определенное время.

{

bucket = 'bucket_name' # name of the s3 bucket

file_key = 'file_path/file_name' # key including any folder paths

uri_duration = 10 #expiry duration in seconds. default 3600

s3Client = boto3.client('s3')

_uri = s3Client.generate_presigned_url('get_object', Params = 
{'Bucket': bucket, 'Key': file_key}, ExpiresIn = uri_duration)

}

...