以下都是用同一个python文件来测试,所以都是列出的代码片段。
文件头
import boto
import boto.s3.connection
access_key = 'put your access key here!'
secret_key = 'put your secret key here!'
创建链接
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
host = 'objects.dreamhost.com',
#is_secure=False, # uncomment if you are not using ssl
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
列出所有的buckets
for bucket in conn.get_all_buckets():
print "{name}\t{created}".format(
name = bucket.name,
created = bucket.creation_date,
)
列出一个bucket中的内容(对象)
for key in bucket.list():
print "{name}\t{size}\t{modified}".format(
name = key.name,
size = key.size,
modified = key.last_modified,
)
创建bucket
bucket = conn.create_bucket('my-new-bucket')
删除一个bucket
conn.delete_bucket(bucket.name)
创建一个对象
key = bucket.new_key('hello.txt')
key.set_contents_from_string('Hello World!')
下载一个对象到文件中
key = bucket.get_key('hello.txt')
key.get_contents_to_filename('/home/larry/documents/hello.txt')
删除一个对象
bucket.delete_key('goodbye.txt')
改变一个对象的存取控制
公有:
key = bucket.get_key('hello.txt')
key.set_canned_acl('public-read')
私有
key = bucket.get_key('hello.txt')
key.set_canned_acl('private')
生成对象下载url
key = bucket.get_key('hello.txt')
key_url = hello_key.generate_url(0, query_auth=False, force_http=True)
print key_url
在群里朋友(特别是开发-广州-Diluga,OS开发-上海-cp )的帮助下,这里表示感谢。对这里产生url有的进一步的理解和认识。
如果对象是public-read的,那么这里的第一个参数expires_in就没有意义了。而且query_auth就是False,不需要认证。所以打印出来的url是不带认证信息的。
如果对象是private的,第一参数就是过期的时长,不能设置为0,0表示此刻就过期了。然后query_auth得设为True. 这样打印出来的url就可以在过期的时间内进行访问。产生的url是带有认证参数的。
连接时用主机名或者ip都可以,打印出来的url也可以换成ip,如果有域名的话也可以替换成域名,对访问没有影响。