-
Bucket
Bucket 是指对象存储上的存储空间,可理解为存放对象的“容器”,一个使用对象存储的用户可以拥有多个Bucket。主流的云服务提供商,都会支持用户对特定的Bucket进行访问权限的配置。
-
Object
用户存储在对象存储上的每个文件都是一个 Object,每个Object 有一个键名/健值。对象可以是文本、图片、音频、视频或者网页等。
使用简单对象上传方式时,对象大小限制在5GB以内。
使用分块上传时,每块的大小限制在5GB以内,且分块数量需要小于10000个,即最大上传对象约为48.82TB。
S3 中没有文件夹。只是大多数可用的S3浏览器工具都显示了一部分的键名,并用斜杠分隔为文件夹。
安装 boto3
pip 安装
pip install boto3
git clone https://github.com/boto/boto3.git && cd boto3 && sudo python setup.py install
使用boto3
接下来我们用代码演示一下,怎么使用 boto3
# 初始化 client
access_key = 'AKID10zuoeooooooooooooooooooooo' # ak
secret_key = 'nlbPCvHWkoooooooooooooooooooooo' # sk
s3_host = 'cos.ap-hangzhou.myqcloud.com' # Endpoint
s3client = boto3.client('s3',aws_secret_access_key = secret_key,aws_access_key_id = access_key,endpoint_url = s3_host)
# 遍历 bucket
list_buckets = s3client.list_buckets()
print(list_buckets)
# 遍历 bucket下的文件(对象)
bucket_name = 'cxy-1300123456'
file_list = []
response = s3client.list_objects_v2(
Bucket=bucket_name,
# MaxKeys=1000 # 返回数量,如果为空则为全部
file_desc = response['Contents']
for f in file_desc:
print('file_name:{},file_size:{}'.format(f['Key'], f['Size']))
file_list.append(f['Key'])
print(file_list)
bucket_name = "chenxy-1300123456"
local_file = "./tmp/hello.txt"
oss_key = "hello.txt"
# 上传文件
s3client.upload_file(local_file, bucket_name, oss_key)
# 下载文件
s3client.download_file(bucket_name, oss_key, local_file)
更多 boto3支持的方法,参见:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html?highlight=put_object#client
python
通过
boto
3
实现ceph分布式存储上传下载功能前言环境支持开始第一步结束
aws是Amazon Web Service的简写,它包括众多服务,其中最有名的两个是EC2和S
3
。
S
3
是Simple Storage Service的简写,它是一种
对象存储
的实现。
本文档介绍用户如何
使用
boto
3
来操作s
3
对象存储
服务。
boto
3
提供了两个级别的接口来访问AWS服务:
High Le...
BOTO
是一个开源的
PYTHON
发布包,是AWS(AMAZON WEBSERVICE)的
PYTHON
封装。
近期,我们公司用到国内某知名公司的S
3
云存储服务,需要
调用
该公司提供的S
3
PYTHON
SDK。鉴于该公司没有
PYTHON
版本的SDK,所以我决定利用开源的
BOTO
的S
3
模块稍加改进。在经过easy_install
boto
之后便开始了
BOTO
的封装
以下是我最开始封装的代码模型
cfg = self.cfg
#用Minio获取s
3
服务器client,查看桶(存放文件的文件夹cfg['bucket'])是否存在。
client = Minio(cfg['endpoint'],
access_key=cfg["access_key"],
secret_key=cfg["secret_key"])
found = client.bucket_exists(cfg['bucket'])
if found:
#用
boto
3
..