代码示例:

import logging
#from django.conf import settings import boto
from boto.s3.key import Key
import os
import sys ########################################################################
user="xxx"
aws_access_key_id = "xxx"
aws_secret_access_key = "xxx"
s3_host = "xxx"
deploy_package = user + "_deploy_package"
update_package = user + "_update_package"
######################################################################## logger = logging.getLogger(__name__) class S3_STORAGE(object):
def __init__(self):
self.conn = boto.connect_s3(
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key,
host=s3_host,
is_secure=False,
calling_format='boto.s3.connection.OrdinaryCallingFormat'
)
self.deploy_package_bucket_name = deploy_package
self.update_package_bucket_name = update_package
self.deploy_package_bucket = self.conn.get_bucket(self.deploy_package_bucket_name)
self.update_package_bucket = self.conn.get_bucket(self.update_package_bucket_name)
def upload_package(self, package_type, package_path):
package_name = os.path.basename(package_path)
#type = package_name.split(".")[-]
if( package_type == "deploy" ):
key = Key(self.deploy_package_bucket, package_name)
elif( package_type == "update" ):
key = Key(self.update_package_bucket, package_name)
key.set_contents_from_filename(package_path)
def download_package(self, package_type, filename, dst_path):
#type = filename.split(".")[-]
if( package_type == "deploy" ):
key = self.deploy_package_bucket.get_key(filename)
elif( package_type == "update" ):
key = self.update_package_bucket.get_key(filename)
key.get_contents_to_filename(dst_path + "/" + filename) if __name__ == "__main__":
if( len(sys.argv)!= and len(sys.argv)!= ):
print("====================================================================================================================")
print("| require: pip install boto==2.43.0")
print("| usage : python s3_storage.py <upload> <deploy | update> <package_path>")
print("| python s3_storage.py <download> <deploy | update> <filename> <dst_path>")
print("| example: python s3_storage.py upload deploy xxx.run")
print("| python s3_storage.py download deploy xxx.run ./")
print("| python s3_storage.py upload update xxx.run")
print("| python s3_storage.py download update xxx.run ./")
print("====================================================================================================================")
sys.exit(-)
elif( len(sys.argv) == ):
type = sys.argv[]
assert( type=="upload" )
package_type = sys.argv[]
package_path = sys.argv[]
package_name = os.path.basename(package_path)
s3_storage = S3_STORAGE()
print("UPLOAD PACKAGE " + package_name + " TO S3 START...")
s3_storage.upload_package(package_type, package_path)
print("UPLOAD PACKAGE SUCCESS...")
elif( len(sys.argv) == ):
type = sys.argv[]
assert( type=="download" )
package_type = sys.argv[]
filename = sys.argv[]
dst_path = sys.argv[]
s3_storage = S3_STORAGE()
print("DOWNLOAD PACKAGE " + filename + " FROM S3 START...")
s3_storage.download_package(filename, dst_path)
print("DOWNLOAD PACKAGE SUCCESS TO " + dst_path + "/" + filename + " ...")

参考资料:

官方文档:http://boto.cloudhackers.com/en/latest/s3_tut.html

http://stackoverflow.com/questions/26415923/boto-get-md5-s3-file

http://www.cnblogs.com/yxpblog/p/5332162.html

推荐:https://www.douban.com/note/315118595/

http://www.cnblogs.com/asmot/p/3939151.html

【Python】使用 boto 调用 S3 对象存储API的更多相关文章

  1. Golang 调用 aws-sdk 操作 S3对象存储

    Golang 调用 aws-sdk 操作 S3对象存储 前言 因为业务问题,要写一个S3对象存储管理代码,由于一直写Go,所以这次采用了Go,Go嘛,快,自带多线程,这种好处就不用多说了吧. 基础的功 ...

  2. 【系统设计】S3 对象存储

    在本文中,我们设计了一个类似于 Amazon Simple Storage Service (S3) 的对象存储服务.S3 是 Amazon Web Services (AWS) 提供的一项服务, 它 ...

  3. 对象存储API

    使用对象存储API步骤: 1.购买腾讯云对象存储(COS)服务 2.在腾讯云 对象存储控制台 里创建一个Bucket 3.在控制器 个人API密钥 页里获取APPID,SecretID,SecretK ...

  4. ceph 007 双向池同步 rgw对象网关配置 s3对象存储

    增量导入导出要基于快照 导出的过程当中害怕镜像被修改所以打快照.快照的数据是不会变化的 镜像级别的双向同步 镜像主到备,备到主.一对一 就算是池模式的双向同步,镜像也具有主备关系 双向同步,池模式 [ ...

  5. s3对象存储

    bkstorages 模块帮助你在蓝鲸应用中使用多种文件存储服务作为后端,用于加速静态资源,管理用户上传文件. 自定静态文件 storage 如果通过修改配置文件满足不了你的需求,你随时可以通过继承 ...

  6. 使用s3fs-fuse 挂载minio s3 对象存储

    minio 是一个aws s3 兼容的对象存储系统,我们可以通过s3fs 进行数据桶的挂载,这样可以做好多方便的事情 环境准备 使用docker-compose 运行 minio docker-com ...

  7. AWS S3 对象存储服务

    虽然亚马逊云非常牛逼,虽然亚马逊云财大气粗,虽然亚马逊用的人也非常多,可是这个文档我简直无法接受,特别是客服,令人发指的回复速度,瞬间让人无语,可是毕竟牛逼.忍了,躺一次坑而已 1.图片上传 1.1 ...

  8. 010 Ceph RGW对象存储

    一.对象存储 1.1 介绍 通过对象存储,将数据存储为对象,每个对象除了包含数据,还包含数据自身的元数据 对象通过Object ID来检索,无法通过普通文件系统操作来直接访问对象,只能通过API来访问 ...

  9. swift对象存储安装

    对象存储服务概览 OpenStack对象存储是一个多租户的对象存储系统,它支持大规模扩展,可以以低成本来管理大型的非结构化数据,通过RESTful HTTP 应用程序接口. 它包含下列组件: 代理服务 ...

随机推荐

  1. Java基础-继承-子类与父类执行顺序

    代码 public class Test { public static void main(String[] args) { new Circle(); } } class Draw { publi ...

  2. Java基础-转义字符

    Java中的字符占两个字节.一些常用的转义字符: ①\r表示接受键盘输入,相当于按下了回车键: ②\n表示换行: ③\t表示制表符,相当于Table键: ④\b表示退格键,相当于Back Space键 ...

  3. [转]window.opener用法

    window.opener 实际上就是通过window.open打开的窗体的父窗体. 比如在父窗体parentForm里面 通过 window.open("subForm.html" ...

  4. 【HDU 5387】Clock

    题 Description Give a time.(hh:mm:ss),you should answer the angle between any two of the minute.hour. ...

  5. 【poj1274】 The Perfect Stall

    http://poj.org/problem?id=1274 (题目链接) 题意 懒得写了 Solution 二分图匹配裸题.注意清空数组. 代码 // poj3020 #include<alg ...

  6. POJ3579 Median

    Description Given N numbers, X1, X2, ... , XN, let us calculate the difference of every pair of numb ...

  7. POJ1011 Sticks

    Description George took sticks of the same length and cut them randomly until all parts became at mo ...

  8. mysql存储过程的学习

    平时在工作中写过很多存储过程,但有时候对某些存储过程还是有些困惑的,所以发一篇文章记录下. 标准存储过程写法 create procedure`myQueryTask`( IN Task_No VAR ...

  9. 从注册流程 分析如何安全退出多个Activity 多种方式(附DEMO)

      退出Activity注册Android遍历   目录(?)[+] 前言 知识结构 具体方案 方案1 方法采用FLAG_ACTIVITY_CLEAR_TOP退出整个程序多activity 方案2 方 ...

  10. 车牌号对应归属地及城市JSON带简码

    车牌号对应归属地及城市JSON带简码 car_city.json [ { "code": "冀A", "city": "石家庄&q ...