来自Flask的AWS S3下载文件

时间:2016-10-14 12:20:09

标签: python amazon-s3 flask boto3

我创建了一个应该从AWS S3下载文件的小应用程序。

我可以用这种方式正确下载数据:

 s3_client = boto3.resource('s3')
 req = s3_client.meta.client.download_file(bucket, ob_key, dest)

但如果我在烧瓶路线中添加此功能则不再起作用。我得到了这个错误:

ClientError:调用HeadObject操作时发生错误(400):错误请求

我无法弄清楚为什么它在路线内不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这与您的AWS区域有关。提及区域名称作为附加参数。

使用

在本地计算机上试用
aws s3 cp s3://bucket-name/file.png file.png --region us-east-1

如果您能够使用此命令下载文件,那么它也可以在您的API中正常工作。

答案 1 :(得分:1)

问题在于,我需要将s3_client声明为全局变量,而不是仅仅在函数内部。

现在它完美无缺!