调用阿里云SDK,实现阿里云OSS大量bucket文件的导出
脚本如下:
# -*- coding: utf-8 -*-
import oss2
from itertools import islice
# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
auth = oss2.Auth('*,*')
def list_all_bucket():
# Endpoint以杭州为例,其它Region请按实际情况填写。
service = oss2.Service(auth, 'http://oss-cn-beijing.aliyuncs.com')
# 列举所有的存储空间。
for b in oss2.BucketIterator(service):
print(b.name)
#list_all_bucket()
def create_bucket(bucket_name):
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-beijing.aliyuncs.com', bucket_name)
# 设置存储空间为私有读写权限。
bucket.create_bucket(oss2.models.BUCKET_ACL_PRIVATE)
def info_bucket(bucket_name):
bucket = oss2.Bucket(auth, 'http://oss-cn-beijing.aliyuncs.com', bucket_name)
bucket_info = bucket.get_bucket_info()
print('name: ' + bucket_info.name)
print('storage class: ' + bucket_info.storage_class)
print('creation date: ' + bucket_info.creation_date)
print('intranet_endpoint: ' + bucket_info.intranet_endpoint)
print('extranet_endpoint ' + bucket_info.extranet_endpoint)
print('owner: ' + bucket_info.owner.id)
print('grant: ' + bucket_info.acl.grant)
print('data_redundancy_type:' + bucket_info.data_redundancy_type)
def delete_bucket(bucket_name):
bucket = oss2.Bucket(auth, 'http://oss-cn-beijing.aliyuncs.com', bucket_name)
try:
# 删除存储空间。
bucket.delete_bucket()
except oss2.exceptions.BucketNotEmpty:
print('bucket 不为空')
except oss2.exceptions.NoSuchBucket:
print('bucket 不存在')
def download_obj(bucket_name,local_dir):
bucket = oss2.Bucket(auth, 'http://oss-cn-beijing.aliyuncs.com', bucket_name)
#print出该bucket下的所有objects
for obj in oss2.ObjectIterator(bucket):
#print(obj.key)
file_name = obj.key.split('/')[-1]
#print(file_name)
file = local_dir + '/' + file_name
#print(file)
bucket.get_object_to_file(obj.key, file)
def some_obj(bucket_name,local_dir):
bucket = oss2.Bucket(auth, 'http://oss-cn-beijing.aliyuncs.com', bucket_name)
for obj in islice(oss2.ObjectIteratorV2(bucket), 20):
#print(obj.key)
file_name = obj.key.split('/')[-1]
#print(file_name)
file = local_dir + '/' + file_name
#print(file)
bucket.get_object_to_file(obj.key, file)