本文档介绍如何使用 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 inspectfrom qcloud_cos import CosConfig, CosS3Clientget_args = getattr(inspect, 'getfullargspec', None) or inspect.getargspecchecks = ((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 osfrom qcloud_cos import CosConfig, CosS3Clientsecret_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 osfrom 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)
后续操作
常用高级接口:
场景 | 接口文档 |
上传本地文件,自动分块与符合条件的续传 | |
并发下载到本地并管理续传记录 | |
同桶同地域自动选择复制方式 | |
读取二进制流并上传 | |
生成带会话签名的临时访问链接 |
存储桶操作:创建存储桶、删除存储桶、查询存储桶、查询存储桶列表、创建访问会话。
对象操作:上传对象、下载对象、删除对象、复制对象、重命名对象等。
分块上传操作:适用于大文件的分块上传。
存储桶策略:设置、获取、删除存储桶策略。