# AWS S3 託管靜態網站 :::warning 注意!!! AWS S3本身不支援SSL加密,無法設定HTTPS通訊協定,必須透過CloudFront提供HTTPS請求。 https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/WebsiteEndpoints.html ::: ## 事前準備: * 靜態網站 * 網域名稱 ## 步驟: * 建立Bucket * 上傳檔案 * 設定靜態網站託管 * 設定存取權限 * 設定網域導向 * 轉掛Cloudfront ## 建立Bucket 新增一個Bucket ![image](https://hackmd.io/_uploads/By9V981E6.png) 用網域名稱命名,選定Region ![image](https://hackmd.io/_uploads/rycPqUJV6.png) 阻擋公開存取設定勾勾拿掉 > 可以針對細項調整存取限制 ![image](https://hackmd.io/_uploads/Bk-T5UkVp.png) 版本控制開了要錢,看需求吧 ![image](https://hackmd.io/_uploads/HywkjLkVa.png) 設定Objects加密方法,預設使用SSE加密金鑰 > 下方的選項Bucket Key不知道開啟是否會增加費用,待驗證 ![image](https://hackmd.io/_uploads/rJ8fjUJVT.png) 打開進階設定可以看到物件鎖定功能,依需求決定是否開啟 ![image](https://hackmd.io/_uploads/HkywiL1NT.png) ## 上傳檔案 將檔案拖曳至此,其餘設定都預設即可,上傳檔案 ![image](https://hackmd.io/_uploads/ry-AkDyEa.png) ## 設定靜態網站託管 點擊進入Bucket,選擇屬性往下拉到底會看到“靜態網站託管”設定 ![image](https://hackmd.io/_uploads/Sk7xZPyEp.png) ![image](https://hackmd.io/_uploads/BJXLZwyEa.png) 啟用此功能,並設定索引文件 ![image](https://hackmd.io/_uploads/S1b5ZDy46.png) ## 設定存取權限 啟用託管後會出現公開連結,但目前是403無存取權限 ![image](https://hackmd.io/_uploads/Syw8zvkE6.png) ![image](https://hackmd.io/_uploads/BkfmGDyE6.png) 進入權限分頁,往下拉找到儲存桶政策,點擊設定 ![image](https://hackmd.io/_uploads/ByStVPJVT.png) ![image](https://hackmd.io/_uploads/rJMj4Py4T.png) 政策設定是JSON格式,左上方可以複製ARN,待會要用; 按下右邊新增狀態,可依需求點選,左側會長出相對應的JSON定義檔 ![image](https://hackmd.io/_uploads/S1g0HDJVT.png) ![image](https://hackmd.io/_uploads/rJUQwvJNa.png) 定義行為 ![image](https://hackmd.io/_uploads/B13DPvyV6.png) 定義來源 ![image](https://hackmd.io/_uploads/SyiaPwkNp.png) 這行表示誰會受到此政策影響,設定"*" 即可,來源的結尾也要調整一下 ![image](https://hackmd.io/_uploads/Sy29KwJN6.png) 公開網址可以成功連線了,接著設定網域導向吧! ![image](https://hackmd.io/_uploads/B1exoDJVT.png) > 參考文章 > [AWS官方文件-SSE-KMS金鑰指南](https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/bucket-key.html?icmpid=docs_amazons3_console) > [AWS官方文件-儲存桶政策設定](https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/WebsiteAccessPermissionsReqd.html) ## 設定網域導向 將域名從Godaddy導向AWS S3儲存桶 先複製這一段(.s3-website.ap-east-1.amamzonaws.com) ![image](https://hackmd.io/_uploads/Sy4C-ae46.png) 設定CNAME ![image](https://hackmd.io/_uploads/S1IOzpe4T.png) 等待生效後,就可以連線了,兩種方法驗證成功與否 1. 直接輸入網址 ![image](https://hackmd.io/_uploads/r1gEXpxNa.png) 2. 使用dog 指令查詢,由此可知解析通了沒有 ![image](https://hackmd.io/_uploads/B18xVTxEa.png) ## 轉掛Cloudfront 目前還是不安全的通訊協定,需要加密憑證來達成https