【问题标题】:AWS S3 download file from Flask从 Flask 下载 AWS S3 文件
【发布时间】:2016-10-14 21:45:15
【问题描述】:

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

这样我就可以正确下载数据了:

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

但如果我在烧瓶路线中添加此功能,它将不再起作用。我收到此错误:

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

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

【问题讨论】:

    标签: python amazon-s3 flask boto3


    【解决方案1】:

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

    在你的本地机器上试试,使用

    aws s3 cp s3://bucket-name/file.png file.png --region us-east-1
    

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

    【讨论】:

    • 我试图在 s3_client = boto3.resource('s3', region_name='eu-central-1') 中指定区域,现在我收到 403 错误。
    • 我在上面看到了你的回答。这是一个意外错误:P
    【解决方案2】:

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

    现在完美运行了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-22
      • 2019-03-04
      • 2018-10-10
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多