最近看s3内容,发现很好玩,s3竟然支持静态网站内容的设置,也就意味着,如果你的网站全部是静态页面,就可以全部放到s3上了(存储超级便宜),不用部署任何apache、nginx程序了,而且还非常合适,那今天我们就看看如何设置S3做website的吧,首先,我们创建一个bucket的,然后上传我们的网站内容,最后进行访问,因为s3是建立bucket是不区分region的,所以创建的名称不能与其他人的相同,在创建的时候要检查是否已经有同名的bucket了,如果存在就打日志,如果没有就可以创建了,以下是这部分代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
#!/usr/bin/env python import os import boto import time def create_bucket(bucket_name): s3 = boto.connect_s3() bucket = s3.lookup(bucket_name) if bucket: print 'Bucket (%s) already exists' % bucket_name else: try: bucket = s3.create_bucket(bucket_name) except s3.provider.storage_create_error, e: print 'Bucket (%s) is not be used' % bucket_name return bucket |
如果没问题,以上函数就是创建一个你独有的bucket,往下就是上传你的web站点文件了,因为是测试,我的相对很简答,就上传1个文件看效果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
def upload_website(bucket_name, webfile, index_page, error_file=None): s3 = boto.connect_s3() bucket = s3.lookup(bucket_name) bucket.set_canned_acl('public-read') key = bucket.new_key(webfile) key.content_type = 'txtx/html' key.set_contents_from_filename(webfile, policy='pulic-read') bucket.configure_websiet(index_page, error_file) time.sleep(5) print 'grant website info:' print bucket.get_website_endpoint() create_bucket('bicherweb') upload_website('bicherweb', 'html', 'index.html') |
到此就创建完了,最后是测试,get_website_endpoint()的返回的是访问网站的域名,但并不代表这个bucket的配置是正确的,原文如下:
|
Returns the fully qualified hostname to use is you want to access this bucket as a website. This doesn’t validate whether the bucket has been correctly configured as a website or not. |
运行完返回的是s3的一个访问域名,当然我们不能用这个来访问,谁也记不住,所以你需要在你的DNS后台CNAME到这个域名,这样就可以输入类似http://www.xxx.com来访问你的网站了,不过提醒下,s3是按访问次数来收取费用的,如果访问量很大,需要关注下费用情况,今天就到这里,关于s3还有很多好玩的事值得去研究,有兴趣的兄弟可以去看官网文档。