3,110° 20211,568字0条评论

用AWS S3做博客图床

2023年4月20日更新:已根据官方指南「限制对 Amazon S3 源的访问」将CloudFront向S3发送身份验证的请求的方式从源访问身份(OAI)迁移到源访问控制(OAC)。


去年六月,因为Bitcron对于音频视频的限制,我把图床1搬到了Blot。Blot用的是AWS所以特别快,但是最近他们把图片全部搬回自己的主机了,别问理由,问就是太贵。我心想反正放静态文件,虽然当然用Dropbox同步仍旧是最轻松的方式,但文件类更改频率并不高,存放方式的差异也不大,那要不我自己直接放AWS好了。花了好些天查资料,终于跟上了时代的潮流,大概了解了对象储存是啥玩意儿,也终于知道大家口中的bucket的含义了。武装好理论知识后好像世界又变大了一些,对象储存真香!啥都能干!

其实很多大厂都有提供对象储存服务,比如阿里云OSS2、腾讯云COS3,还有今天我要说的亚马逊S34。我也想投入社会主义怀抱,网上攻略看来国内产品更贴心,但是无奈备案太繁琐,我也不想备案。又说S3是鼻祖被各种借鉴,那本着对第一个吃螃蟹的勇气的好感,我就先会一会S3吧!

图床要求

现在都是按需付费,用多少付多少,收费模式还是比较合理的。

搭建步骤

  1. S3
    1) 在S3创建存储桶bucket,命名为自定义域名,比如我的是cdn.shuiba.co,选择一个亚洲区域理论上会快一些(我选的是亚太地区 (东京) ap-northeast-1);
    2) 稍后会启用CDN,所以这里不需要关闭“阻止所有公有访问”,保持存储桶和对象不是公有的更安全。同理,存储桶策略也不需要修改;
    3) 上传静态文件,此时每个文件都会生成一个支持https的对象URL,例如https://s3-区域名.amazonaws.com/bucket名/文件名.jpg,但因为设置为非公开,所以无法访问。

  2. CloudFront
    1) 在CloudFront上创建Web分配;
    2) 源配置:源域名下拉选择对应S3 bucket;“限制存储桶访问”选择“是”并创建新身份;“授予对存储桶的读取权限”选择“是”的话会在bucket权限的“存储桶策略”中自动写入授权命令;
    3) 默认缓存行为设置:“查看器协议策略”选择“将 HTTP 重定向到 HTTPS”;
    4) 分配设置:“价格级别”选择“使用美国、加拿大、欧洲、亚洲、中东和非洲”能省点钱;先不写“备用域名(CNAMEs)”,“SSL 证书”选默认,稍后设置;
    5) 分配部署好之后,会指定一个一串数值.cloudfront.net域名,将此域名替换掉对象URL的前缀——https://一串数值.cloudfront.net/文件名.jpg——便能公开访问对象文件。

  3. AWS Certificate Manager (ACM)
    1) 打开刚刚在CloudFront上创建的分配,编辑“常规”;
    2) 在“SSL证书”下方点击“使用ACM请求或导入证书”,跳转到对应页面。这里注意区域一定要是美国东部 (弗吉尼亚北部) us-east-1,否则证书无效;
    3) 输入自定义域名,选择DNS验证,在域名商处按要求修改DNS,等待验证通过;
    4) 继续在域名商处为自定义域名创建CNAME指向一串数值.cloudfront.net
    5) 刷新CloudFront编辑页面,“备用域名(CNAMEs)”里填上自定义域名;选择“自定义SSL证书”,下拉选择刚刚生成的证书,保存修改;
    6) 现在你可以通过自定义域名来访问对象文件了,比如我的文件URL就变成了https://cdn.shuiba.co/文件名.jpg

遗留问题

记忆力好的旁友们相信已经发现了,咋没有防盗链呢?亚马逊官方提供的signed URL和signed cookie我一点看不懂,真的,为了能至少多那么一点儿理解力,我看了几个小时开发者文档,除了了解到机器翻译还不错这件事以外可以说颗粒无收了。总之我先用着,反正S3和CloudFront有一年免费期,到期后再转到Cloudflare吧。

2023年4月25日更新:研究了好久终于用AWS WAF给图床加上防盗链功能了,但Cloudflare似乎更经济实惠一些,正好我也想试试Cloudflare,准备改日转过去。

参考文章

「什么是对象存储?COS 能做什么?这里有份快速入门教程」
「国内自建图床指南」
「正确使用AWS S3的方式之打造自己的https图床」
「使用 AWS 云服务搭建 WordPress 博客 (上篇)」
「AWS S3 + CloudFront SSL 靜態網站架設教學」
「关于部署网站的那些事儿」
「AWS 静态网站“完美”搭建方案」
「开始使用 Amazon Route 53」
「使用源访问身份限制对 Amazon S3 内容的访问」
「您创建或更新分配时指定的值」


  1. 这里的图床指的是存放博客各类静态文件的地方。
  2. Object Storage Service
  3. Cloud Object Storage
  4. Simple Storage Service
EOF
778°
坡坡第一次看牙医
Comments
Write a Comment
点击加载Disqus