帮你快速理解、总结文档立即下载

快速入门

最近更新时间:2026-10-21 18:34:03
我的收藏
本文档介绍如何使用 Python SDK 访问高性能桶(Rapid Bucket),完成初始化客户端、创建访问会话以及上传下载对象等基础操作。

环境要求

高性能桶 SDK 已验证的 Python 版本为2.7、3.6、3.7;生产环境的 Python 与依赖版本请以所获取 SDK 的版本说明为准。
已开通高性能桶服务,并已创建高性能桶;也可以按 Python SDK 创建存储桶 通过 SDK 创建。高性能桶的完整名称形如 <BucketName>-x--<APPID>,例如 examplebucket-x--1250000000。
已获取访问密钥 SecretId 和 SecretKey。建议使用子账号密钥并遵循最小权限原则。

安装 SDK

本文适用于高性能桶 Python SDK 的内部测试版本(软件包版本 1.9.45)。请使用测试交付的专用源码包;所用版本需包含 EnableRapidDomain、create_session、rename_object,以及 create_bucket 的 VpcId、SubnetId、Zone 参数。
普通 COS SDK 的公开 PyPI 安装包不能作为本文功能的安装依据。取得匹配的 SDK 源码包后,解压并进入包含 setup.py 的目录,使用当前 Python 环境安装:
python -m pip install .
安装后可先进行零网络能力检查,避免误用同名的普通 COS SDK 包:
# -*- coding: utf-8 -*-
import inspect
from qcloud_cos import CosConfig, CosS3Client

get_args = getattr(inspect, 'getfullargspec', None) or inspect.getargspec
checks = (
(CosConfig.__init__, ('EnableRapidDomain',)),
(CosS3Client.create_bucket, ('VpcId', 'SubnetId', 'Zone')),
)
for method, required in checks:
if not set(required).issubset(get_args(method).args):
raise RuntimeError('SDK 与高性能桶测试交付版本不匹配')
for name in ('create_session', 'rename_object'):
if not hasattr(CosS3Client, name):
raise RuntimeError('SDK 缺少高性能桶接口:' + name)
print('Rapid SDK API check OK')

鉴权说明

访问高性能桶的数据面接口时,统一使用 session 临时凭证签名。CosS3Client 在识别到高性能桶后会自动完成这一步:在需要时调用 CreateSession 换取临时凭证并完成签名,临时凭证在有效期内按桶复用。对于可安全重试的请求,收到 403 时 SDK 最多刷新凭证并重试一次,业务代码通常无需手动管理会话与临时凭证。
只需在初始化客户端时打开 EnableRapidDomain(或让 Endpoint/Domain 符合 Rapid 域名),后续按本文列出的高性能桶接口与参数调用。控制面接口(创建/删除/查询桶、存储桶策略、CreateSession)仍使用基础凭证签名,不走 session。

初始化客户端

示例从环境变量 COS_SECRET_ID、COS_SECRET_KEY 读取基础密钥。使用临时访问密钥时,还需设置 COS_SECURITY_TOKEN。请通过安全的配置方式提供这些值,不要将密钥或会话令牌写入源码或日志。
当前内部测试接入使用 HTTP 默认端口 80,示例显式设置 Scheme='http';SDK 的默认值是 HTTPS,不能省略此配置。访问高性能桶时,建议设置 EnableRapidDomain=True,SDK 会把 Bucket Endpoint 设为 cosrapid.<Region>.myqcloud.com,把 ServiceDomain 设为 service.cosrapid.<Region>.myqcloud.com:
# -*- coding=utf-8 -*-
import os
from qcloud_cos import CosConfig, CosS3Client

secret_id = os.environ['COS_SECRET_ID']
secret_key = os.environ['COS_SECRET_KEY']
region = 'ap-guangzhou'

# 高性能桶经 VPC 内网 HTTP 80 端口接入,SDK 的网关 DNS 负载均衡也仅对 HTTP 请求生效;SDK 默认 https,此处需显式指定 http。
config = CosConfig(
Scheme='http',
Region=region,
SecretId=secret_id,
SecretKey=secret_key,
Token=os.environ.get('COS_SECURITY_TOKEN'),
EnableRapidDomain=True)
client = CosS3Client(config)

# 高性能桶完整名称,形如 <BucketName>-x--<APPID>。
bucket = 'examplebucket-x--1250000000'
字段说明:
参数
描述
Region
高性能桶所在地域,例如 ap-guangzhou
Scheme
当前内部测试入口使用 http,需显式设置
SecretId / SecretKey
主账号或子账号的访问密钥
EnableRapidDomain
为 True 时使用 Rapid Bucket Endpoint 与 ServiceDomain
EnableSessionAuth
None(默认)自动判断;True 强制对高性能桶开启 session;False 关闭(数据面会本地报错)
SessionMode
CreateSession 默认权限,ReadWrite(默认)或 ReadOnly
CreateSessionTimeout
CreateSession 独立超时秒数,默认 30
如需显式配置域名,Endpoint 与 Domain 的格式不同,二选一即可:
Endpoint 不含桶名前缀,格式为 cosrapid.<Region>.myqcloud.com,例如 cosrapid.ap-guangzhou.myqcloud.com;SDK 会根据 Bucket 补上桶名。
Domain 是完整的桶域名,格式为 <Bucket>.cosrapid.<Region>.myqcloud.com,例如 examplebucket-x--1250000000.cosrapid.ap-guangzhou.myqcloud.com,必须与请求的 Bucket 对应。
两者均只填写域名,不包含协议、路径或显式端口;域名中的地域须与 Region 一致。不要把完整桶域名传给 Endpoint。正确配置上述域名后,SDK 会自动启用高性能桶会话鉴权。

完整示例

以下示例演示初始化客户端后完成一次上传与下载:
# -*- coding=utf-8 -*-
import os
from qcloud_cos import CosConfig, CosS3Client

# 高性能桶经 VPC 内网 HTTP 80 端口接入,SDK 的网关 DNS 负载均衡也仅对 HTTP 请求生效;SDK 默认 https,此处需显式指定 http。
config = CosConfig(
Scheme='http',
Region='ap-guangzhou',
SecretId=os.environ['COS_SECRET_ID'],
SecretKey=os.environ['COS_SECRET_KEY'],
Token=os.environ.get('COS_SECURITY_TOKEN'),
EnableRapidDomain=True)
client = CosS3Client(config)

bucket = 'examplebucket-x--1250000000'
key = 'quickstart/hello.txt'

# 上传对象。首次对高性能桶发起请求时,SDK 会自动创建 session 并签名。
client.put_object(Bucket=bucket, Key=key, Body=b'hello rapid bucket')
print('PutObject OK')

# 下载对象。
resp = client.get_object(Bucket=bucket, Key=key)
body = resp['Body'].get_raw_stream().read()
print('GetObject OK: %s' % body)

后续操作

常用高级接口:
场景
接口文档
上传本地文件,自动分块与符合条件的续传
并发下载到本地并管理续传记录
同桶同地域自动选择复制方式
读取二进制流并上传
生成带会话签名的临时访问链接
存储桶操作:创建存储桶、删除存储桶、查询存储桶、查询存储桶列表、创建访问会话。
对象操作:上传对象、下载对象、删除对象、复制对象、重命名对象等。
分块上传操作:适用于大文件的分块上传。
存储桶策略:设置、获取、删除存储桶策略。
各接口的详细用法请参见对应文档。SDK 调用返回的错误处理方式请参见 Python SDK 异常处理。