亚马逊云有提供云存储服务S3,而且对于新注册用户有赠送一年的免费服务。注册亚马逊云国际账户后,AWS 新客户将每个月获得 S3 Standard 存储类中的 5GB Amazon S3 存储空间、20,000 个 GET 请求、2,000 个 PUT、COPY、POST 或 LIST 请求以及 100 GB 的数据传出量。如果我们有需要注册的可以到官网注册。
当然如果我们新客注册亚马逊云国际的话现在也是支持银联或者信用卡的,而且还赠送一年的EC2云服务器等上百款其他的体验产品。在这篇文章中,我要记录的是如何开通亚马逊云S3云存储,以及绑定我们自己的域名的同时申请的SSL证书绑定亚马逊云同时赠送的CDN加速提高存储在云存储空间的文件速度。
我们初始进入亚马逊云的话,可以在右上角选择你准备的区域,这里我默认选择的是美国东部地区,这样直接创建就默认这个地区,你也可以选择其他地区。如上图,设置存储桶名称,建议唯一性我们可以设置自己后面要绑定的域名的名称,这样也方便记忆。
在公共访问权限的时候先根据建议勾选阻止公开访问。后续应该是可以用策略开启URL访问公网的。如果后续不可以访问,这里我们再全部放行。
其他先默认创建再说。
我们先上传一个静态文件到S3存储中,然后打开这个文件看到对象URL,复制到浏览器打开看看。
看到无权限打开的。我们需要解决这个问题。
我们需要到当前存储桶中的「属性」拖动页面到最下面看到如上图的 「静态网站托管」默认是关闭禁止的,我们需要开启。
我们先默认索引文档写index.html作为默认主页,如果我们是用来做静态个人主页的也可以根据需要设置。这里不写就不行。
保存后,我们再刷新静态URL的页面还是不可以。那问题在哪里呢?
我们再回到上图中的 「权限」菜单。我们需要设置下面的 「存储桶策略」。
不过修改的策略居然无法保存,看来还是前面提到的公开权限需要启动。
还是要编辑把屏蔽公共访问权限关闭掉。
填写规则是:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::存储桶名称/*"
}
]
}
主要是最后一行的Resource 修改成我们自己的存储桶名称即可。保存后我们再访问之前模拟演示上传的index.html是可以公开访问的。如果我们需要自定义域名创建存储桶的时候,设置域名作为存储桶名称,然后将你的域名别名解析到对应亚马逊云分配的地址。
举个例子:
假设想要用域名S3.zhujipingjia.com访问S3上的一个存储桶,那么S3上存储桶的名称就必须是s3.zhujipingjia.com。假设这个存储桶是us-west-1可用区的,那么S3默认提供的资源访问域名就是s3.zhujipingjia.com.s3-us-west-1.amazonaws.com。给域名s3.zhujipingjia.com做CNAME解析到s3.zhujipingjia.com.s3-us-west-1.amazonaws.com即可。
至此,我们可以完成当前S3存储的公开访问。但是现在还需要做的事情就是绑定自己的域名,同时我们一般还需要给域名用到HTTPS。
访问到亚马逊云的 「AWS Certificate Manager」,我们需要申请SSL证书。
根据向导,我们可以请求公有证书。
输入我们需要申请的证书域名,以及域名验证所有权方式可以选择DNS或者电子邮件验证。其他的默认即可提交。这里我用的是DNS验证。
根据提示,我们设置CNAME解析,等待验证自动会成功。
这里我们可以看到「已颁发」的字样说明证书申请成功。
我们在SSL证书申请好之后,你也可以给你的S3存储桶创建添加CloudFront CDN加速的时候引用存储桶的时候可以同步选择已经配置的SSL证书。
备注:如果我们确实需要绑定自己域名的话,我们建议创建S3云存储的时候,用的桶名称就用自己准备的自定义域名。
我们要知道,亚马逊云也有免费提供CDN服务,他们的CDN服务是CloudFront。我们创建CDN的时候可以选择到自己S3的云存储,主要是在上图这里,备用域名这里要输入我们的自定义域名。以及选择我们自定义的SSL证书,这样启动之后,我们可以看分配给我们的CDN的域名。
我们需要在域名的DNS解析中添加CNAME的解析指向CDN的分配的域名。这样我们就可以用自己的自定义域名打开存储在S3的内容且中间也用到亚马逊云的CDN加速。