我正在尝试为某些 AWS S3 存储桶启用传输加速。
我启动我的客户端会话:
client = boto3.client(
"s3",
aws_access_key_id=environ.get("AWS_ACCESS_KEY_ID"),
aws_secret_access_key=environ.get("AWS_SECRET_ACCESS_KEY")
)
然后,我通过 S3 控制台打开传输加速,并确保在代码中启用和打开它:
response = client.put_bucket_accelerate_configuration(
Bucket='string',
AccelerateConfiguration={
'Status': 'Enabled'
}
)
和
response = client.get_bucket_accelerate_configuration(
Bucket='string'
)
这两个片段都直接来自 BOTO3 文档。我能够稍后在代码中成功上传到存储桶:
client.upload_fileobj(data, environ.get("AWS_S3_BUCKET"), 'key')
我尝试在启动客户端会话时设置endpoint_url
参数,但这只是在我的存储桶内创建了一个新文件夹(带有我的存储桶标题)。
似乎 boto3 是唯一没有某种"使用传输加速端点"标志的 SDK。我知道它在存储桶上已启用,并且我有证据证明这一点,但我没有证据表明它实际上正在使用终端节点。
我尝试遍历客户端元数据、存储桶元数据以及返回任何类型数据的所有其他客户端方法,但我找不到它实际使用加速终端节点的证据。
我错过了什么吗?
使用以下方式使用 boto3 提及连接到 S3 加速终端节点:
Config(s3={"use_accelerate_endpoint": True})
此参数列在配置参考 — botocore 文档中:
S3(字典)
use_accelerate_endpoint
-- 指是否使用 S3 加速终端节点。该值必须是布尔值。如果为 True,则客户端将使用 S3 加速终端节点。如果使用 S3 加速终端节点,则寻址样式将始终是虚拟的。
因此,请尝试使用:
s3_client = boto3.client("s3", config=Config(s3={"use_accelerate_endpoint": True}))