用AWS S3搭建小程序資源服務(wù)器

寫在前面(2020.2),由于我已經(jīng)有一個網(wǎng)站使用的是AWS S3的圖片資源,所以想在小程序中使用同樣的。但是遇到了各種困難,磨難和坑,本篇為大家介紹我的解決方案,適合想用小程序+S3的同學(xué)。

用到的幾個東西:

AWS S3: 圖片服務(wù)器
AWS CloudFront: CDN服務(wù),可以讓全球享受最快的訪問速度
Web Host: 域名解析商
ACM: AWS中創(chuàng)建和管理SSL證書,驗證你的網(wǎng)站,以允許https訪問

遇到的坑

  1. 在AWS S3中,不用把你的bucket設(shè)成web hosting,否則會無法用https訪問。(具體原因我也不大清楚,可能是由于S3本身不支持Https訪問導(dǎo)致的)

  2. AWS CloudFront需要使用自定義的SSL證書,但是這個證書有2個條件,第一個要在us-east-1建立(這個很好理解)。

第二個要證書長度大于2048位,不然選擇自定義證書那里會變灰,如果舊的不行重建一個就好了(我原來已經(jīng)有個證書了,也在us-east-1里,不過就是不能選擇,后來發(fā)現(xiàn)重新建一個就可以了)

  1. Cloudfront里面price class要選擇有Asia的,不然亞洲地區(qū)https無法訪問。

下面開始正文

1. 申請AWS S3

新建一個S3 Bucket, 命名必須是你的域名(比如我的是image.sfmeal.com),權(quán)限是open to public, 其他默認(rèn)就可以。

如果你已有舊的其他名字的bucket,要重新建一個,把舊的拷貝過來了。

完成這一步,就可以訪問你的圖片了(路徑是http://bucket-name.s3.amazon.com/yourimage)

2. 開通AWS Cloudfront

S3不支持https訪問,但是小程序要求請求是https的,所以這里要用到Cloudfront。
前往CloudFront頁面,新建Cloudfront,配置圖如下:

image.png
  1. Price Class選擇支持Asia的(否則國內(nèi)IP訪問不了哦)
  2. Alternate Domain Names就是需要綁定的域名,Cloudfront默認(rèn)會分配一個域名給你,這里的值會替換掉那個域名(需要在域名解析商增加一個CName指向cloudfront分配的域名)

比如,默認(rèn)分配給我的是 https://dassdsd11.cloudfront.com/yourimage, CNAMES我填的是image.sfmeal.com(如上圖),配置成功后最終訪問會變成https://image.sfmeal.com/yourimage

  1. SSL Certificate,要選擇Custom SSL Cerficate,如果是灰色不可選則表示你沒有us-east-1的證書或者你的證書不符合要求(長度不夠),那么我們下一步來創(chuàng)建證書。先選"Default CloudFront Certificate",回頭再修改。

其他默認(rèn),點(diǎn)擊創(chuàng)建

現(xiàn)在我們測試一下路徑(https://dassdsd11.cloudfront.com/yourimage)OK!

3. 創(chuàng)建證書

前往AWS的Certificate Manager服務(wù)的頁面(ACM),打開后如下圖:

image.png
  1. 點(diǎn)擊Request a certificate創(chuàng)建證書(注意右上角的地區(qū)要選擇N. Virginia us-east-1才行,因為這是Cloudfront服務(wù)的大本營)

  2. 選擇驗證方式,可以通過DNS(在你的Web Host那里增加一個指定的CName)或者郵箱認(rèn)證(發(fā)郵件到你域名的管理員郵箱),哪種方便選擇哪種都一樣。

3.驗證后很快狀態(tài)一欄(Status)會變成Issued,就可以在Cloudfront把它那里修改為使用自定義SSL證書啦!

4. 更改Web Host配置

前往你的Web Host更改域名解析,把CloudFront分配你的域名添加進(jìn)CNAME里面作為value,key就是你自己的圖片域名(注意??這個域名必須和S3的bucket名字還有CloudFront里的別名一致,Cloudfront的第二步)

修改完成后,靜待解析完成。

現(xiàn)在我們測試一下路徑(https://image.sfmeal.com/yourimage)一切OK,完成了!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容