入门

AccessKey 和 SecretKey

首先设定 KS3 的 AccessKey和SecretKey。

本例中,将它们放在环境变量配置文件 .env 中,名为 KSYUN_ACCESS_KEYKSYUN_SECRET_KEY,然后使用 `python-dotenv <https://github.com/theskumar/python-dotenv>`__ 加载

加载环境变量:

[1]:
%load_ext dotenv

# Use find_dotenv to locate the file
%dotenv

指定Endpoint

我自己的测试实例在上海,因此:

[2]:
ENDPOINT = 'ks3-cn-shanghai.ksyun.com'

初始化客户端

[3]:
from ks33requests.client import get_s3obj, Client

c = Client(endpoint=ENDPOINT)

如何使用

列出默认项目第一个 Bucket 的 Name

发送 API 请求,并等待其返回状态码

[4]:
res = c.send(params={'projectIds': '0'})
res
[4]:
<Response [200]>
[5]:
obj = get_s3obj(res)
obj
[5]:
<ks33requests.schemas.s3_sub.ListAllMyBucketsResultSub at 0x7f790b8c99e8>
[6]:
bucket_name = obj.Buckets.Bucket[0].Name
bucket_name
[6]:
'huameoi-newcutter-develop'

获取这个BUCKET 的 Location

[7]:
res = c.send('GET', bucket_name=bucket_name, sub_resources='location').s3obj()
[8]:
res.valueOf_
[8]:
'SHANGHAI'

上传一个文本文件

在内存新建一段文本,作为文件内容上传

[9]:
import io

key = 'test'
text = '金山云对象存储服务(Kingsoft Standard Storage Service),简称KS3,是金山云为开发者提供无限制、多备份、分布式的低成本存储空间解决方案。目前提供多种语言SDK,替开发者解决存储扩容、数据可靠安全以及分布式访问等相关复杂问题,开发者可以快速的开发出涉及存储业务的程序或服务。'

stream = io.BytesIO(text.encode())
[10]:
resp = c.send('put', bucket_name=bucket_name, object_key=key, data=stream)
resp
[10]:
<Response [200]>

下载上一个文本文件

下载到内存,看看内容是否一致

[11]:
resp = c.send('get', bucket_name=bucket_name, object_key=key)
resp
[11]:
<Response [200]>

断言 - 字符串相同:

[12]:
assert resp.text==text

删除这个文件

[13]:
resp = c.send('delete', bucket_name=bucket_name, object_key=key)
resp
[13]:
<Response [204]>

确定该文件不存在

[14]:
resp = c.send('head', bucket_name=bucket_name, object_key=key, check_status=False)
resp
[14]:
<Response [404]>

断言 - 404 不存在:

[15]:
assert resp.status_code == 404