星期日, 9月 26, 2021

AWS CDN 練習小記

AWS CDN 練習小記


這篇 Blog 是搭配 AWS Users Group Taiwan Meetup 的分享題目 "AWS 初心者系列 - CDN - CloudFront 101" 


簡報 URL https://bit.ly/sakana20210923 

活動 URL https://awsugtw.kktix.cc/events/awsug-202109


AWS Users Group Taiwan Facebook https://www.facebook.com/groups/awsugtw 


練習架構如下




 個人管理的  CNAME 指向 AWS CloudFront 分佈, 來源為  AWS S3 服務


首先來建立 Origin Server


==== Origin Server  - S3 =====


登入 Amazon S3 服務 https://s3.console.aws.amazon.com/s3/home (或是服務搜尋 S3  )


點選 Create bucket



輸入 Bucket 名稱: 這邊以 sakana20210910 為例 ( S3 名稱必須具唯一性 )

選取 AWS Region: 這邊我選 Asia Pacific ( Tokyo ) ap-northeast-1




因為是要進行 CDN 的練習實驗

這邊 取消勾選 Block all public access

勾選 I acknowledge that the current settings might result in this bucket and the object within becoming public.


  • 這個動作就是將這個 S3 公開存取



其他按照預設值

點選 Create bucket




可以看到 Bucket 顯示在清單內

點選剛剛建立的 Bucket



點選 Upload 上傳檔案



可以使用拖曳的方式或是點選 Add files 或是 Add folder 來選取檔案或是資料夾



這邊我上傳一張 opensusetaiwan.png 為例子


點選 Upload 開始上傳



勾選剛剛上傳的檔案

點選 Actions -- > Make public



點選 Make public



點選 Close 關閉 Make public:status


然後點選剛剛上傳的檔案



點選 Object URL 或是在新分頁開啟 URL



就可以觀察到相關圖片




接下來因為之後 CNAME 會指向 AWS 的 CloudFront , 然後希望要有 HTTPS 的存取, 所以來設定憑證服務


==== 準備 AWS Certificate ====


登入 AWS Certificate Manager 服務


Region: N. Virginia (us-east-1)



點選 Get started



選取 Request a public certificate -- > 點選 Request a certificate



Domain name 的部份輸入自己控管的 Domain

例如 *.sakana.org

點選 Next



選取驗證方式 DNS validation

點選 Next


看看是否要加入 Tag

點選 Review


確認相關資訊

點選 Confirm and request




這個時候會出現要求驗證的 CNAME 以及相關的紀錄

  • 在自己的 DNS 管理介面( Gandi 或是其他代理商  ) 設定相關紀錄


設定完成之後 -- > 點選 Continue



驗證時間大概需要 5 分鐘左右


驗證成功, Status 會顯示 Issued




再來就可以處理正主, 就是 AWS CDN 服務,也就是 CloudFront


==== 建立 CDN ====


登入 CloudFront 服務 ( 可以搜尋 CloudFront )


可以點選歡迎頁面的 Create a CloudFront distribution




或是先點選左邊功能表的 Distributions



再點選畫面右上角的 Create distribution



Origin 設定:

輸入或是選取 Origin domain

這邊可以選取剛剛建立的 S3



名稱的部份可以自定義



Default cache behavior 設定:

  • 可以按照自行的環境進行設定



Cache key and origin requests

  • 可以先按照預設



Settings 的 Price class 依照業務範圍來進行設定



點選 Create distribution


觀察相關資訊 與進行小測試


建立完成後, 點選剛剛建立分佈

觀察 Distribution domain name


可以使用 curl 指令 分別測試 S3 路徑以及 CloudFront 相關路徑


S3 路徑



CloudFront 路徑





進行 CNAME 的設定


接下來進行 CNAME 的設定, 理由有 2

  • 實際上大多數, 不會直接使用 xxxxxxx.cloudfront.net URL 來使用, 而是用自己的 FQDN

  • 可以使用 CNAME 指向不同的 CDN 服務來達成備援



設定相對應的 CNAME 紀錄

  • 將要存取的 CNAME 紀錄設定到 CloudFront 的 Distribution domain name

    • 例如 cdn.sakanamax.org 指向  d152ffnru702na.cloudfront.net


回到 CloudFront 的服務


點選剛剛建立的分佈



點選 General 頁籤內 Settings 的 Edit 按鈕 


點選 Alternate domain name ( CNAME ) - optional 的 Add item 按鈕



輸入 CNAME

同步也可以選取 Custom SSL certificate ( 前面在  ACM 有設定 )與 Security policy



點選 Save changes


再次進行相關測試

使用 自訂的 FQDN 來進行存取




這樣又向 AWS 前進一步 :)


~ enjoy it


Reference: