https://boto3.amazonaws.com/v1/documentation/api/latest/index.html
示例中本地操作系统为CentOS8,其他系统请按需修改准备工作中软件安装命令。
本文部分结果的验证用到了s3 browser,了解如何使用s3 browser访问对象存储:
https://jcloud.sjtu.edu.cn/document/detail.html?mod=cos&id=1232
。
安装python,建议使用Python 3.6及以后的版本。
要验证安装,请输入以下命令检查Python版本。
安装python s3 boto3 SDK软件包
https://home.jcloud.sjtu.edu.cn
。
选择并确认需要创建对象存储的项目。
点击界面左侧的:存储、对象存储条目,进入对象存储管理界面。
https://s3.jcloud.sjtu.edu.cn:443"
1 2 3 4 5 6 7 8 9
|
from boto3.session import Session import boto3 # 加载boto3 skd包
# session.client初始化, access_key和secret_key填入上文获取的内容 access_key = "您的AccessKey" secret_key = "您的SecretKey" url = "https://s3.jcloud.sjtu.edu.cn:443" # 交大云对象存储URL session = Session(access_key, secret_key) s3_client = session.client('s3', endpoint_url=url)
|
https://s3.jcloud.sjtu.edu.cn:443。
session对象承载了用户的认证信息。
session.client()对象用于服务相关的操作。
1 2 3 4 5 6
|
... #初始化session.client()
if __name__ == '__main__': resp = s3_client.head_bucket(Bucket = "first-bucket") print('使用空间(字节):' + str(resp['ResponseMetadata']['HTTPHeaders']['x-rgw-bytes-used'])) print('桶内对象个数: '+ str(resp['ResponseMetadata']['HTTPHeaders']['x-rgw-object-count']))
|
1 2 3 4 5 6 7 8 9
|
... #初始化session.client() from botocore.exceptions import ClientError
if __name__ == '__main__': try: s3_client.head_object(Bucket = '02-bucket', Key = 'local01.txt') print('EXITS') except: print('NOT FOUND')
|
1 2 3 4 5 6
|
... #初始化session.client()
if __name__ == '__main__': res = s3_client.get_object_acl(Bucket = '01-bucket', Key = 'local03.txt') print(res['Grants']) print(res['Owner'])
|
1 2 3 4 5
|
... #初始化session.client()
if __name__ == '__main__': res = s3_client.put_object_acl(Bucket = '02-bucket', ACL = 'public-read-write', Key = 'local03.txt')
|
1 2 3 4
|
... #初始化session.client()
if __name__ == '__main__': res = s3_client.delete_object(Bucket = '02-bucket', Key = 'big-file')
|
1 2 3 4 5 6 7 8 9 10 11
|
... #初始化session.client()
if __name__ == '__main__': objects_to_delete = [{'Key': 'local01.txt'}, {'Key': 'local02.txt'}]
s3_client.delete_objects( Bucket = '02-bucket', Delete={ 'Objects': objects_to_delete } )
|