我创建了一个应该从AWS S3下载文件的小应用程序。
我可以用这种方式正确下载数据:
s3_client = boto3.resource('s3')
req = s3_client.meta.client.download_file(bucket, ob_key, dest)
但如果我在烧瓶路线中添加此功能则不再起作用。我得到了这个错误:
ClientError:调用HeadObject操作时发生错误(400):错误请求
我无法弄清楚为什么它在路线内不起作用。有什么想法吗?
答案 0 :(得分:2)
这与您的AWS区域有关。提及区域名称作为附加参数。
使用
在本地计算机上试用aws s3 cp s3://bucket-name/file.png file.png --region us-east-1
如果您能够使用此命令下载文件,那么它也可以在您的API中正常工作。
答案 1 :(得分:1)
问题在于,我需要将s3_client声明为全局变量,而不是仅仅在函数内部。
现在它完美无缺!