由于boto无法支持bucket的大写名称, 所以使用boto3进行代替, 看了大量的贴子和boto3的官网, 发现boto3的安装方式都是使用pip工具进行安装(pip install boto3), 但是我们的存储无法进行外网连接, 所以还是需要通过rpm包的方式进行安装
但是boto3官网没有提供boto3的rpm包, 所以通过rpm search搜索到(搜索到的boto3版本有限), 如下图
在进行安装的时候, 发现这个包依赖其他包python包,比如python2-botocore-1.4.43-1.el7.noarch.rpm, python-dateutil-1.5-7.el7.noarch.rpm等, 而且被依赖的包又依赖于其他的rpm包, 包的依赖会花费大量时间去寻找, 而且因为python版本的问题, 使用的包不一定对. 如果不关系依赖使用—nodeps选项又会存在一定的风险, 所以经过搜索资料, 通过pip工具可以解决以上问题
下面是步骤
1, 找一台能够上外网的虚拟机, 使用pip命令下载boto3到一个文件夹中(如果系统没有pip工具, 需要进行安装, 安装方式见最后的注解)
pip install --download /root/boto3/ boto3
2, 将/root/boto3拷贝到需要安装boto3的机器
pip install --no-index --find-links=/root/boto3 boto3
终端会提示一系列的输入然后提示成功, 如下图
3, 通过下面脚本的测试, boto3正常使用(centos7.0 centos7.2)
#!/usr/bin/env python
# coding=utf-8
import boto3
def main():
access_key = 'F15H3USA99CU18958G9Y'
secret_key = 'bAVSSWtx1FmfT8Y3dhXuj9WBlwzQZqcaSHb25RDw'
s3_host = 'http://10.192.52.167:7480'
bucket_name = 'BBBB'
s3client = boto3.client('s3',
aws_secret_access_key = secret_key,
aws_access_key_id = access_key,
endpoint_url = s3_host)
response = s3client.list_buckets()
# list bucket
for bucket in response['Buckets']:
print format(bucket['Name'])
#creating a bucket
response = s3client.create_bucket(Bucket = bucket_name)
print "Creating bucket {0} returns => {1}\n".format(bucket_name, response)
if __name__ == '__main__':
main()
注:
如果系统提示没有pip命令, 可以通过下面的方式解决
通过http://rpm.pbone.net/index.php3/stat/4/idpl/40723940/dir/centos_7/com/python-pip-8.1.2-1.el7.noarch.rpm.html 下载rmp包, 拷贝到设备上使用rpm -i python-pip-8.1.2-1.el7.noarch.rpm命令执行