如何使用Python从S3 / Elastic Beanstalk实例下载文件到本地机器?

0

【以下的问题经过翻译处理】 我正在尝试将一个文件从S3传输到我的本地机器。我认为在我的Elastic Beanstalk代码中运行下面的代码:

s3.download_file('bucket', 'key', 'filename')    
send_file('filename', as_attachment=True)

会将文件下载到我的本地机器上,但它似乎是保存在EB实例上。也没有记录任何错误,因此它能够下载文件,只是不能下载到我的本地机器上。

是否有一种方法,在EB从S3下载文件后,将文件从EB实例传输到本地计算机?如果有Boto3 Python代码可以实现这一点,那就太好了。

profile picture
专家
已提问 5 个月前48 查看次数
1 回答
0

【以下的回答经过翻译处理】 根据send_file()函数,我猜测你在使用Flask,如果文件很小,将文件存储在内存中(使用get_object())可能比下载到服务器文件系统中更容易。例如,类似于:

s3_result = s3.get_object(Bucket='bucket', Key='key')
response = make_response(s3_result['Body'].read())
response.headers['Content-Disposition'] = 'attachment; filename=myfile.txt'
response.mimetype = 'text/plain' # 或者你的文件的MIME类型
return response

如果文件很大,你可以将用户重定向到一个预签名的URL(可以使用boto3生成)。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则