接口文档
最近更新时间: 2025-02-18 16:02:00
存储桶操作
简介
本文档提供关于存储桶的基本操作和访问控制列表(ACL)的相关 API 概览以及 SDK 示例代码。
基本操作
API | 操作名 | 操作描述 |
---|---|---|
PUT Bucket | 创建存储桶 | 在指定账号下创建一个存储桶 |
HEAD Bucket | 检索存储桶及其权限 | 检索存储桶是否存在且是否有权限访问 |
DELETE Bucket | 删除存储桶 | 删除指定账号下的空存储桶 |
访问控制列表
API | 操作名 | 操作描述 |
---|---|---|
PUT Bucket acl | 设置存储桶 ACL | 设置指定存储桶访问权限控制列表 |
GET Bucket acl | 查询存储桶 ACL | 查询存储桶的访问控制列表 |
基本操作
创建存储桶
功能说明
在指定账号下创建一个存储桶(PUT Bucket)。
方法原型
create_bucket(Bucket, **kwargs)
请求示例
response = client.create_bucket(
Bucket='examplebucket-1250000000',
ACL='private'|'public-read'|'public-read-write',
GrantFullControl='string',
GrantRead='string',
GrantWrite='string'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 待创建的存储桶名称,由 BucketName-APPID 构成 | String | 是 |
ACL | 设置存储桶的 ACL,例如 'private','public-read','public-read-write' | String | 否 |
GrantFullControl | 赋予指定账户对存储桶的读写权限,格式为`id="OwnerUin"` | String | 否 |
GrantRead | 赋予指定账户对存储桶的读权限,格式为`id="OwnerUin"` | String | 否 |
GrantWrite | 赋予指定账户对存储桶的写权限,格式为`id="OwnerUin"` | String | 否 |
返回结果说明
该方法返回值为 None。
检索存储桶及其权限
功能说明
检索存储桶是否存在且是否有权限访问(HEAD Bucket)。
方法原型
head_bucket(Bucket)
请求示例
response = client.head_bucket(
Bucket='examplebucket-1250000000'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 待查询的存储桶名称,由 BucketName-APPID 构成 | String | 是 |
返回结果说明
该方法返回值为 None。
删除存储桶
功能说明
删除指定账号下的空存储桶(DELETE Bucket)。
方法原型
delete_bucket(Bucket)
请求示例
response = client.delete_bucket(
Bucket='examplebucket-1250000000'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 待删除的存储桶名称,由 BucketName-APPID 构成 | String | 是 |
返回结果说明
该方法返回值为 None。
访问控制列表
设置存储桶 ACL
功能说明
设置指定存储桶的访问权限控制列表(PUT Bucket acl)。AccessControlPolicy 参数与其它权限参数是互斥的,无法同时指定。
方法原型
put_bucket_acl(Bucket, AccessControlPolicy={}, **kwargs)
请求示例
response = client.put_bucket_acl(
Bucket='examplebucket-1250000000',
ACL='private'|'public-read'|'public-read-write',
GrantFullControl='string',
GrantRead='string',
GrantWrite='string',
AccessControlPolicy={
'AccessControlList': {
'Grant': [
{
'Grantee': {
'DisplayName': 'string',
'Type': 'CanonicalUser'|'Group',
'ID': 'string',
'URI': 'string'
},
'Permission': 'FULL_CONTROL'|'WRITE'|'READ'
},
]
},
'Owner': {
'DisplayName': 'string',
'ID': 'string'
}
}
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
ACL | 设置存储桶的 ACL,例如 'private','public-read','public-read-write' | String | 否 |
GrantFullControl | 赋予指定账户对存储桶的读写权限,格式为`id="OwnerUin"` | String | 否 |
GrantRead | 赋予指定账户对存储桶的读权限,格式为`id="OwnerUin"` | String | 否 |
GrantWrite | 赋予指定账户对存储桶的写权限,格式为`id="OwnerUin"` | String | 否 |
AccessControlPolicy | 赋予指定账户对存储桶的访问权限,具体格式见 GET Bucket acl 返回结果说明 | Dict | 否 |
返回结果说明
该方法返回值为 None。
查询存储桶 ACL
功能说明
查询指定存储桶的访问权限控制列表(GET Bucket acl)。
方法原型
get_bucket_acl(Bucket, **kwargs)
请求示例
response = client.get_bucket_acl(
Bucket='examplebucket-1250000000',
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | Bucket 名称,由 BucketName-APPID 构成 | String | 是 |
返回结果说明
Bucket ACL 信息,类型为 dict。
{
'Owner': {
'DisplayName': 'string',
'ID': 'string'
},
'Grant': [
{
'Grantee': {
'DisplayName': 'string',
'Type': 'CanonicalUser'|'Group',
'ID': 'string',
'URI': 'string'
},
'Permission': 'FULL_CONTROL'|'WRITE'|'READ'
},
]
}
参数名称 | 参数描述 | 类型 |
---|---|---|
Owner | 存储桶拥有者的信息,包括 DisplayName 和 ID | Dict |
Grant | 存储桶权限授予者的信息,包括 Grantee 和 Permission | List |
Grantee | 权限授予者的信息,包括 DisplayName,Type,ID 和 URI | Dict |
DisplayName | 权限授予者的名字 | String |
Type | 权限授予者的类型,类型为 CanonicalUser 或者 Group | String |
ID | Type 为 CanonicalUser 时,对应权限授予者的 ID | String |
URI | Type 为 Group 时,对应权限授予者的 URI | String |
Permission | 授予者所拥有的存储桶的权限,可选值有 FULL_CONTROL,WRITE,READ,分别对应读写权限、写权限、读权限 | String |
对象操作
简介
本文档提供关于对象的简单操作、分块操作等其他操作相关的 API 概览以及 SDK 示例代码。
简单操作
API | 操作名 | 操作描述 |
---|---|---|
GET Bucket(List Object) | 查询对象列表 | 查询存储桶下的部分或者全部对象 |
GET Bucket Object Versions | 查询对象及其历史版本列表 | 查询存储桶下的部分或者全部对象及其历史版本信息 |
PUT Object | 简单上传对象 | 上传一个对象至存储桶 |
HEAD Object | 查询对象元数据 | 查询对象的元数据信息 |
GET Object | 下载对象 | 下载一个对象至本地 |
PUT Object - Copy | 设置对象复制 | 复制对象到目标路径 |
DELETE Object | 删除单个对象 | 在存储桶中删除指定对象 |
DELETE Multiple Objects | 删除多个对象 | 在存储桶中批量删除指定对象 |
分块操作
API | 操作名 | 操作描述 |
---|---|---|
List Multipart Uploads | 查询分块上传 | 查询正在进行中的分块上传信息 |
Initiate Multipart Upload | 初始化分块上传 | 初始化分块上传任务 |
Upload Part | 上传分块 | 分块上传文件 |
Upload Part - Copy | 复制分块 | 将其他对象复制为一个分块 |
List Parts | 查询已上传块 | 查询特定分块上传操作中的已上传的块 |
Complete Multipart Upload | 完成分块上传 | 完成整个文件的分块上传 |
Abort Multipart Upload | 终止分块上传 | 终止一个分块上传操作并删除已上传的块 |
其他操作
API | 操作名 | 操作描述 |
---|---|---|
PUT Object acl | 设置对象 ACL | 设置存储桶中某个对象的访问控制列表 |
GET Object acl | 查询对象 ACL | 查询存储桶中某个对象的访问控制列表 |
简单操作
查询对象列表
功能说明
查询存储桶下的部分或者全部对象。
方法原型
list_objects(Bucket, Delimiter="", Marker="", MaxKeys=1000, Prefix="", EncodingType="", **kwargs)
请求示例
response = client.list_objects(
Bucket='examplebucket-1250000000',
Prefix='string'
)
全部参数请求示例
response = client.list_objects(
Bucket='examplebucket-1250000000',
Prefix='string',
Delimiter='/',
Marker='string',
MaxKeys=100,
EncodingType='url'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Prefix | 默认为空,对对象的对象键进行筛选,匹配 prefix 为前缀的对象 | String | 否 |
Delimiter | 默认为空,设置分隔符,例如设置`/`来模拟文件夹 | String | 否 |
Marker | 默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的起点位置 | String | 否 |
MaxKeys | 最多返回的对象数量,默认为最大的1000 | Int | 否 |
EncodingType | 默认不编码,规定返回值的编码方式,可选值:url | String | 否 |
返回结果说明
获取对象的元信息,类型为 dict:
{
'MaxKeys': '1000',
'Prefix': 'string',
'Delimiter': 'string',
'Marker': 'string',
'NextMarker': 'string',
'Name': 'examplebucket-1250000000',
'IsTruncated': 'false'|'true',
'EncodingType': 'url',
'Contents':[
{
'ETag': '"a5b2e1cfb08d10f6523f7e6fbf3643d5"',
'StorageClass': 'STANDARD',
'Key': 'exampleobject',
'Owner': {
'DisplayName': '1250000000',
'ID': '1250000000'
},
'LastModified': '2017-08-08T09:43:35.000Z',
'Size': '23'
},
],
'CommonPrefixes':[
{
'Prefix': 'string'
},
],
}
参数名称 | 参数描述 | 类型 |
---|---|---|
MaxKeys | 最多返回的对象数量,默认为最大的1000 | String |
Prefix | 默认为空,匹配 Prefix 为前缀的对象 | String |
Delimiter | 默认为空,设置分隔符,例如设置`/`来模拟文件夹 | String |
Marker | 默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的起点位置 | String |
NextMarker | 当 IsTruncated 为 true 时,标记下一次返回对象的 list 的起点位置 | String |
Name | 存储桶名称,由 BucketName-APPID 构成 | String |
IsTruncated | 表示返回的对象否被截断 | String |
EncodingType | 默认不编码,规定返回值的编码方式,可选值:url | String |
Contents | 包含所有对象元数据的 list,包括 'ETag','StorageClass','Key','Owner','LastModified','Size' 等信息 | List |
CommonPrefixes | 所有以 Prefix 开头,以 Delimiter 结尾的对象被归到同一类 | List |
查询对象及其历史版本列表
功能说明
查询存储桶下的部分或者全部对象及其历史版本信息。
方法原型
list_objects_versions(Bucket, Prefix="", Delimiter="", KeyMarker="", VersionIdMarker="", MaxKeys=1000, EncodingType="", **kwargs)
请求示例
response = client.list_objects_versions(
Bucket='examplebucket-1250000000',
Prefix='string'
)
全部参数请求示例
response = client.list_objects_versions(
Bucket='examplebucket-1250000000',
Prefix='string',
Delimiter='/',
KeyMarker='string',
VersionIdMarker='string',
MaxKeys=100,
EncodingType='url'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Prefix | 默认为空,对对象的对象键进行筛选,匹配 prefix 为前缀的对象 | String | 否 |
Delimiter | 默认为空,设置分隔符,例如设置`/`来模拟文件夹 | String | 否 |
KeyMarker | 默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的 Key 的起点位置 | String | 否 |
VersionIdMarker | 默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的 VersionId 的起点位置 | String | 否 |
MaxKeys | 最多返回的对象数量,默认为最大的1000 | Int | 否 |
EncodingType | 默认不编码,规定返回值的编码方式,可选值:url | String | 否 |
返回结果说明
获取对象的元信息,类型为 dict:
{
'MaxKeys': '1000',
'Prefix': 'string',
'Delimiter': 'string',
'KeyMarker': 'string',
'VersionIdMarker': 'string',
'NextMarker': 'string',
'NextVersionIdMarker': 'string',
'Name': 'examplebucket-1250000000',
'IsTruncated': 'false'|'true',
'EncodingType': 'url',
'Version':[
{
'ETag': '"a5b2e1cfb08d10f6523f7e6fbf3643d5"',
'StorageClass': 'STANDARD',
'Key': 'exampleobject',
'VersionId': 'string',
'IsLatest': 'true'|'false',
'Owner': {
'DisplayName': '1250000000',
'ID': '1250000000'
},
'LastModified': '2017-08-08T09:43:35.000Z',
'Size': '23'
},
],
'DeleteMarker': [
{
'Key': 'exampleobject',
'VersionId': 'string',
'IsLatest': 'true'|'false',
'Owner': {
'DisplayName': '1250000000',
'ID': '1250000000'
},
'LastModified': '2017-08-08T09:43:35.000Z'
},
],
'CommonPrefixes':[
{
'Prefix': 'string'
},
],
}
参数名称 | 参数描述 | 类型 |
---|---|---|
MaxKeys | 最多返回的对象数量,默认为最大的1000 | String |
Prefix | 默认为空,匹配 Prefix 为前缀的对象 | String |
Delimiter | 默认为空,设置分隔符,例如设置`/`来模拟文件夹 | String |
KeyMarker | 默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的 Key 的起点位置 | String |
VersionIdMarker | 默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的 VersionId 的起点位置 | String |
NextMarker | 当 IsTruncated 为 true 时,标记下一次返回对象的 list 的 Key 的起点位置 | String |
NextVersionIdMarker | 当 IsTruncated 为 true 时,标记下一次返回对象的 list 的 VersionId 的起点位置 | String |
Name | 存储桶名称,由 BucketName-APPID 构成 | String |
IsTruncated | 表示返回的对象否被截断 | String |
EncodingType | 默认不编码,规定返回值的编码方式,可选值:url | String |
Version | 包含所有多个版本对象元数据的 list,包括 'ETag','StorageClass','Key','VersionId','IsLatest','Owner','LastModified','Size' 等信息 | List |
DeleteMarker | 包含所有delete marker 对象元数据的 list,包括 'Key','VersionId','IsLatest','Owner','LastModified' 等信息 | List |
CommonPrefixes | 所有以 Prefix 开头,以 Delimiter 结尾的对象被归到同一类 | List |
简单上传对象
功能说明
上传一个对象至存储桶(PUT Object)。
方法原型
put_object(Bucket, Body, Key, **kwargs)
请求示例
response = client.put_object(
Bucket='examplebucket-1250000000',
Body=b'bytes'|file,
Key='exampleobject',
EnableMD5=False
)
全部参数请求示例
response = client.put_object(
Bucket='examplebucket-1250000000',
Body=b'bytes'|file,
Key='exampleobject',
EnableMD5=False|True,
ACL='private'|'public-read', # 请慎用此参数,否则会达到1000条 ACL 上限
GrantFullControl='string',
GrantRead='string',
StorageClass='STANDARD',
Expires='string',
CacheControl='string',
ContentType='string',
ContentDisposition='string',
ContentEncoding='string',
ContentLanguage='string',
ContentLength='123',
ContentMD5='string',
Metadata={
'x-cos-meta-key1': 'value1',
'x-cos-meta-key2': 'value2'
}
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Body | 上传对象的内容,可以为文件流或字节流 | file/bytes | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
EnableMD5 | 是否需要 SDK 计算 Content-MD5,默认关闭,打开后将增加上传耗时 | Bool | 否 |
ACL | 设置对象的 ACL,例如 'private','public-read' | String | 否 |
GrantFullControl | 赋予被授权者所有的权限,格式为`id="OwnerUin"` | String | 否 |
GrantRead | 赋予被授权者读的权限,格式为`id="OwnerUin"` | String | 否 |
StorageClass | 设置对象的存储类型,默认值 STANDARD | String | 否 |
Expires | 设置 Expires | String | 否 |
CacheControl | 缓存策略,设置 Cache-Control | String | 否 |
ContentType | 内容类型,设置 Content-Type | String | 否 |
ContentDisposition | 对象名称,设置 Content-Disposition | String | 否 |
ContentEncoding | 编码格式,设置 Content-Encoding | String | 否 |
ContentLanguage | 语言类型,设置 Content-Language | String | 否 |
ContentLength | 设置传输长度 | String | 否 |
ContentMD5 | 设置上传对象的 MD5 值用于校验 | String | 否 |
Metadata | 用户自定义的对象元数据, 必须以 x-cos-meta 开头,否则会被忽略 | Dict | 否 |
返回结果说明
上传对象的属性,类型为 dict:
{
'ETag': 'string',
'x-cos-version-id': 'string'
}
参数名称 | 参数描述 | 类型 |
---|---|---|
ETag | 上传对象的 MD5 值 | String |
x-cos-version-id | 开启版本控制后,对象的版本号 | String |
查询对象元数据
功能说明
查询对象的元数据信息(HEAD Object)。
方法原型
head_object(Bucket, Key, **kwargs)
请求示例
response = client.head_object(
Bucket='examplebucket-1250000000',
Key='exampleobject',
VersionId='string',
IfModifiedSince='Wed, 28 Oct 2014 20:30:00 GMT',
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | Bucket 名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
VersionId | 开启版本控制后,指定对象的具体版本 | String | 否 |
IfModifiedSince | 在指定时间后被修改才返回,时间格式为 GMT | String | 否 |
返回结果说明
获取对象的元信息,类型为 dict:
{
'ETag': '"9a4802d5c99dafe1c04da0a8e7e166bf"',
'Last-Modified': 'Wed, 28 Oct 2014 20:30:00 GMT',
'Cache-Control': 'max-age=1000000',
'Content-Type': 'application/octet-stream',
'Content-Disposition': 'attachment; filename="filename.jpg"',
'Content-Encoding': 'gzip',
'Content-Language': 'zh-cn',
'Content-Length': '16807',
'Expires': 'Wed, 28 Oct 2019 20:30:00 GMT',
'x-cos-meta-test': 'test',
'x-cos-version-id': 'MTg0NDUxODMzMTMwMDM2Njc1ODA',
'x-cos-request-id': 'NTg3NzQ3ZmVfYmRjMzVfMzE5N182NzczMQ=='
}
参数名称 | 参数描述 | 类型 |
---|---|---|
ETag | 对象的 MD5 值 | String |
Last-Modified | 对象最后修改时间 | String |
Cache-Control | 缓存策略, HTTP 标准头部 | String |
Content-Type | 内容类型,HTTP 标准头部 | String |
Content-Disposition | 文件名称,HTTP 标准头部 | String |
Content-Encoding | 编码格式,HTTP 标准头部 | String |
Content-Language | 语言类型,HTTP 标准头部 | String |
Content-Length | 对象大小 | String |
Expires | 缓存过期时间, HTTP 标准头部 | String |
x-cos-meta-* | 用户自定义的对象元数据, 必须以 x-cos-meta 开头,否则会被忽略 | String |
x-cos-version-id | 开启版本控制后,对象的版本号 | String |
下载对象
功能说明
下载一个对象到本地(GET Object)。
方法原型
get_object(Bucket, Key, **kwargs)
请求示例
response = client.get_object(
Bucket='examplebucket-1250000000',
Key='exampleobject',
Range='string',
IfMatch='"9a4802d5c99dafe1c04da0a8e7e166bf"',
IfModifiedSince='Wed, 28 Oct 2014 20:30:00 GMT',
IfNoneMatch='"9a4802d5c99dafe1c04da0a8e7e166bf"',
IfUnmodifiedSince='Wed, 28 Oct 2014 20:30:00 GMT',
ResponseCacheControl='string',
ResponseContentDisposition='string',
ResponseContentEncoding='string',
ResponseContentLanguage='string',
ResponseContentType='string',
ResponseExpires='string',
VersionId='string'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
Range | 设置下载对象的范围,格式为 bytes=first-last | String | 否 |
IfMatch | ETag 与指定的内容一致时才返回 | String | 否 |
IfModifiedSince | 在指定时间后被修改才返回,时间格式为 GMT | String | 否 |
IfNoneMatch | ETag 与指定的内容不一致才返回 | String | 否 |
IfUnmodifiedSince | 对象修改时间早于或等于指定时间才返回,时间格式为 GMT | String | 否 |
ResponseCacheControl | 设置响应头部 Cache-Control | String | 否 |
ResponseContentDisposition | 设置响应头部 Content-Disposition | String | 否 |
ResponseContentEncoding | 设置响应头部 Content-Encoding | String | 否 |
ResponseContentLanguage | 设置响应头部 Content-Language | String | 否 |
ResponseContentType | 设置响应头部 Content-Type | String | 否 |
ResponseExpires | 设置响应头部 Expires | String | 否 |
VersionId | 指定下载对象的版本 | String | 否 |
返回结果说明
下载对象的 Body 和元信息,类型为 dict:
{
'Body': StreamBody(),
'ETag': '"9a4802d5c99dafe1c04da0a8e7e166bf"',
'Last-Modified': 'Wed, 28 Oct 2014 20:30:00 GMT',
'Accept-Ranges': 'bytes',
'Content-Range': 'bytes 0-16086/16087',
'Cache-Control': 'max-age=1000000',
'Content-Type': 'application/octet-stream',
'Content-Disposition': 'attachment; filename="filename.jpg"',
'Content-Encoding': 'gzip',
'Content-Language': 'zh-cn',
'Content-Length': '16807',
'Expires': 'Wed, 28 Oct 2019 20:30:00 GMT',
'x-cos-meta-test': 'test',
'x-cos-version-id': 'MTg0NDUxODMzMTMwMDM2Njc1ODA',
'x-cos-request-id': 'NTg3NzQ3ZmVfYmRjMzVfMzE5N182NzczMQ=='
}
参数名称 | 参数描述 | 类型 |
---|---|---|
Body | 下载对象的内容,get_raw_stream() 方法可以得到一个文件流,get_stream_to_file(local_file_path) 方法可以将对象内容下载到指定本地文件中 | StreamBody |
ETag | 对象的 MD5 值 | String |
Last-Modified | 对象最后修改时间 | String |
Accept-Ranges | 范围单位, HTTP 标准头部 | String |
Content-Range | 内容范围, HTTP 标准头部 | String |
Cache-Control | 缓存策略, HTTP 标准头部 | String |
Content-Type | 内容类型,HTTP 标准头部 | String |
Content-Disposition | 文件名称,HTTP 标准头部 | String |
Content-Encoding | 编码格式,HTTP 标准头部 | String |
Content-Language | 语言类型,HTTP 标准头部 | String |
Content-Length | 对象大小 | String |
Expires | 缓存过期时间, HTTP 标准头部 | String |
x-cos-meta-* | 用户自定义的对象元数据, 必须以 x-cos-meta 开头,否则会被忽略 | String |
x-cos-version-id | 开启版本控制后,对象的版本号 | String |
设置对象复制
功能说明
复制文件到目标路径(PUT Object - Copy)。
方法原型
copy_object(Bucket, Key, CopySource, CopyStatus='Copy', **kwargs)
请求示例
response = client.copy_object(
Bucket='examplebucket-1250000000',
Key='exampleobject',
CopySource={
'Bucket': 'examplebucket-1250000000',
'Key': 'exampleobject',
'Endpoint': 'example.endpoint',
'VersionId': 'string'
},
CopyStatus='Copy'|'Replaced',
ACL='private'|'public-read',
GrantFullControl='string',
GrantRead='string',
StorageClass='STANDARD',
Expires='string',
CacheControl='string',
ContentType='string',
ContentDisposition='string',
ContentEncoding='string',
ContentLanguage='string',
Metadata={
'x-cos-meta-key1': 'value1',
'x-cos-meta-key2': 'value2'
}
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
CopySource | 描述拷贝源对象的路径,包含 Bucket、Key、Endpoint、VersionId | Dict | 是 |
CopyStatus | 可选值为 'Copy','Replaced',设置为 'Copy' 时,忽略设置的用户元数据信息直接复制,设置为 'Replaced' 时,按设置的元信息修改元数据,当目标路径和源路径一样时,必须设置为 'Replaced' | String | 是 |
ACL | 设置对象的ACL,如 'private','public-read' | String | 否 |
GrantFullControl | 赋予指定账户对对象的所有权限,格式为`id="OwnerUin"` | String | 否 |
GrantRead | 赋予指定账户对对象的读权限,格式为`id="OwnerUin"` | String | 否 |
StorageClass | 设置对象的存储类型,默认值 STANDARD | String | 否 |
Expires | 设置 Expires | String | 否 |
CacheControl | 缓存策略,设置 Cache-Control | String | 否 |
ContentType | 内容类型,设置 Content-Type | String | 否 |
ContentDisposition | 文件名称,设置 Content-Disposition | String | 否 |
ContentEncoding | 编码格式,设置 Content-Encoding | String | 否 |
ContentLanguage | 语言类型,设置 Content-Language | String | 否 |
Metadata | 用户自定义的对象元数据 | Dict | 否 |
返回结果说明
上传对象的属性,类型为 dict:
{
'ETag': 'string',
'LastModified': 'string',
'VersionId': 'string',
'x-cos-copy-source-version-id': 'string'
}
参数名称 | 参数描述 | 类型 |
---|---|---|
ETag | 拷贝对象的 MD5 值 | String |
LastModified | 拷贝对象的最后一次修改时间 | String |
VersionId | 开启版本控制后,目的对象的版本号 | String |
x-cos-copy-source-version-id | 源对象的版本号 | String |
删除单个对象
功能说明
删除指定的对象(DELETE Object)。
方法原型
delete_object(Bucket, Key, **kwargs)
请求示例
response = client.delete_object(
Bucket='examplebucket-1250000000',
Key='exampleobject',
VersionId='string',
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
VersionId | 开启版本控制后,指定对象的具体版本 | String | 否 |
返回结果说明
删除对象的信息,类型为dict。
{
'x-cos-version-id': 'string',
'x-cos-delete-marker': 'true'|'false',
}
参数名称 | 参数描述 | 类型 |
---|---|---|
x-cos-version-id | 删除对象的版本号 | String |
x-cos-delete-marker | 标识删除的对象是否为delete marker | String |
删除多个对象
功能说明
删除多个指定的对象(DELETE Multiple Objects)。
方法原型
delete_objects(Bucket, Delete={}, **kwargs)
请求示例
response = client.delete_objects(
Bucket='examplebucket-1250000000',
Delete={
'Object': [
{
'Key': 'exampleobject1',
'VersionId': 'string'
},
{
'Key': 'exampleobject2',
'VersionId': 'string'
},
],
'Quiet': 'true'|'false'
}
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | Bucket 名称,由 BucketName-APPID 构成 | String | 是 |
Delete | 说明本次删除的返回结果方式和目标 Object | Dict | 是 |
Object | 说明每个将要删除的目标 Object 信息 | List | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 否 |
VersionId | 开启版本控制后,目的对象的版本号 | String | |
Quiet | 指明删除的返回结果方式,可选值为 'true','false',默认为 'false'。设置为 'true' 只返回失败的错误信息,设置为 'false' 时返回成功和失败的所有信息 | String | 否 |
返回结果说明
批量删除对象的结果,类型为 dict:
{
'Deleted': [
{
'Key': 'string',
'VersionId': 'string',
'DeleteMarker': 'true'|'false',
'DeleteMarkerVersionId': 'string'
},
{
'Key': 'string',
},
],
'Error': [
{
'Key': 'string',
'VersionId': 'string',
'Code': 'string',
'Message': 'string'
},
]
}
参数名称 | 参数描述 | 类型 |
---|---|---|
Deleted | 删除成功的 Object 信息 | List |
Key | 删除成功的 Object 的路径 | String |
VersionId | 删除成功的 Object 的版本号 | String |
DeleteMarker | 删除成功的 Object 是否为 delete marker | String |
DeleteMarkerVersionId | 删除成功的 Object 的 delete marker 的版本号 | String |
Error | 删除失败的 Object 信息 | List |
Key | 删除失败的 Object 的路径 | String |
VersionId | 删除失败的 Object 的版本号 | String |
Code | 删除失败的 Object 对应的错误码 | String |
Message | 删除失败的 Object 对应的错误信息 | String |
分块操作
分块上传对象可包括的操作:
- 分块上传对象:初始化分块上传,上传分块,完成所有分块上传。
- 分块续传:查询已上传的分块,上传分块,完成所有分块上传。
- 删除已上传分块。
查询分块上传
功能说明
查询指定存储桶正在进行中的分块上传信息(List Multipart Uploads)。
方法原型
list_multipart_uploads(Bucket, Prefix="", Delimiter="", KeyMarker="", UploadIdMarker="", MaxUploads=1000, EncodingType="", **kwargs)
请求示例
response = client.list_multipart_uploads(
Bucket='examplebucket-1250000000',
Prefix='string',
Delimiter='string',
KeyMarker='string',
UploadIdMarker='string',
MaxUploads=100,
EncodingType='url'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Prefix | 默认为空,对分块上传的 key 进行筛选,匹配 prefix 为前缀的分块上传 | String | 否 |
Delimiter | 默认为空,设置分隔符 | String | 否 |
KeyMarker | 和 UploadIdMarker 一起使用,指明列出分块上传的起始位置 | String | 否 |
UploadIdMarker | 和 KeyMarker 一起使用,指明列出分块上传的起始位置。如果未指定 KeyMarker,UploadIdMarker 将被忽略 | String | 否 |
MaxUploads | 最多返回的分块上传的数量,默认为最大的1000 | Int | 否 |
EncodingType | 默认不编码,规定返回值的编码方式,可选值:url | String | 否 |
返回结果说明
获取分块上传的信息,类型为 dict:
{
'Bucket': 'examplebucket-1250000000',
'Prefix': 'string',
'Delimiter': 'string',
'KeyMarker': 'string',
'UploadIdMarker': 'string',
'NextKeyMarker': 'string',
'NextUploadIdMarker': 'string',
'MaxUploads': '1000',
'IsTruncated': 'true'|'false',,
'EncodingType': 'url',
'Upload':[
{
'UploadId': 'string',
'Key': 'string',
'Initiated': 'string',
'StorageClass': 'STANDARD',
'Owner': {
'DisplayName': 'string',
'ID': 'string'
},
'Initiator': {
'ID': 'string',
'DisplayName': 'string'
}
},
],
'CommonPrefixes':[
{
'Prefix': 'string'
},
],
}
参数名称 | 参数描述 | 类型 |
---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String |
Prefix | 默认为空,对分块上传的 key 进行筛选,匹配 prefix 为前缀的分块上传 | String |
Delimiter | 默认为空,设置分隔符 | String |
KeyMarker | 和 UploadIdMarker 一起使用,指明列出分块上传的 key 起始位置 | String |
UploadIdMarker | 和 KeyMarker 一起使用,指明列出分块上传的 uploadid 起始位置。如果未指定 KeyMarker,UploadIdMarker 将被忽略 | String |
NextKeyMarker | 当 IsTruncated 为 true 时,指明下一次列出分块上传的 key 的起始位置 | String |
NextUploadIdMarker | 当 IsTruncated 为 true 时,指明下一次列出分块上传的 uploadid 的起始位置 | String |
MaxUploads | 最多返回的分块上传的数量,默认为最大的1000 | Int |
IsTruncated | 表示返回的分块上传否被截断 | String |
EncodingType | 默认不编码,规定返回值的编码方式,可选值:url | String |
Upload | 包含所有分块上传的 list,包括 'UploadId','StorageClass','Key','Owner','Initiator','Initiated' 等信息 | List |
CommonPrefixes | 所有以 Prefix 开头,以 Delimiter 结尾的 Key 被归到同一类 | List |
初始化分块上传
功能说明
初始化分块上传,获取对应的 uploadId(Initiate Multipart Upload)。
方法原型
create_multipart_upload(Bucket, Key, **kwargs):
请求示例
response = client.create_multipart_upload(
Bucket='examplebucket-1250000000',
Key='multipart.txt',
StorageClass='STANDARD',
Expires='string',
CacheControl='string',
ContentType='string',
ContentDisposition='string',
ContentEncoding='string',
ContentLanguage='string',
Metadata={
'x-cos-meta-key1': 'value1',
'x-cos-meta-key2': 'value2'
},
ACL='private'|'public-read',
GrantFullControl='string',
GrantRead='string'
)
# 获取UploadId供后续接口使用
uploadid = response['UploadId']
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | Bucket 名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
StorageClass | 设置对象的存储类型,默认值 STANDARD | String | 否 |
Expires | 设置 Expires | String | 否 |
CacheControl | 缓存策略,设置 Cache-Control | String | 否 |
ContentType | 内容类型,设置 Content-Type | String | 否 |
ContentDisposition | 文件名称,设置 Content-Disposition | String | 否 |
ContentEncoding | 编码格式,设置 Content-Encoding | String | 否 |
ContentLanguage | 语言类型,设置 Content-Language | String | 否 |
Metadata | 用户自定义的对象元数据 | Dict | 否 |
ACL | 设置对象的 ACL,例如 'private','public-read' | String | 否 |
GrantFullControl | 赋予被授权者所有的权限,格式为`id="OwnerUin"` | String | 否 |
GrantRead | 赋予被授权者读的权限,格式为`id="OwnerUin"` | String | 否 |
返回结果说明
获取分块上传的初始化信息,类型为 dict:
{
'UploadId': '150219101333cecfd6718d0caea1e2738401f93aa531a4be7a2afee0f8828416f3278e5570',
'Bucket': 'examplebucket-1250000000',
'Key': 'exampleobject'
}
参数名称 | 参数描述 | 类型 |
---|---|---|
UploadId | 标识分块上传的 ID | String |
Bucket | 存储桶名称,由 BucketName-APPID 组成 | String |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String |
上传分块
分块上传对象(Upload Part)。
方法原型
upload_part(Bucket, Key, Body, PartNumber, UploadId, **kwargs)
请求示例
# 注意,上传分块的块数最多10000块
response = client.upload_part(
Bucket='examplebucket-1250000000',
Key='exampleobject',
Body=b'bytes'|file,
PartNumber=1,
UploadId='string',
EnableMD5=False|True,
ContentLength='123',
ContentMD5='string'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | Bucket 名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
Body | 上传分块的内容,可以为本地文件流或输入流 | file/bytes | 是 |
PartNumber | 标识上传分块的序号 | Int | 是 |
UploadId | 标识分块上传的 ID | String | 是 |
EnableMD5 | 是否需要 SDK 计算 Content-MD5,默认关闭,打开后会增加上传耗时 | Bool | 否 |
ContentLength | 设置传输长度 | String | 否 |
ContentMD5 | 设置上传对象的 MD5 值用于校验 | String | 否 |
返回结果说明
上传分块的属性,类型为 dict:
{
'ETag': 'string'
}
参数名称 | 参数描述 | 类型 |
---|---|---|
ETag | 上传分块的 MD5 值。 | String |
复制分块
将其他对象复制为一个分块(Upload Part - Copy)。
方法原型
upload_part_copy(Bucket, Key, PartNumber, UploadId, CopySource, CopySourceRange='', **kwargs)
请求示例
response = client.upload_part_copy(
Bucket='examplebucket-1250000000',
Key='exampleobject',
PartNumber=100,
UploadId='string',
CopySource={
'Bucket': 'examplebucket-1250000000',
'Key': 'exampleobject',
'Endpoint': 'example.endpoint',
'VersionId': 'string'
},
CopySourceRange='string',
CopySourceIfMatch='string',
CopySourceIfModifiedSince='string',
CopySourceIfNoneMatch='string',
CopySourceIfUnmodifiedSince='string'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
PartNumber | 标识上传分块的序号 | Int | 是 |
UploadId | 标识分块上传的 ID | String | 是 |
CopySource | 描述拷贝源对象的路径,包含 Bucket、Key、Endpoint、VersionId | Dict | 是 |
CopySourceRange | 描述拷贝源对象的范围,格式为 bytes=first-last。不指定时,默认拷贝整个源对象 | String | 否 |
CopySourceIfMatch | 源对象的 Etag 与给定的值相同时才拷贝 | String | 否 |
CopySourceIfModifiedSince | 源对象在给定的时间后被修改相才拷贝 | String | 否 |
CopySourceIfNoneMatch | 源对象的 Etag 与给定的值不相同时才拷贝 | String | 否 |
CopySourceIfUnmodifiedSince | 源对象在给定的时间后没有修改相才拷贝 | String | 否 |
返回结果说明
复制分块的属性,类型为 dict:
{
'ETag': 'string',
'LastModified': 'string',
'x-cos-copy-source-version-id': 'string',
}
参数名称 | 参数描述 | 类型 |
---|---|---|
ETag | 拷贝分块的 MD5 值 | String |
LastModified | 拷贝分块的最后一次修改时间 | String |
x-cos-copy-source-version-id | 源对象的版本号 | String |
查询已上传块
功能说明
查询特定分块上传操作中的已上传的块(List Parts)。
方法原型
list_parts(Bucket, Key, UploadId, MaxParts=1000, PartNumberMarker=0, EncodingType='', **kwargs)
请求示例
response = client.list_parts(
Bucket='examplebucket-1250000000',
Key='exampleobject',
UploadId=uploadid,
MaxParts=1000,
PartNumberMarker=100,
EncodingType='url'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
UploadId | 标识分块上传的 ID | String | 是 |
MaxParts | 最多返回的分块的数量,默认为最大的1000 | Int | 否 |
PartNumberMarker | 默认为0,从第一块列出分块,从 PartNumberMarker 下一个分块开始列出 | Int | 否 |
EncodingType | 默认不编码,规定返回值的编码方式,可选值:url | String | 否 |
返回结果说明
所有上传分块的信息,类型为 dict:
{
'Bucket': 'examplebucket-1250000000',
'Key': 'exampleobject',
'UploadId': '1502192444bdb382add546a35b2eeab81e06ed84086ca0bb75ea45ca7fa073fa9cf74ec4f2',
'EncodingType': None,
'MaxParts': '1000',
'IsTruncated': 'true',
'PartNumberMarker': '0',
'NextPartNumberMarker': '1000',
'StorageClass': 'Standard',
'Part': [
{
'LastModified': '2017-08-08T11:40:48.000Z',
'PartNumber': '1',
'ETag': '"8b8378787c0925f42ccb829f6cc2fb97"',
'Size': '10485760'
},
],
'Initiator': {
'DisplayName': '3333333333',
'ID': 'qcs::cam::uin/3333333333:uin/3333333333'
},
'Owner': {
'DisplayName': '124564654654',
'ID': '124564654654'
}
}
参数名称 | 参数描述 | 类型 |
---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String |
UploadId | 标识分块上传的 ID | String |
EncodingType | 默认不编码,规定返回值的编码方式,可选值:url | String |
MaxParts | 最多返回的分块的数量,默认为最大的1000 | String |
IsTruncated | 表示返回的分块是否被截断 | String |
PartNumberMarker | 默认为0,从第一块列出分块,从 PartNumberMarker 下一个分块开始列出 | String |
NextPartNumberMarker | 指明下一次列出分块的起始位置 | String |
StorageClass | 对象的存储类型,默认值 STANDARD | String |
Part | 上传分块的相关信息,包括 ETag,PartNumber,Size,LastModified | String |
Initiator | 分块上传的创建者,包括 DisplayName 和 ID | Dict |
Owner | 对象拥有者的信息,包括 DisplayName 和 ID | Dict |
完成分块上传
功能说明
完成整个对象的分块上传(Complete Multipart Upload)。
方法原型
complete_multipart_upload(Bucket, Key, UploadId, MultipartUpload={}, **kwargs)
请求示例
response = client.complete_multipart_upload(
Bucket='examplebucket-1250000000',
Key='exampleobject',
UploadId=uploadid,
MultipartUpload={
'Part': [
{
'ETag': 'string',
'PartNumber': 1
},
{
'ETag': 'string',
'PartNumber': 2
},
]
},
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | Bucket 名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
UploadId | 标识分块上传的 ID | String | 是 |
MultipartUpload | 所有分块的 ETag 和 PartNumber 信息 | Dict | 是 |
返回结果说明
组装后的对象的相关信息,类型为 dict:
{
'ETag': '"3f866d0050f044750423e0a4104fa8cf-2"',
'Bucket': 'examplebucket-1250000000',
'Location': 'examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/exampleobject',
'Key': 'exampleobject'
}
参数名称 | 参数描述 | 类型 |
---|---|---|
ETag | 合并后对象的唯一标签值,该值不是对象内容的 MD5 校验值,仅能用于检查对象唯一性。如需校验对象内容,可以在上传过程中校验单个分块的ETag值。 | String |
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String |
Location | URL 地址 | String |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String |
终止分块上传
功能说明
终止一个分块上传操作并删除已上传的块(Abort Multipart Upload)。
方法原型
abort_multipart_upload(Bucket, Key, UploadId, **kwargs)
请求示例
response = client.abort_multipart_upload(
Bucket='examplebucket-1250000000',
Key='exampleobject',
UploadId=uploadid
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
UploadId | 标识分块上传的 ID | String | 是 |
返回结果说明
该方法返回值为 None。
其他操作
设置对象 ACL
功能说明
设置存储桶中某个对象的访问控制列表(PUT Object acl)。AccessControlPolicy 参数与其它权限参数是互斥的,无法同时指定。
方法原型
put_object_acl(Bucket, Key, AccessControlPolicy={}, **kwargs)
请求示例
response = client.put_object_acl(
Bucket='examplebucket-1250000000',
Key='exampleobject',
ACL='private'|'public-read',
GrantFullControl='string',
GrantRead='string',
AccessControlPolicy={
'AccessControlList': {
'Grant': [
{
'Grantee': {
'DisplayName': 'string',
'Type': 'CanonicalUser'|'Group',
'ID': 'string',
'URI': 'string'
},
'Permission': 'FULL_CONTROL'|'WRITE'|'READ'
},
]
},
'Owner': {
'DisplayName': 'string',
'ID': 'string'
}
}
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
ACL | 设置对象的 ACL,例如 'private','public-read' | String | 否 |
GrantFullControl | 赋予指定账户对对象的所有权限,格式为`id="OwnerUin"` | String | 否 |
GrantRead | 赋予指定账户对对象的读权限,格式为`id="OwnerUin"` | String | 否 |
AccessControlPolicy | 赋予指定账户对对象的访问权限,具体格式见 GET Object acl 返回结果说明 | Dict | 否 |
返回结果说明
该方法返回值为 None。
查询对象 ACL
功能说明
查询对象的访问控制列表(GET Object acl)。
方法原型
get_object_acl(Bucket, Key, **kwargs)
请求示例
response = client.get_object_acl(
Bucket='examplebucket-1250000000',
Key='exampleobject'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
返回结果说明
Bucket ACL 信息,类型为 Dict:
{
'Owner': {
'DisplayName': 'string',
'ID': 'string'
},
'Grant': [
{
'Grantee': {
'DisplayName': 'string',
'Type': 'CanonicalUser'|'Group',
'ID': 'string',
'URI': 'string'
},
'Permission': 'FULL_CONTROL'|'WRITE'|'READ'
},
]
}
参数名称 | 参数描述 | 类型 |
---|---|---|
Owner | 对象拥有者的信息,包括 DisplayName 和 ID | Dict |
Grant | 对象权限授予者的信息,包括 Grantee 和 Permission | List |
Grantee | 对象权限授予者的信息,包括 DisplayName,Type,ID 和 URI | Dict |
DisplayName | 权限授予者的名字 | String |
Type | 权限授予者的类型,类型为 CanonicalUser 或者 Group | String |
ID | Type 为 CanonicalUser 时,对应权限授予者的 ID | String |
URI | Type 为 Group 时,对应权限授予者的 URI | String |
Permission | 授予者所拥有的对象的权限,可选值有 FULL_CONTROL,WRITE,READ,分别对应所有权限、写权限、读权限 | String |
高级接口(推荐)
上传对象(断点续传)
功能说明
该高级接口根据用户文件的长度自动选择简单上传以及分块上传,对于小于等于20M的文件调用简单上传,对于大于20MB的文件调用分块上传,对于分块上传未完成的文件会自动进行断点续传。
方法原型
upload_file(Bucket, Key, LocalFilePath, PartSize=1, MAXThread=5, **kwargs)
请求示例
response = client.upload_file(
Bucket='examplebucket-1250000000',
Key='exampleobject',
LocalFilePath='local.txt',
EnableMD5=False
)
全部参数请求示例
response = client.upload_file(
Bucket='examplebucket-1250000000',
Key='exampleobject',
LocalFilePath='local.txt',
PartSize=1,
MAXThread=5,
EnableMD5=False|True,
ACL='private'|'public-read', # 请慎用此参数,否则会达到1000条ACL上限
GrantFullControl='string',
GrantRead='string',
StorageClass='STANDARD',
Expires='string',
CacheControl='string',
ContentType='string',
ContentDisposition='string',
ContentEncoding='string',
ContentLanguage='string',
ContentLength='123',
ContentMD5='string',
Metadata={
'x-cos-meta-key1': 'value1',
'x-cos-meta-key2': 'value2'
}
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名`examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`中,对象键为 doc/pic.jpg | String | 是 |
LocalFilePath | 本地文件的路径名 | String | 是 |
PartSize | 分块上传的分块大小,默认为1MB | Int | 否 |
MAXThread | 分块上传的并发数量,默认为5个线程上传分块 | Int | 否 |
EnableMD5 | 是否需要 SDK 计算 Content-MD5,默认关闭,打开后会增加上传耗时 | Bool | 否 |
ACL | 设置对象的 ACL,例如 'private','public-read' | String | 否 |
GrantFullControl | 赋予被授权者所有的权限,格式为`id="OwnerUin"` | String | 否 |
GrantRead | 赋予被授权者读的权限,格式为`id="OwnerUin"` | String | 否 |
StorageClass | 设置对象的存储类型,默认值 STANDARD | String | 否 |
Expires | 设置 Expires | String | 否 |
CacheControl | 缓存策略,设置 Cache-Control | String | 否 |
ContentType | 内容类型,设置 Content-Type | String | 否 |
ContentDisposition | 文件名称,设置 Content-Disposition | String | 否 |
ContentEncoding | 编码格式,设置 Content-Encoding | String | 否 |
ContentLanguage | 语言类型,设置 Content-Language | String | 否 |
ContentLength | 设置传输长度 | String | 否 |
ContentMD5 | 设置上传对象的 MD5 值用于校验 | String | 否 |
Metadata | 用户自定义的对象元数据 | Dict | 否 |
返回结果说明
上传对象的属性,类型为 dict:
{
'ETag': 'string'
}
参数名称 | 参数描述 | 类型 |
---|---|---|
ETag | 上传对象的 MD5 值 | String |
存储桶管理
简介
本文档提供关于跨域访问、生命周期、版本控制和跨地域复制相关的 API 概览以及 SDK 示例代码。
跨域访问
API | 操作名 | 操作描述 |
---|---|---|
PUT Bucket cors | 设置跨域配置 | 设置存储桶的跨域访问权限 |
GET Bucket cors | 查询跨域配置 | 查询存储桶的跨域访问配置信息 |
DELETE Bucket cors | 删除跨域配置 | 删除存储桶的跨域访问配置信息 |
版本控制
API | 操作名 | 操作描述 |
---|---|---|
PUT Bucket versioning | 设置版本控制 | 设置存储桶的版本控制功能 |
GET Bucket versioning | 查询版本控制 | 查询存储桶的版本控制信息 |
跨地域复制
API | 操作名 | 操作描述 |
---|---|---|
PUT Bucket replication | 设置跨地域复制 | 设置存储桶的跨地域复制规则 |
GET Bucket replication | 查询跨地域复制 | 查询存储桶的跨地域复制规则 |
DELETE Bucket replication | 删除跨地域复制 | 删除存储桶的跨地域复制规则 |
跨域访问
设置跨域配置
功能说明
设置指定存储桶的跨域访问配置信息(PUT Bucket cors)。
方法原型
put_bucket_cors(Bucket, CORSConfiguration={}, **kwargs)
请求示例
response = client.put_bucket_cors(
Bucket='examplebucket-1250000000',
CORSConfiguration={
'CORSRule': [
{
'ID': 'string',
'MaxAgeSeconds': 100,
'AllowedOrigin': [
'string',
],
'AllowedMethod': [
'string',
],
'AllowedHeader': [
'string',
],
'ExposeHeader': [
'string',
]
}
]
},
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
CORSRule | 设置对应的跨域规则,包括 ID,MaxAgeSeconds,AllowedOrigin,AllowedMethod,AllowedHeader,ExposeHeader | List | 是 |
ID | 设置规则的 ID | String | 否 |
MaxAgeSeconds | 设置 OPTIONS 请求得到结果的有效期 | Int | 否 |
AllowedOrigin | 设置允许的访问来源,如 `"http://fincloud.tencent.cn"`,支持通配符`*` | Dict | 是 |
AllowedMethod | 设置允许的方法,如 GET,PUT,HEAD,POST,DELETE | Dict | 是 |
AllowedHeader | 设置请求可以使用哪些自定义的 HTTP 请求头部,支持通配符`*` | Dict | 否 |
ExposeHeader | 设置浏览器可以接收到的来自服务器端的自定义头部信息 | Dict | 否 |
返回结果说明
该方法返回值为 None。
查询跨域配置
功能说明
查询指定存储桶的跨域访问配置信息(GET Bucket cors)。
方法原型
get_bucket_cors(Bucket, **kwargs)
请求示例
response = client.get_bucket_cors(
Bucket='examplebucket-1250000000',
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
返回结果说明
存储桶跨域配置,类型为 dict。
{
'CORSRule': [
{
'ID': 'string',
'MaxAgeSeconds': 100,
'AllowedOrigin': [
'string',
],
'AllowedMethod': [
'string',
],
'AllowedHeader': [
'string',
],
'ExposeHeader': [
'string',
],
}
]
}
参数名称 | 参数描述 | 类型 |
---|---|---|
CORSRule | 跨域规则,包括 ID,MaxAgeSeconds,AllowedOrigin,AllowedMethod,AllowedHeader,ExposeHeader | List |
ID | 规则的 ID | String |
MaxAgeSeconds | OPTIONS 请求得到结果的有效期 | String |
AllowedOrigin | 允许的访问来源,如 `"http://fincloud.tencent.cn"`,支持通配符`*` | Dict |
AllowedMethod | 允许的方法,如 GET,PUT,HEAD,POST,DELETE | Dict |
AllowedHeader | 请求可以使用哪些自定义的 HTTP 请求头部,支持通配符`*` | Dict |
ExposeHeader | 浏览器可以接收到的来自服务器端的自定义头部信息 | Dict |
删除跨域配置
功能说明
删除指定存储桶的跨域访问配置(DELETE Bucket cors)。
方法原型
delete_bucket_cors(Bucket, **kwargs)
请求示例
response = client.delete_bucket_cors(
Bucket='examplebucket-1250000000',
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
返回结果说明
该方法返回值为 None。
版本控制
设置版本控制
功能说明
设置指定存储桶的版本控制功能(PUT Bucket versioning)。
方法原型
put_bucket_versioning(Bucket, Status, **kwargs)
请求示例
开启版本控制
response = client.put_bucket_versioning(
Bucket='examplebucket-1250000000',
Status='Enabled'
)
暂停版本控制
response = client.put_bucket_versioning(
Bucket='examplebucket-1250000000',
Status='Suspended'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Status | 设置存储桶版本控制的状态,可选值为 'Enabled', 'Suspended' | String | 是 |
返回结果说明
该方法返回值为 None。
查询版本控制
功能说明
查询指定存储桶的版本控制信息(GET Bucket versioning)。
方法原型
get_bucket_versioning(Bucket, **kwargs)
请求示例
response = client.get_bucket_versioning(
Bucket='examplebucket-1250000000',
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
返回结果说明
Bucket 版本控制配置,类型为 dict。
{
'Status': 'Enabled'|'Suspended'
}
参数名称 | 参数描述 | 类型 |
---|---|---|
Status | 存储桶版本控制的状态,可选值为 'Enabled',Suspended' | String |
跨地域复制
设置跨地域复制
功能说明
设置指定存储桶的跨地域复制规则(PUT Bucket replication)。
方法原型
put_bucket_replication(Bucket, ReplicationConfiguration={}, **kwargs)
请求示例
response = client.put_bucket_replication(
Bucket='examplebucket-1250000000',
ReplicationConfiguration={
'Role': 'qcs::cam::uin/100000000001:uin/100000000001',
'Rule': [
{
'ID': 'string',
'Status': 'Enabled'|'Disabled',
'Prefix': 'string',
'Destination': {
'Bucket': 'qcs::cos:ap-shanghai::examplebucket1-1250000000',
'StorageClass': 'STANDARD'
}
},
{
'ID': 'string',
'Status': 'Enabled'|'Disabled',
'Prefix': 'string',
'Destination': {
'Bucket': 'qcs::cos:ap-guangzhou::examplebucket2-1250000000',
'StorageClass': 'STANDARD'
}
},
]
}
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 源存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Role | 发起者身份标示, 格式为`qcs::cam::uin/:uin/` | String | 否 |
Rule | 设置对应的规则,包括 ID,Status,Prefix,Destination | List | 是 |
ID | 设置规则的 ID | String | 否 |
Status | 设置 Rule 是否启用,可选值为 Enabled 或者 Disabled | String | 是 |
Prefix | 设置 Rule 的前缀匹配规则,为空时表示作用存储桶中的所有对象 | String | 是 |
Destination | 描述目的资源,包括 Bucket 和StorageClass | Dict | 是 |
Bucket | 设置跨地域复制的目标存储桶,格式为`qcs::cos:[region]::[BucketName-APPID]` | String | 是 |
StorageClass | 设置目的文件的存储类型,可选值为 'STANDARD' | String | 否 |
返回结果说明
该方法返回值为 None。
查询跨地域复制
功能说明
查询指定存储桶的跨地域复制规则(GET Bucket replication)。
方法原型
get_bucket_replication(Bucket, **kwargs)
请求示例
response = client.get_bucket_replication(
Bucket='examplebucket-1250000000'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
返回结果说明
Bucket 跨地域复制配置,类型为 dict。
{
'Role': 'qcs::cam::uin/100000000001:uin/100000000001',
'Rule': [
{
'ID': 'string',
'Status': 'Enabled'|'Disabled',
'Prefix': 'string',
'Destination': {
'Bucket': 'qcs::cos:ap-shanghai::examplebucket1-1250000000',
'StorageClass': 'STANDARD'
}
},
{
'ID': 'string',
'Status': 'Enabled'|'Disabled',
'Prefix': 'string',
'Destination': {
'Bucket': 'qcs::cos:ap-guangzhou::examplebucket2-1250000000',
'StorageClass': 'STANDARD'
}
},
]
}
参数名称 | 参数描述 | 类型 |
---|---|---|
Role | 发起者身份标示, 格式为`qcs::cam::uin/:uin/` | String |
Rule | 跨地域复制对应的规则,包括 ID,Status,Prefix,Destination | List |
ID | 跨地域复制规则的 ID | String |
Status | 跨地域复制 Rule 是否启用,可选值为 Enabled 或者 Disabled | String |
Prefix | 跨地域复制 Rule 的前缀匹配规则,为空时表示作用存储桶中的所有对象 | String |
Destination | 描述目的资源,包括 Bucket 和 StorageClass | Dict |
Bucket | 跨地域复制的目标存储桶,格式为`qcs::cos:[region]::[BucketName-APPID]` | String |
StorageClass | 目的文件的存储类型,可选值为 'STANDARD' | String |
删除跨地域复制
功能说明
删除指定存储桶的跨地域复制规则(DELETE Bucket replication)。
方法原型
delete_bucket_replication(Bucket, **kwargs)
请求示例
response = client.delete_bucket_replication(
Bucket='examplebucket-1250000000',
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
返回结果说明
该方法返回值为 None。
预签名 URL
简介
Python SDK 提供获取签名,获取请求预签名 URL 接口以及获取对象下载预签名 URL 接口。使用永久密钥或临时密钥获取预签名 URL 的调用方法相同,使用临时密钥时需要在 header 或 query_string 中加上 x-cos-security-token。
获取签名
功能说明
获取指定操作的签名,常用于移动端的签名分发。
方法原型
get_auth(Method, Bucket, Key, Expired=300, Headers={}, Params={})
上传请求示例
response = client.get_auth(
Method='PUT',
Bucket='examplebucket-1250000000',
Key='exampleobject'
)
下载请求示例
response = client.get_auth(
Method='GET',
Bucket='examplebucket-1250000000',
Key='exampleobject'
)
全部参数请求示例
response = client.get_auth(
Method='PUT'|'POST'|'GET'|'DELETE'|'HEAD',
Bucket='examplebucket-1250000000',
Key='exampleobject',
Expired=300,
Headers={
'Content-Length': 'string',
'Content-MD5': 'string'
},
Params={
'param1': 'string',
'param2': 'string'
}
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Method | 对应操作的 Method, 可选值为 'PUT','POST','GET','DELETE','HEAD' | String | 是 |
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | Bucket 操作填入根路径`/`,object 操作填入文件的路径 | String | 是 |
Expired | 签名过期时间,单位为秒 | Int | 否 |
Headers | 需要签入签名的请求头部 | Dict | 否 |
Params | 需要签入签名的请求参数 | Dict | 否 |
返回结果说明
该方法返回值为对应操作的签名值。
获取预签名 URL
功能说明
获取预签名链接用于分发。
上传请求示例
response = client.get_presigned_url(
Method='PUT',
Bucket='examplebucket-1250000000',
Key='exampleobject'
)
下载请求示例
response = client.get_presigned_url(
Method='GET',
Bucket='examplebucket-1250000000',
Key='exampleobject'
)
方法原型
get_presigned_url(Bucket, Key, Method, Expired=300, Params={}, Headers={})
请求示例
response = client.get_presigned_url(
Bucket='examplebucket-1250000000',
Key='exampleobject',
Method='PUT'|'POST'|'GET'|'DELETE'|'HEAD',
Expired=300,
Headers={
'Content-Length': 'string',
'Content-MD5': 'string'
},
Params={
'param1': 'string',
'param2': 'string'
}
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 `examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg` 中,对象键为 doc/pic.jpg | String | 是 |
Method | 对应操作的 Method, 可选值为 'PUT','POST','GET','DELETE','HEAD' | String | 是 |
Expired | 签名过期时间,单位为秒 | Int | 否 |
Params | 签名中要签入的请求参数 | Dict | 否 |
Headers | 签名中要签入的请求头部 | Dict | 否 |
返回结果说明
该方法返回值为预签名的 URL。
获取预签名下载 URL
功能说明
获取预签名下载链接用于直接下载。
方法原型
get_presigned_download_url(Bucket, Key, Expired=300, Params={}, Headers={})
请求示例
response = client.get_presigned_download_url(
Bucket='examplebucket-1250000000',
Key='exampleobject'
)
参数说明
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
Bucket | 存储桶名称,由 BucketName-APPID 构成 | String | 是 |
Key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 `examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg` 中,对象键为 doc/pic.jpg | String | 是 |
Expired | 签名过期时间,单位为秒 | Int | 否 |
Params | 签名中要签入的请求参数 | Dict | 否 |
Headers | 签名中要签入的请求头部 | Dict | 否 |
返回结果说明
该方法返回值为预签名的下载 URL。
异常处理
简介
COS XML Python SDK 操作成功会返回一个 dict 或者 None。若调用 SDK 接口请求 COS 服务失败,系统将抛出 CosClientError(客户端异常)或者 CosServiceError (服务端异常)。
- CosClientError 是由于客户端无法和 COS 服务端正常进行交互所引起。如客户端无法连接到服务端,无法解析服务端返回的数据,读取本地文件发生 IO 异常等。
- CosServiceError 是客户端和 COS 服务端交互正常,但操作 COS 资源失败。如客户端访问一个不存在的存储桶,删除一个不存在的对象,没有权限进行某个操作等。
客户端异常
CosClientError 一般指如 timeout 引起的客户端错误,用户捕获后可以选择重试或其它操作。
服务端异常
CosServiceError 提供服务端返回的具体信息,包含了服务端返回的状态码、requestid 和出错明细等。捕获异常后,建议对整个异常进行打印,异常包含了必须的排查因素。以下是异常成员变量的描述以及异常捕获示例。
成员 | 描述 | 类型 |
---|---|---|
request_id | 请求 ID,用于唯一标识一个请求,对于排查问题十分重要 | string |
status_code | response 的 status 状态码 | string |
error_code | 请求失败时 body 返回的 Error Code | string |
error_msg | 请求失败时 body 返回的 Error Message | string |
异常捕获示例
from qcloud_cos import CosServiceError
except CosServiceError as e:
e.get_origin_msg() # 获取原始错误信息,格式为XML
e.get_digest_msg() # 获取处理过的错误信息,格式为dict
e.get_status_code() # 获取 http 错误码(如4XX,5XX)
e.get_error_code() # 获取 COS 定义的错误码
e.get_error_msg() # 获取 COS 错误码的具体描述
e.get_trace_id() # 获取请求的 trace_id
e.get_request_id() # 获取请求的 request_id
e.get_resource_location() # 获取 URL 地址