单击按钮时,如何让用户从s3存储桶下载文件?

时间:2019-06-28 07:44:26

标签: python amazon-web-services amazon-s3 aws-lambda boto3

很抱歉,如果这个问题很简单,我希望能找到很多有关它的信息,但是不幸的是我已经找了一段时间了,却找不到任何东西。单击按钮时,如何让用户下载存储在Amazon s3存储桶中的文件?我曾想借助boto3 python SDK使用lambda函数实现此功能,但我不确定是否可行。预先感谢您提供的任何帮助

2 个答案:

答案 0 :(得分:1)

是的,应该有可能。您可以通过以下方式生成预签名链接。

            url = s3.generate_presigned_url(
                ClientMethod='get_object',
                Params={
                    'Bucket': get_bucket_name(),
                    'Key': s3_key
                }
            )

答案 1 :(得分:0)

您提到的情况是可能的。我们可以使用几种方法来处理相同的问题。

  • 我们可以使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)

}