gpt4 book ai didi

python - 将 boto 用于 AWS S3 Buckets for Signature V4

转载 作者:太空狗 更新时间:2023-10-29 18:30:33 24 4
gpt4 key购买 nike

我在为法兰克福地区的 S3 存储桶使用 Python-Boto SDK 时遇到问题。根据Amazon link该区域将仅支持 V4。这document说明如何为 Boto SDK 添加 V4 支持。我添加了一个新部分:

if not boto.config.get('s3', 'use-sigv4'):
boto.config.add_section('s3')
boto.config.set('s3', 'use-sigv4', 'True')

然后我创建了新连接并获取了所有存储桶:

connection = S3Connection(accesskey, secretkey, host=S3Connection.DefaultHost)
buckets = connection.get_all_buckets()

它工作正常,但后来我试图获取我的存储桶的所有 key :

for bucket in buckets:
bucket.get_all_keys()

我得到了以下信息:

S3ResponseError: 400 Bad Request
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AuthorizationHeaderMalformed</Code><Message>The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'eu-central-1'</Message><Region>eu-central-1</Region>

为什么会发生?之后我连接到该区域并获得了所有需要的数据:

region_con = boto.s3.connect_to_region('eu-central-1', aws_access_key_id=accesskey, aws_secret_access_key=secretkey)
bucket = region_con.get_bucket(bucket.name)
bucket.get_all_keys()

如何正确修复它?

最佳答案

我在使用 Boto 时遇到了同样的问题。该地区是法兰克福,并得到关于错误地区的错误。我的解决方案只是将主机(从本页 http://docs.aws.amazon.com/general/latest/gr/rande.html 获得的 URI)指向 's3.eu-central-1.amazonaws.com' 而不是默认的 's3 .amazonaws.com'

s3 = boto.s3.connect_to_region('eu-central-1',
aws_access_key_id=accesskey,
aws_secret_access_key=secretkey,
host='s3.eu-central-1.amazonaws.com')

关于python - 将 boto 用于 AWS S3 Buckets for Signature V4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27400105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com