接口文档
最近更新时间: 2024-10-17 17:10: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',
'VesionId': '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、VesionId | 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/<OwnerUin>:uin/<SubUin> |
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/<OwnerUin>:uin/<SubUin> |
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 地址