#! /usr/bin/python
# -*-coding:utf-8-*
from boto.s3.key import Key
from boto.s3.connection import S3Connection
import os
########################################################################
user = "xxxxxxxxx"
aws_access_key_id = "xxxxxxxxxxxxxx"
aws_secret_access_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
host_ip = "xx.xx.xx.xx"
port=9000
########################################################################
'''
OrdinaryCallingFormat:自己安装有s3服务的服务器一般用这个
SubdomainCallingFormat:host名中含有amazon类似的词语的一般用这个
'''
class S3(object):
    def __init__(self, ):
        self.conn = S3Connection(
            aws_access_key_id=aws_access_key_id,
            aws_secret_access_key=aws_secret_access_key,
            host=host_ip,
            port=port,
            is_secure=False,
            calling_format='boto.s3.connection.OrdinaryCallingFormat'
        )
        self.bucket_name = 'bucket_test'
        try:
            self.bucket = self.conn.get_bucket(self.bucket_name)
        except:
            self.bucket = self.conn.create_bucket(self.bucket_name)
    def upload_packetage(self, package_path):
        package_name = os.path.basename(package_path)
        package_key = Key(self.bucket, package_name)
        if package_key.exists():
            package_key.delete()
        else:
            package_key.set_contents_from_filename(package_path)
        return
    def rename_package(self, package_old_name, package_new_name):
        package_old_key = Key(self.bucket, package_old_name)
        package_new_key = Key(self.bucket, package_new_name)
        if package_old_key.exists() and (not package_new_key.exists()):
            package_old_key.copy(self.bucket, package_new_key)
        if  package_new_key.exists():
            package_old_key.delete()
        return
    def delete_packetage(self, package_name):
        package_key = Key(self.bucket, package_name)
        if package_key.exists():
            package_key.delete()
        else:
            raise ValueError('package:%s are not exist' % package_name)
        return
if __name__ == "__main__":
    s3 = S3()
    #s3.upload_packetage("/tmp/text.txt")
    s3.delete_packetage("text.txt")
    #s3.rename_package("text.txt", "text1.txt")
    pass

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注