本文介绍如何初始化Python SDK。

使用Python SDK时,大部分操作都是通过oss2.Service和oss2.Bucket两个类进行。

  • oss2.Service类用于列举存储空间。
  • oss2.Bucket类用于上传、下载、删除文件以及对存储空间进行各种配置。

初始化oss2.Service和oss2.Bucket两个类时,需要指定Endpoint。其中oss2.Service类不支持自定义域名访问。关于Endpoint的更多信息,请参见访问域名和数据中心自定义访问域名

初始化oss2.Service类

具体操作,请参见列举存储空间

初始化oss2.Bucket类

  • 使用OSS域名初始化

    以下代码用于使用OSS域名初始化。

    # -*- coding: utf-8 -*-
    import oss2
    
    # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
    
    # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    endpoint = 'yourEndpoint'
    
    # 填写Bucket名称。
    bucket = oss2.Bucket(auth, endpoint, 'examplebucket')                    
  • 使用自定义域名初始化

    以下代码用于使用自定义域名初始化。

    # -*- coding: utf-8 -*-
    import oss2
    
    # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
    
    # 填写自定义域名,例如example.com。
    cname = 'http://example.com'
    
    # 填写Bucket名称,并设置is_cname=True来开启CNAME。CNAME是指将自定义域名绑定到存储空间。
    bucket = oss2.Bucket(auth, cname, 'examplebucket', is_cname=True)                    
  • 使用STS初始化

    以下代码用于使用STS初始化。

    说明 关于搭建STS服务的具体操作,请参见开发指南中的使用STS临时访问凭证访问OSS。您可以通过调用STS服务的AssumeRole接口或者使用各语言STS SDK来获取临时访问凭证。临时访问凭证包括临时访问密钥(AccessKeyId和AccessKeySecret)和安全令牌(SecurityToken)。临时访问凭证有效时间单位为秒,最小值为900,最大值以当前角色设定的最大会话时间为准。更多信息,请参见设置角色最大会话时间
    # -*- coding: utf-8 -*-
    import oss2
    
    # 使用临时访问凭证中的认证信息初始化StsAuth实例。
    auth = oss2.StsAuth('yourAccessKeyId', 'yourAccessKeySecret', 'yourSecretToken')
        
    # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    endpoint = 'yourEndpoint'
    # 填写Bucket名称,例如examplebucket。    
    bucket_name = 'examplebucket'
        
    # 使用StsAuth实例初始化。
    bucket = oss2.Bucket(auth, endpoint, bucket_name)
  • 使用匿名访问初始化
    注意 匿名用户只能读取public-read(公共读)的Bucket以及读取和写入public-read-write(公共读写)的Bucket,不能进行Service相关的操作、Bucket相关的操作、列举文件等。

    假设examplebucket存储空间的ACL为public-read-write,以下代码用于使用匿名访问初始化。

    # -*- coding: utf-8 -*-
    import oss2
    
    # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    endpoint = 'yourEndpoint'
    # 填写Bucket名称,例如examplebucket。    
    bucket_name = 'examplebucket'
    
    # 使用匿名访问初始化。
    bucket = oss2.Bucket(oss2.AnonymousAuth(), endpoint, bucket_name)

初始化oss2.Bucket类时配置参数

初始化oss2.Bucket类时支持配置的参数请参见下表。

参数 示例值 描述 方法
is_cname True Endpoint是否为自定义域名。取值范围如下:
  • True:Endpoint为自定义域名。
  • False(默认):Endpoint为OSS域名。
oss2.Bucket(auth, cname, 'examplebucket', is_cname=True)
session mytestsession 会话名,默认值为None,表示新开会话。如果设置此参数为已有会话名,则复用传入的会话。 oss2.Bucket(auth, endpoint, 'examplebucket', session=oss2.Session())
connect_timeout 30 连接超时时间,默认值为None,表示连接永不过期。单位为秒。 oss2.Bucket(auth, endpoint, 'examplebucket', connect_timeout=30)
app_name mytool 应用名,默认值为空。如果此参数不为空,则在User Agent中加入对应值。
注意 由于该字符串会作为HTTP Header的值进行传输,因此该字符串必须遵循HTTP标准。
oss2.Bucket(auth, endpoint, 'examplebucket', app_name='mytool')
enable_crc False 是否开启CRC数据校验。
  • True(默认):开启
  • False:关闭
oss2.Bucket(auth, endpoint, 'examplebucket', enable_crc=False)
常见的配置示例如下:
  • 设置连接超时时间

    以下代码用于设置连接超时时间。

    # -*- coding: utf-8 -*-
    import oss2
    
    # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
    
    # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    endpoint = 'yourEndpoint'
    
    # 填写Bucket名称,并设置连接超时时间为30秒。
    bucket = oss2.Bucket(auth, endpoint, 'examplebucket', connect_timeout=30)                    
  • 关闭CRC数据校验

    上传和下载文件时默认开启CRC数据校验,确保上传和下载过程的数据完整性。

    警告 强烈建议不要关闭CRC数据校验功能。如果关闭此功能,则阿里云不保证上传和下载过程数据的完整性。

    以下代码用于关闭CRC数据校验。

    # -*- coding: utf-8 -*-
    import oss2
    
    # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
    
    # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
    endpoint = 'yourEndpoint'
    
    # 填写Bucket名称,并设置enable_crc=False来关闭CRC数据校验。
    bucket = oss2.Bucket(auth, endpoint, 'examplebucket', enable_crc=False)