本文主要是介绍Boto - python lib for AWS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Boto 是用 python 封装的一个操作 AWS 的函数库。用过几种语言操作 AWS 还是感觉 python 用起来最直观简洁。下面就对 boto 的使用进行一个简单总结,方便以后查阅(只涉及当前使用到的服务,以后会持续更新)。对 python 2 和 python 3 都有相应的 boto 库。这里以 python 2.7 为例进行说明。
EC2
S3
创建S3连接
- 根据指定key和区域进行连接
conn = boto.s3.connect_to_region(region, aws_access_key_id=accessKey, aws_secret_access_key=secretKey)
Note:如果基于Role创建连接的话可以省略key。
bucket 相关
查看指定 bucket 是否存在
conn.lookup(bucketname)
不存在则返回 None。创建bucket
conn.create_bucket(bucket_name, None, self.__region, None)
获取所有 bucket
conn.get_all_buckets()
获取指定 bucket
bucket = conn.get_bucket(bucketname)
获取 bucket Key
key = bucket.get_key(keyname)
列出指定bucket下某一前缀的所有对象
bucket.list(prefix=prefix)
配置 bucket 生命周期
toglacier = Transition(days=days, storage_class='GLACIER')rule = Rule(ruleid, prefix, 'Enabled', transition=toglacier)lifecycle = Lifecycle()lifecycle.append(rule)bucket = self.__conn.get_bucket(bucketname)return bucket.configure_lifecycle(lifecycle)
- 查看 bucket 生命周期配置
for i in bucket.get_lifecycle_config():l.append(i.transition)
Object 相关
从本地路径上传文件
key.set_contents_from_filename(srcname)
分片上传文件
sourcesize = os.stat(srcname).st_sizebucket = self.__conn.get_bucket(bucketname)mp = bucket.initiate_multipart_upload(keyname)chunkcount = int(math.ceil(sourcesize / float(chunksize)))for i in range(chunkcount):offset = chunksize * ibs = min(chunksize, sourcesize - offset)with FileChunkIO(srcname, 'r', offset=offset, bytes=bs) as fp:mp.upload_part_from_file(fp, part_num=i + 1)return mp.complete_upload()
下载对象到本地文件
key.get_contents_to_filename(dstname)
删除对象
bucket.delete_key(keyname)
批量删除对象
bucket.delete_keys([key1,key2,...])
查看分片上传情况
bucket.list_multipart_uploads()
从Glacier还原对象
key.restore(days=retainday)
查看对象还原状态
key.ongoing_restore
Glacier
创建Glacier连接
- 根据指定key和区域进行连接
conn = boto.glacier.connect_to_region(region, aws_access_key_id=accessKey, aws_secret_access_key=secretKey)
vault相关
查看所有vault
conn.list_vaults()
获取指定vault
vault = conn.get_vault(vaultname)
上传文件到vault
vault.upload_archive(filename=filename)
上传完成后会返回响应的archieveid。从vault中指定归档文件从离线还原到在线
vault.retrieve_archive(archieveid)
还原任务提交后会生成一个 jobid。获取指定vault下的还原任务
vault.list_jobs(True|False) 或者 conn.list_all_jobs(vaultname, True|False)
`下载vault中文件到本地
vault.get_job(jobid).download_to_file(dstfile)
object相关
SQS
DynamoDB
这篇关于Boto - python lib for AWS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!