为了账号安全,请及时绑定邮箱和手机立即绑定

使用 boto3 从 AWS S3 Bucket 下载文件会导致 ClientError:

使用 boto3 从 AWS S3 Bucket 下载文件会导致 ClientError:

holdtom 2022-01-18 17:00:24
我正在尝试使用https://db.humanconnectome.org提供的访问密钥 ID 和秘密访问密钥从 s3 存储桶下载文件。但是,即使我能够导航数据库并找到文件(因为我已经通过 aws cli 配置了我的凭据),但尝试下载它们会导致以下错误:“botocore.exceptions.ClientError: 发生错误 (403)调用 HeadObject 操作时:禁止“使用相同的凭据,我可以浏览相同的数据库并通过 Cyberduck 等云存储浏览器手动下载文件,因此 Cyberduck 访问数据的方式不会引发 403 Forbidden 错误。我还验证了 boto3 能够访问我的 aws 凭据,并且还尝试通过硬编码它们。我尝试下载数据的方式非常简单,并复制了 boto3 文档示例:https ://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-example-download-file.htmls3 = boto3.client('s3',    aws_access_key_id=ACCESS_KEY_ID,    aws_secret_access_key=ACCESS_KEY,)s3.download_file(Bucket=BUCKET_NAME, Key=FILE_KEY, Filename=FILE_NAME)这应该将文件下载到 FILE_NAME 给出的位置和文件,但会调用 403 Forbidden 错误。
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

下载文件时,您还需要传递存储桶区域。尝试region使用 CLI 配置或region_name在创建客户端时通过。


s3 = boto3.client('s3',

    aws_access_key_id=ACCESS_KEY_ID,

    aws_secret_access_key=ACCESS_KEY,

    region_name=AWS_REGION)

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html


查看完整回答
反对 回复 2022-01-18
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

我知道这听起来可能很荒谬,但请确保您的存储桶名称中没有拼写错误或类似的东西。

我工作了很长时间试图解决这个问题,只是意识到我在为我的 s3 存储桶设置的 env 变量中添加了一个额外的字母。

他们给你一个禁止的错误而不是“未找到”错误,这很奇怪,但他们确实这样做了


查看完整回答
反对 回复 2022-01-18
  • 2 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信