Python 使用boto3启用S3铲斗传送加速时出现问题

Python 使用boto3启用S3铲斗传送加速时出现问题,python,amazon-web-services,amazon-s3,boto3,Python,Amazon Web Services,Amazon S3,Boto3,我正在尝试使用boto3获取有关S3存储桶的信息。以下是设置(bucketname设置为有效的S3 bucket名称): 当我尝试时,会出现以下错误: ClientError:调用时发生错误(InvalidRequest) GetBucketAcl操作:未在上配置S3传输加速 这个水桶 因此,我尝试启用传输加速: s3.put_bucket_accelerate_configuration(Bucket=bucketname, AccelerateConfiguration={'Status':

我正在尝试使用boto3获取有关S3存储桶的信息。以下是设置(bucketname设置为有效的S3 bucket名称):

当我尝试时,会出现以下错误:

ClientError:调用时发生错误(InvalidRequest) GetBucketAcl操作:未在上配置S3传输加速 这个水桶

因此,我尝试启用传输加速:

s3.put_bucket_accelerate_configuration(Bucket=bucketname, AccelerateConfiguration={'Status': 'Enabled'})
但是,我得到了这个错误,这看起来很愚蠢,因为上面的一行正在尝试配置bucket。我也有IAM权限(允许:*)修改存储桶:

ClientError:调用时发生错误(InvalidRequest) PutBucketAccelerateConfiguration操作:S3传输加速 未在此存储桶上配置


有人知道我在这里遗漏了什么吗?

虽然我从boto3文档中借用了原始问题中的代码,但这个构造并不完整,也没有提供我所期望的连接:

s3 = boto3.client('s3')
真正需要的是完全初始化的会话和客户机处理程序,如下所示(假设在~/.aws/config文件中正确设置了概要文件变量,并且bucketname是有效的S3 bucket):

在做了这个(duh)之后,我能够连接有或没有转移加速度


感谢评论,因为这些评论引导我找到了解决方案。

您对第一个错误的响应不应该是启用传输加速,而是理解请求失败的原因。您的~/.aws/config中是否存在以下情况:s3=use\u accelerate\u endpoint=true第二个请求失败,因为您正在发送启用该功能的请求。。。正在使用不可用的终结点。。。因为该功能未启用。@jarmod,我在配置文件中设置了该功能,并对其进行了注释以供测试。我很快就会发布这个问题的答案,因为我已经完全弄明白了。感谢您提供此指针。@Michael sqlbot,“使用不可用的端点”正是此问题的根源。请参阅下面的答案。使用s3=boto3。客户端('s3')应该可以。问题大概是,您的默认凭证/配置指示S3请求应该使用加速端点。这可能不是一个好的默认配置,因为您与之交互的大多数bucket可能不会被S3加速。我会将该[default]配置复制到[accel],然后将默认值更改为remove use_accelerate_endpoint=true。
s3 = boto3.client('s3')
from boto3 import Session

session = Session(profile_name=profile)
client = session.client('s3')
result = client.get_bucket_acl(Bucket=bucketname)