最近看s3内容,发现很好玩,s3竟然支持静态网站内容的设置,也就意味着,如果你的网站全部是静态页面,就可以全部放到s3上了(存储超级便宜),不用部署任何apache、nginx程序了,而且还非常合适,那今天我们就看看如何设置S3做website的吧,首先,我们创建一个bucket的,然后上传我们的网站内容,最后进行访问,因为s3是建立bucket是不区分region的,所以创建的名称不能与其他人的相同,在创建的时候要检查是否已经有同名的bucket了,如果存在就打日志,如果没有就可以创建了,以下是这部分代码实现:
#!/usr/bin/env python
#autor:mindgn.cn
#date:2015-7
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个文件看效果:
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还有很多好玩的事值得去研究,有兴趣的兄弟可以去看官网文档。