查询一个高性能桶是否存在以及当前调用方是否有权限访问(HEAD Bucket)。目标桶由
Bucket 参数指定,结果以 HTTP 状态码及响应头部呈现,无响应体。注意事项
HTTP 状态码可用于区分结果:200表示桶存在且有权限,403表示请求未获授权,不能据此判断桶是否存在,404表示桶不存在。
返回的响应头字典保留服务端原始头名和值,同时提供小写别名,可按
x-cos-bucket-status 等小写键读取。查询桶属于控制面接口,使用基础凭证签名,不走 session。
请求
方法原型
def head_bucket(self, Bucket, **kwargs)
参数说明
参数名称 | 参数描述 | 类型 | 是否必选 |
Bucket | 待查询的高性能桶完整名称,格式为 <BucketName>-x--<APPID> | string | 是 |
kwargs | 可选请求参数,使用本文列出的参数 | dict | 否 |
响应
返回值为响应头部字典:
参数名称 | 参数描述 | 类型 |
响应头 dict | 成功时返回响应头部字典,可通过 x-cos-bucket-status、x-cos-owner-uin、x-cos-vpc-id、x-cos-subnet-id、x-cos-zone、x-cos-creation-date 等键读取桶状态与网络信息 | dict |
桶存在且有权限返回200;无权限返回403;不存在返回404。
错误码
实际案例
# -*- coding=utf-8 -*-import osfrom qcloud_cos import CosConfig, CosS3Clientfrom qcloud_cos.cos_exception import CosServiceError# 高性能桶经 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'# 桶存在且有权限时返回响应头字典;无权限或不存在时抛出 CosServiceError。try:resp = client.head_bucket(Bucket=bucket)print('bucket status: %s' % resp.get('x-cos-bucket-status'))except CosServiceError as e:print('HeadBucket failed, status: %s, code: %s' % (e.get_status_code(), e.get_error_code()))