Skip to content

NetEase-Object-Storage/nos-python-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NOS Python SDK

NOS Python SDK实现了NOS对象操作接口,基于此SDK能方便快速地实现Python应用程序来使用NOS的对象存储服务。

支持的功能

对象操作接口

  • Delete Object —— 删除一个对象
  • Delete Multiple Objects —— 用一个HTTP请求删除同一个Bucket中的多个对象
  • Get Object —— 读取对象内容
  • Head Object —— 获取对象相关元数据信息
  • List Objects —— 获取一个桶的对象列表
  • Put Object —— 上传一个对象
  • Put Object - Copy —— 拷贝一个对象
  • Put Object - Move —— 桶内部move一个对象

大对象分块操作接口

  • Initiate Multipart Upload —— 初始化分块上传
  • Upload Part —— 上传一个分块
  • Complete Multipart Upload —— 完成分块上传
  • Abort Multipart Upload —— 取消分块上传并删除已上传的分块
  • List Parts —— 列出已上传的分块
  • List Multipart Uploads —— 列出所有执行中的分块上传事件

接口实现

在调用对象操作接口前需要生成一个nos.Client类的实例。且在调用操作接口时,都有可能抛出异常,可以使用`nos.exceptions.ServiceException`捕获nos服务器异常错误,使用`nos.exceptions.ClientException`捕获nos客户端异常错误。

nos.Client对象实例化

使用举例

client = nos.Client(
    access_key_id="string",
    access_key_secret="string",
    transport_class=nos.transport.Transport,
    **kwargs
)

参数说明

  • access_key_id(string) -- 访问凭证ID。当需要访问的桶属性为Public-read时,可以将该值设置成None。默认值为:None。
  • access_key_secret(string) -- 访问凭证密钥。当需要访问的桶属性为Public-read时,可以将该值设置成None。默认值为:None。
  • transport_class(class) -- 与NOS服务器进行数据传输的类型,类型中至少需要包含`perform_request`成员函数。默认值为:nos.transport.Transport。
  • kwargs -- 其他可选参数,如下。
    • end_point(string) -- 与NOS服务器进行数据传输、交互的服务器的主域名。默认为:nos-eastchina1.126.net。
    • num_pools(integer) -- HTTP连接池的大小。默认值为:16。
    • timeout(integer) -- 连接超时的时间,单位:秒。
    • max_retries(integer) -- 当得到HTTP 5XX的服务器错误的响应时,进行重试的次数。默认值为:2。
    • retry_backoff_factor(float) -- 重试指数退避因子,多次重试之间的时间间隔为:retry_backoff_factor * (2** 已重试次数) 秒。例如,当设置为0.1时,重试的时间间隔为[0.1s, 0.2s, 0.4s, ...]。默认值为: 0.0。
    • enable_ssl(boolean) -- 与NOS服务器进行数据传输、交互时,是否使用HTTPS。默认值为:False,默认使用HTTP。

nos.Client可能引发的所有异常类型

在程序运行过程中,如果遇到错误,Python SDK会抛出相应的异常。所有异常均属于NOSException类,其下分为两个子类:ClientException、ServiceException。在调用Python SDK接口的时候,捕捉这些异常并打印必要的信息有利于定位问题。

ClientException

ClientException包含SDK客户端的异常。比如,上传对象时对象名为空,就会抛出该异常。 ClientException类下有如下子类,用于细分客户端异常:

类名 抛出异常的原因
InvalidBucketName 传入的桶名为空
InvalidObjectName 传入的对象名为空
FileOpenModeError 出入的对象为文件且没有使用二进制文件方式打开
XmlParseError 解析服务端响应的XML内容失败
SerializationError 上传对象序列化失败
ConnectionError 连接服务端异常
ConnectionTimeout 连接服务端超时

ServiceException

ServiceException包含NOS服务器返回的异常。当NOS服务器返回4xx或5xx的HTTP错误码时,Python SDK会将NOS Server的响应转换为ServiceException。 ServiceException类下有如下子类,用于细分NOS服务器返回的异常:

类名 抛出异常的原因
MultiObjectDeleteException 批量删除对象时,存在部分对象无法删除
BadRequestError 服务端返回HTTP 400响应
ForbiddenError 服务端返回HTTP 403响应
NotFoundError 服务端返回HTTP 404响应
MethodNotAllowedError 服务端返回HTTP 405响应
ConflictError 服务端返回HTTP 409响应
LengthRequiredError 服务端返回HTTP 411响应
RequestedRangeNotSatisfiableError 服务端返回HTTP 416响应
InternalServerErrorError 服务端返回HTTP 500响应
NotImplementedError 服务端返回HTTP 501响应
ServiceUnavailableError 服务端返回HTTP 503响应

nos.Client的使用和异常处理的示例代码

try:
   resp = client.XXX(
       bucket=bucket,
       key=key
   )
except nos.exceptions.ServiceException as e:
   print (
       'ServiceException: %s\n'
       'status_code: %s\n'
       'error_type: %s\n'
       'error_code: %s\n'
       'request_id: %s\n'
       'message: %s\n'
   ) % (
       e,
       e.status_code,  # 错误http状态码
       e.error_type,   # NOS服务器定义错误类型
       e.error_code,   # NOS服务器定义错误码
       e.request_id,   # 请求ID,有利于nos开发人员跟踪异常请求的错误原因
       e.message       # 错误描述信息
   )
except nos.exceptions.ClientException as e:
   print (
       'ClientException: %s\n'
       'message: %s\n'
   ) % (
       e,
       e.message       # 客户端错误信息
   )

对象操作接口

Delete Object

使用举例

resp = client.delete_object(
    bucket="string",
    key="string"
)

参数说明

  • bucket(string) -- 桶名。
  • key(string) -- 对象名。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240"
}

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的ID号。

Delete Multiple Objects

使用举例

resp = client.delete_objects(
    bucket="string",
    keys=[
        "string1",
        "string2",
        ...
    ],
    quiet=True|False
)

参数说明

  • bucket(string) -- 桶名。
  • objects(list) -- 待删除的对象名称列表。
  • quiet(boolean) -- 是否开启安静模式(安静模式不显示具体删除信息)。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240",
    "response": xml.etree.ElementTree()    # xml.etree.ElementTree类型对象
}

返回值的`response`的字符形式可能如下:

<?xml version="1.0" encoding="UTF-8"?>
<DeleteResult>
    <Deleted>
            <Key>1.jpg</Key>
    </Deleted>
    <Error>
            <Key>2.jpg</Key>
            <Code>AccessDenied</Code>
            <Message>Access Denied</Message>
    </Error>
    <Error>
            <Key>3.jpg</Key>
            <Code>NoSuchKey</Code>
            <Message>No Such Key</Message>
    </Error>
</DeleteResult>

注意:下列各项通过xml.etree.ElementTree的成员函数获取具体值时,得到的均为字符串;目前标注的类型为原类型名称,需自行转换。

Element 描述
DeleteResult
多重删除的响应容器元素
类型:容器
Deleted
已被成功删除的容器元素
类型:容器
父节点:DeleteResult
Key
已删除的对象键值
类型:字符串
父节点:Deleted,Error
VersionId
已删除的对象版本号
类型:数字
父节点:Deleted,Error
Error
删除失败的对象版本号
类型:容器
父节点:DeleteResult
Code
删除失败返回的错误码
类型:字符串
父节点:Error
Message
删除失败返回的详细错误描述
类型:字符串
父节点:Error

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的ID号。
  • response(xml.etree.ElementTree) -- 包含返回信息的xml对象。

Get Object

使用举例

resp = client.get_object(
    bucket="string",
    key="string",
    **kwargs
)

参数说明

  • bucket(string) -- 桶名。
  • key(string) -- 对象名。
  • kwargs -- 其他可选参数,如下。
    • range(string) -- 下载指定的数据块,Range Header参考RFC2616。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240",
    "content_length": 1024,
    "content_range": "0-1024/234564",
    "content_type": "application/octet-stream;charset=UTF-8",
    "etag": "3adbbad1791fbae3ec908894c4963870",
    "body": StreamingBody()
}

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的ID号。
  • content_length(integer) -- 返回的数据块的字节数。
  • content_range(string) -- 返回的数据块的范围。
  • content_type(string) -- 返回的数据块的类型。
  • etag(string) -- 对象的哈希值,反应对象内容的更改情况。
  • body(StreamingBody) -- 对象数据。

Head Object

使用举例

resp = client.head_object(
    bucket="string",
    key="string"
)

参数说明

  • bucket(string) -- 桶名。
  • key(string) -- 对象名。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240",
    "content_length": 1024,
    "content_type": "application/octet-stream;charset=UTF-8",
    "etag": "3adbbad1791fbae3ec908894c4963870",
    "last_modified": "Mon, 23 May 2016 16:07:15 Asia/Shanghai"
}

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的ID号。
  • content_length(integer) -- 返回的数据块的字节数。
  • content_type(string) -- 返回的数据块的类型。
  • etag(string) -- 对象的哈希值,反应对象内容的更改情况。
  • last_modified(string) -- 最近一次修改对象的时间。

List Objects

使用举例

resp = client.list_objects(
    bucket="string",
    **kwargs
)

参数说明

  • bucket(string) -- 桶名。
  • kwargs -- 其他可选参数。
    • delimiter(string) -- 分界符,用于做groupby操作。
    • marker(string) -- 字典序的起始标记,只列出该标记之后的部分。
    • limit(integer) -- 限定返回的数量,返回的结果小于或等于该值。取值范围:0-1000,默认:100
    • prefix(string) -- 只返回Key以特定前缀开头的那些对象。可以使用前缀把一个桶里面的对象分成不同的组,类似文件系统的目录一样。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240",
    "response": xml.etree.ElementTree()    # xml.etree.ElementTree类型对象
}

返回值的`response`的字符形式可能如下:

<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://doc.nos.netease.com/2012-03-01">
    <Name>dream</Name>
    <Prefix>user</Prefix>
    <MaxKeys>2</MaxKeys>
    <NextMarker>user/yao</NextMarker>
    <IsTruncated>true</IsTruncated>
    <Contents>
            <Key>user/lin</Key>
            <LastModified>2012-01-01T12:00:00.000Z</LastModified>
            <Etag>258ef3fdfa96f00ad9f27c383fc9acce</ Etag>
            <Size>143663</Size>
            <StorageClass>Standard</StorageClass>
    </Contents>
    <Contents>
            <Key>user/yao</Key>
            <LastModified>2012-01-01T12:00:00.000Z</LastModified>
            < Etag>828ef3fdfa96f00ad9f27c383fc9ac7f</ Etag>
            <Size>423983</Size>
            <StorageClass>Standard</StorageClass>
    </Contents>
</ListBucketResult>

注意:下列各项通过xml.etree.ElementTree的成员函数获取具体值时,得到的均为字符串;目前标注的类型为原类型名称,需自行转换。

元素 描述
Contents
对象元数据,代表一个对象描述
类型:容器
父节点:ListBucketObjects
子节点:Key,LastModified,Size,Etag
CommonPrefixes
只有当指定了delimiter分界符时,才会有这个响应
类型:字符串
父节点:ListBucketObjects
delimiter
分界符
类型:字符串
父节点:ListBucketObjects
DisplayName
对象的拥有者
类型:字符串
父节点:ListBucketObjects.Contents.Owner
Etag
对象的哈希描述
类型:字符串
父节点:ListBucketObjects.Contents
ID
对象拥有者的ID
类型:字符串
父节点:ListBucketObjects.Contents.Owner
IsTruncated
是否截断,如果因为设置了limit导致不是所有的数据集都返回,则该值设置为true
类型:布尔值
父节点:ListBucketObjects
Key
对象的名称
类型:字符串
父节点:ListBucketObjects.Contents
LastModified
对象最后修改日期和时间
类型:日期 格式:yyyy-MM-dd"T"HH:mm:ss.SSSZ
父节点:ListBucketObjects.Contents
Marker
列表的起始位置,等于请求参数设置的Marker值
类型:字符串
父节点:ListBucketObjects
NextMark
下一次分页的起点
类型:字符串
父节点:ListBucketObjects
MaxKeys
请求的对象个数限制
类型:数字
父节点:ListBucketObjects
Name
请求的桶名称
类型:字符串
父节点:ListBucketObjects
Owner
桶拥有者
类型:容器
父节点:ListBucketObjects.contents | CommonPrefixes
子节点:DisplayName|ID
Prefix
请求的对象的Key的前缀
类型:字符串
父节点:ListBucketObjects
Size
对象的大小字节数
类型:数字
父节点:ListBucketObjects.contents
StorageClasss
存储级别
类型:字符串
父节点:ListBucketObjects.contents

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的ID号。
  • response(xml.etree.ElementTree) -- 包含返回信息的xml对象。

Put Object

使用举例

resp = client.put_object(
    bucket="string",
    key="string",
    body=serializable_object,
    **kwargs
)

参数说明

  • bucket(string) -- 桶名。
  • key(string) -- 对象名。
  • body(serializable_object) -- 对象内容,可以是文件句柄、字符串、字典等任何可序列化的对象。
  • kwargs -- 其他可选参数。
    • meta_data(dict) -- 用户自定义的元数据,通过键值对的形式上报,键名和值均为字符串,且键名需以`x-nos-meta-`开头。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240",
    "etag": "fbacf535f27731c9771645a39863328"
}

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的id号。
  • etag(string) -- 对象的哈希值,反应对象内容的更改情况。

Put Object - Copy

使用举例

resp = client.copy_object(
    src_bucket="string",
    src_key="string",
    dest_bucket="string",
    dest_key="string"
)

参数说明

  • src_bucket(string) -- 来源对象的桶名。
  • src_key(string) -- 来源对象的对象名。
  • dest_bucket(string) -- 目标对象的桶名。
  • dest_key(string) -- 目标对象的对象名。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240"
}

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的ID号。

Move Object

使用举例

resp = client.move_object(
    src_bucket="string",
    src_key="string",
    dest_bucket="string",
    dest_key="string"
)

参数说明

  • src_bucket(string) -- 来源对象的桶名。
  • src_key(string) -- 来源对象的对象名。
  • dest_bucket(string) -- 目标对象的桶名。
  • dest_key(string) -- 目标对象的对象名。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240"
}

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的ID号。

Initiate Multipart Upload

使用举例

resp = client.create_multipart_upload(
    bucket="string",
    key="string",
    **kwargs
)

参数说明

  • bucket(string) -- 桶名。
  • key(string) -- 对象名。
  • kwargs -- 其他可选参数。
    • meta_data(dict) -- 用户自定义的元数据,通过键值对的形式上报,键名和值均为字符串,且键名需以`x-nos-meta-`开头。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240",
    "response": xml.etree.ElementTree()    # xml.etree.ElementTree类型对象
}

返回值的`response`的字符形式可能如下:

<?xml version="1.0" encoding="UTF-8"?>
<InitiateMultipartUploadResult>
    <Bucket>filestation</Bucket>
    <Key>movie.avi</Key>
    <UploadId>VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3S5tMnRzIHVwbG9hZA</UploadId>
</InitiateMultipartUploadResult>

注意:下列各项通过xml.etree.ElementTree的成员函数获取具体值时,得到的均为字符串;目前标注的类型为原类型名称,需自行转换。

元素 描述
InitiateMultipartUploadResult
响应容器元素
类型:容器
子节点:Key,Bucket
Key
对象的Key
类型:字符串
父节点:InitiateMultipartUploadResult
Bucket
对象的桶
类型:字符串
父节点:InitiateMultipartUploadResult
UploadId
分块上传的ID,用这个ID来作为各块属于这个文件的标识
类型:字符串
父节点:InitiateMultipartUploadResult

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的id号。
  • response(xml.etree.ElementTree) -- 包含返回信息的xml对象。

Upload Part

使用举例

resp = client.upload_part(
    bucket="string",
    key="string",
    part_num=2,
    upload_id="string",
    body=serializable_object
)

参数说明

  • bucket(string) -- 桶名。
  • key(string) -- 对象名。
  • part_num(integer) -- 数据分块编码号(1-10000)。
  • upload_id(string) -- 数据上传标识号。
  • body(serializable_object) -- 对象内容,可以是文件句柄、字符串、字典等任何可序列化的对象。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240",
    "etag": "fbacf535f27731c9771645a39863328"
}

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的id号。
  • etag(string) -- 对象的哈希值,反应对象内容的更改情况。

Complete Multipart Upload

在将所有数据Part都上传完成后,必须调用Complete Multipart Upload API来完成整个文件的Multipart Upload。在执行该操作时,用户必须提供所有有效的数据Part的列表(包括part号码和ETAG);NOS收到用户提交的Part列表后,会逐一验证每个数据Part的有效性。当所有的数据Part验证通过后,NOS将把这些数据part组合成一个完整的Object。 使用x-nos-Object-md5扩展头发送对象的MD5值,用作去重库的建立(Put Object使用Content-MD5建立对象去重库)。

使用举例

resp = client.complete_multipart_upload(
    bucket="string",
    key="string",
    upload_id="string",
    info=[
        {
            "part_num": 1,
            "etag": "string"
        },
        {
            "part_num": 2,
            "etag": "string"
        },
        ...
    ],
    **kwargs
)

参数说明

  • bucket(string) -- 桶名。
  • key(string) -- 对象名。
  • upload_id(string) -- 数据上传标识号。
  • info(list) -- 所有有效的数据Part的列表(包括part号码和etag)
  • kwargs -- 其他可选参数,如下。
    • object_md5(string) -- 发送对象的md5值,用于后续去重。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240",
    "response": xml.etree.ElementTree()    # xml.etree.ElementTree类型对象
}

返回值的`response`的字符形式可能如下:

<?xml version="1.0" encoding="UTF-8"?>
<CompleteMultipartUploadResult xmlns="">
    <Location> filestation.nos.netease.com/movie.avi</Location>
    <Bucket>filestation </Bucket>
    <Key>movie.avi </Key>
    <ETag>"3858f62230ac3c915f300c664312c11f-9"</ETag>
</CompleteMultipartUploadResult>

注意:下列各项通过xml.etree.ElementTree的成员函数获取具体值时,得到的均为字符串;目前标注的类型为原类型名称,需自行转换。

元素 描述
Bucket
新创建对象所在的桶
类型:字符串
父节点:CompleteMultipartUploadResult
CompleteMultipartUploadResult
响应容器元素
类型:容器
子节点:Location,Bucket,Key,ETag
ETag
新创建的对象的Entity Tag
类型:字符串
父节点:CompleteMultipartUploadResult
Key
新创建对象的Key
类型:字符串
父节点:CompleteMultipartUploadResult
Location
新创建的这个对象的资源定位URL
类型:字符串
父节点:CompleteMultipartUploadResult

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的ID号。
  • response(xml.etree.ElementTree) -- 包含返回信息的xml对象。

Abort Multipart Upload

使用举例

resp = client.abort_multipart_upload(
    bucket="string",
    key="string",
    upload_id="string"
)

参数说明

  • bucket(string) -- 桶名。
  • key(string) -- 对象名。
  • upload_id(string) -- 数据上传标识号。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240"
}

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的ID号。

List Parts

使用举例

resp = client.list_parts(
    bucket="string",
    key="string",
    upload_id="string",
    **kwargs
)

参数说明

  • bucket(string) -- 桶名。
  • key(string) -- 对象名。
  • upload_id(string) -- 数据上传标识号。
  • kwargs -- 其他可选参数,如下。
    • limit(integer) -- 限制响应中返回的记录个数。取值范围:0-1000,默认1000。
    • part_number_marker(string) -- 分块号的界限,只有更大的分块号会被列出来。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240",
    "response": xml.etree.ElementTree()    # xml.etree.ElementTree类型对象
}

返回值的`response`的字符形式可能如下:

<?xml version="1.0" encoding="UTF-8"?>
<ListPartsResult xmlns=" ">
    <Bucket>example-Bucket</Bucket>
    <Key>example-Object</Key>
    <UploadId>23r54i252358235332523f23 </UploadId>
    <Owner>
            <ID>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
            <DisplayName>someName</DisplayName>
    </Owner>
    <StorageClass>STANDARD</StorageClass>
    <PartNumberMarker>1</PartNumberMarker>
    <NextPartNumberMarker>3</NextPartNumberMarker>
    <MaxParts>2</MaxParts>
    <IsTruncated>true</IsTruncated>
    <Part>
            <PartNumber>2</PartNumber>
            <LastModified>2010-11-10T20:48:34.000Z</LastModified>
            <ETag>"7778aef83f66abc1fa1e8477f296d394"</ETag>
            <Size>10485760</Size>
    </Part>
    <Part>
            <PartNumber>3</PartNumber>
            <LastModified>2010-11-10T20:48:33.000Z</LastModified>
            <ETag>"aaaa18db4cc2f85cedef654fccc4a4x8"</ETag>
            <Size>10485760</Size>
    </Part>
</ListPartsResult>

注意:下列各项通过xml.etree.ElementTree的成员函数获取具体值时,得到的均为字符串;目前标注的类型为原类型名称,需自行转换。

元素 描述
ListPartsResult
列出已上传块信息
类型:容器
子节点:Bucket、Key、UploadId、Owner、StorageClass、PartNumberMarker、NextPartNumberMarker、MaxParts, IsTruncated、Part
Bucket
桶的名称
类型: String
父节点: ListPartsResult
Key
对象的Key
类型: String
父节点: ListPartsResult
UploadId
分块上传操作的ID
类型: String
父节点: ListPartsResult
ID
对象拥有者的ID
类型: String
父节点: Owner
DisplayName
对象的拥有者.
类型: String
父节点: Owner
Owner
桶拥有者的信息
子节点:ID, DisplayName
类型: 容器
父节点: ListPartsResult
StorageClass
存储级别.
类型: String
父节点: ListPartsResult
PartNumberMarker
上次List操作后的Part number
类型: Integer
父节点: ListPartsResult
NextPartNumberMarker
作为后续List操作的part-number-marker
类型: Integer
父节点: ListPartsResult
MaxParts
响应允许返回的的最大part数目
类型: Integer
父节点: ListPartsResult
IsTruncated
是否截断,如果因为设置了limit导致不是所有的数据集都返回了,则该值设置为true
类型: Boolean
父节点: ListPartsResult
Part
列出相关part信息
子节点:PartNumber, LastModified, ETag, Size
类型: String
父节点: ListPartsResult
PartNumber
识别特定part的一串数字
类型: Integer
父节点: Part
LastModified
该part上传的时间
类型: Date
父节点: Part
ETag
当该part被上传时返回
类型: String
父节点: Part
Size
已上传的 part数据的大小.
类型: Integer
父节点: Part

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的ID号。
  • response(xml.etree.ElementTree) -- 包含返回信息的xml对象。

List Multipart Uploads

使用举例:

resp = client.list_multipart_uploads(
    bucket="string",
    **kwargs
)

参数说明

  • bucket(string) -- 桶名。
  • kwargs -- 其他可选参数,如下。
    • limit(integer) -- 限制响应中返回的记录个数。取值范围:0-1000,默认1000。
    • key_marker(string) -- 指定某一uploads key,只有大于该key-marker的才会被列出。

返回值举例

{
    "x_nos_request_id": "17b21e42ac11000001390ab891440240",
    "response": xml.etree.ElementTree()    # xml.etree.ElementTree类型对象
}

返回值的`response`的字符形式可能如下:

<?xml version="1.0" encoding="UTF-8"?>
<ListMultipartUploadsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Bucket>Bucket</Bucket>
    <NextKeyMarker>my-movie.m2ts</NextKeyMarker>
    <Upload>
        <Key>my-divisor</Key>
        <UploadId>XMgbGlrZSBlbHZpbmcncyBub3QgaGF2aW5nIG11Y2ggbHVjaw</UploadId>
        <Owner>
            <ID>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
            <DisplayName>OwnerDisplayName</DisplayName>
        </Owner>
        <StorageClass>STANDARD</StorageClass>
    </Upload>
    <Upload>
        <Key>my-movie.m2ts</Key>
        <UploadId>VXBsb2FkIElEIGZvciBlbHZpbcyBteS1tb3ZpZS5tMnRzIHVwbG9hZA</UploadId>
        <Owner>
            <ID>b1d16700c70b0b05597d7acd6a3f92be</ID>
            <DisplayName>OwnerDisplayName</DisplayName>
        </Owner>
        <StorageClass>STANDARD</StorageClass>
    </Upload>
</ListMultipartUploadsResult>

注意:下列各项通过xml.etree.ElementTree的成员函数获取具体值时,得到的均为字符串;目前标注的类型为原类型名称,需自行转换。

元素 描述
ListMultipartUploadsResult
响应容器元素
类型:容器
子节点:Bucket,KeyMarker,Upload,NextKeyMarker, owner
Bucket
对象的桶
类型:字符串
父节点:ListMultipartUploadsResult
NextKeyMarker
作为后续查询的key-marker
类型:String
父节点:ListMultipartUploadsResult
IsTruncated
是否截断,如果因为设置了limit导致不是所有的数据集都返回了,则该值设置为true
类型:Boolean
父节点: ListMultipartUploadsResult
Upload
类型:容器
子节点:Key,UploadId
父节点:ListMultipartUploadsResult
Key
对象的Key
类型:字符串
父节点:Upload
UploadId
分块上传操作的ID
类型String
父节点:Upload
ID
对象拥有者的ID
类型: String
父节点: Owner
DisplayName
对象的拥有者
类型: String
父节点: Owner
Owner
桶拥有者的信息
类型:容器
子节点:DisplayName|ID
父节点:Upload
StorageClass
存储级别
类型: String
父节点: Upload
Initiated
该分块上传操作被初始化的时间
类型:Date
父节点: Upload
ListMultipartUploadsResult.Prefix
当请求中包含了prefix参数时,响应中会填充这一prefix
类型:String
父节点: ListMultipartUploadsResult

返回值说明 返回值为字典类型

  • x_nos_request_id(string) -- 唯一定位一个请求的ID号。
  • response(xml.etree.ElementTree) -- 包含返回信息的xml对象。