为高性能桶创建访问会话(CreateSession),返回可用于后续请求的临时凭证,是高性能桶专属能力。使用 Python SDK 访问高性能桶的数据面接口时,
CosS3Client 会自动调用本接口并按桶缓存复用临时凭证,通常无需手动调用;本文档说明其手动调用方式及返回结构,便于需要自行管理临时凭证的场景使用。注意事项
向其他调用方提供临时访问链接时,参见 Python SDK 预签名 URL。
Credentials 中的访问密钥和会话令牌仅用于请求鉴权,不应输出到终端、日志或错误报告。诊断时使用 RequestId、过期时间等信息。临时凭证具有桶级作用域,仅对创建会话时指定的高性能桶有效。
临时凭证有效期较短,过期后需重新创建会话。使用自动会话管理时,后续请求会在需要时刷新凭据。
CreateSession 自身使用基础凭证签名,独立超时(CosConfig.CreateSessionTimeout,默认 30 秒)且不跟随重定向;GET/HEAD 预签名默认申请独立的 ReadOnly 会话,不复用数据面已缓存的 ReadWrite。若返回的凭证不完整或过期时间缺失/非法,SDK 会直接返回错误,不会下发无效凭证。
该接口仅支持高性能桶;对普通桶调用会本地报错。
请求
调用形式
client.create_session(Bucket=bucket, Mode='ReadWrite')
参数说明
参数名称 | 参数描述 | 类型 | 是否必选 |
Bucket | 高性能桶完整名称,格式为 <BucketName>-x--<APPID> | string | 是 |
Mode | 会话权限, ReadWrite 或 ReadOnly,缺省取 CosConfig.SessionMode | string | 否 |
响应
# -*- coding: utf-8 -*-{'Credentials': {'AccessKeyId': '...', # 临时 SecretId'SecretAccessKey': '...', # 临时 SecretKey'SessionToken': '...', # 会话令牌'Expiration': '2023-10-13T09:13:10Z',},'Expiration': '2023-10-13T09:13:10Z','RequestId': '...',}
参数名称 | 参数描述 | 类型 |
Credentials.AccessKeyId | 临时凭证 AccessKeyId(临时 SecretId) | string |
Credentials.SecretAccessKey | 临时凭证 SecretAccessKey(临时 SecretKey) | string |
Credentials.SessionToken | 会话令牌,后续请求需携带 | string |
Credentials.Expiration | 临时凭证过期时间,ISO 8601 格式 | string |
Expiration | 临时凭证过期时间 | string |
RequestId | 本次请求的唯一标识 | string |
错误码
实际案例
# -*- 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)res = client.create_session(Bucket='examplebucket-x--1250000000', Mode='ReadWrite')cred = res['Credentials']print('RequestId: %s' % res.get('RequestId'))print('Expiration: %s' % cred['Expiration'])