iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0

啟用靜態網站託管

先進到 S3,選到你昨天辛辛苦苦建的 Bucket,結果畫面一堆按鈕,搞得比 VS Code 插件還多。
https://ithelp.ithome.com.tw/upload/images/20250915/201410714ZlAZAcgqZ.png

記得先確認 Region,別笑,真的有人部署到東京,結果客戶在美東開網頁慢得像是用 2G 網路。是沒有慢到這種程度啦,說得嚴重一點才能引起你的注意不是嗎?要是真遇到這種情況也別怕,我們後面再來聊聊 CDN(Content Delivery Network )。
https://ithelp.ithome.com.tw/upload/images/20250915/20141071r724I4CYxJ.png

在 S3 Bucket 的設定中,選擇 選擇 Properties
https://ithelp.ithome.com.tw/upload/images/20250915/2014107131zX0Attkm.png

滑到最下面,找到 Static website hosting,點 Edit → Enable,
https://ithelp.ithome.com.tw/upload/images/20250915/20141071nLrY7qc2vL.png

https://ithelp.ithome.com.tw/upload/images/20250915/20141071vLBUlWCNXP.png

Index document(索引文件)中,輸入索引文件的名稱,通常是 index.html。這邊大小寫敏感,不要隨便「Index.html」或「INDEX.HTML」,不然你會在 demo 當天得到一個乾淨俐落的 404。

順便還可以設定 Error document,比如 error.html。這樣至少用戶看到的不是 Amazon 原味 404,而是你自己設計的「不好意思系統壞掉了,工程師正在加班修復」的網頁。
https://ithelp.ithome.com.tw/upload/images/20250915/20141071ekYMNK6hMD.png
在設定頁面的最右下角,選擇 Save changes

完成設定後,在 Static website hosting 下會出現 Bucket website endpoint,請把這個網址先記錄下來。這就是這個 Bucket 的 Amazon S3 網站端點。等之後全部完成將 Bucket 設為靜態網站之後,就可以使用此端點來測試您的網站。
https://ithelp.ithome.com.tw/upload/images/20250915/20141071cuQqQiJq09.png

解鎖公開存取的限制

S3 預設超嚴格,檔案誰都不能看。這時候你就會想:
「欸我明明檔案都上傳了,怎麼還是 404?」
還記得前面說過預設設定建立的 Bucket 是鎖住外部取存的嗎?那我們既然是要做網站提供內容給大眾讀取,必然要把權限打開讓大家都可以讀取到。

接下來一樣到選到指定的 Bucket 中,選擇 Permissions (許可)
https://ithelp.ithome.com.tw/upload/images/20250915/20141071fd2wQgeHv6.png

在 Block public access (bucket settings) 下,選擇 Edit (編輯)。
https://ithelp.ithome.com.tw/upload/images/20250915/20141071zy9Hm25dGF.png

清除 Block all public access (封鎖所有公開存取),然後選擇 Save changes (儲存變更)。
https://ithelp.ithome.com.tw/upload/images/20250915/20141071CCmE0BIN9I.png

最後一步確認,在文字欄位中依提示輸入 confirm 進行確認,最後選擇右下角的 Confirm 完成設定
https://ithelp.ithome.com.tw/upload/images/20250915/20141071I2NU4sn04j.png
AWS 這招真的有點像你在刪資料庫前要打「DROP」,就是怕有誰手滑把公司整個網站公開,然後隔天被資安部門 call 早八會議。

建立 Bucket Policy

光解鎖還不夠,還要再加一段 Bucket Policy,不然瀏覽器還是會跟你說:「兄弟你沒權限」。
官方提供的 JSON 長這樣:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::Bucket-Name/*"
            ]
        }
    ]
}

重點來了:Bucket-Name 一定要改成自己的,別傻傻複製貼上。S3 的 Bucket 名稱全球唯一,
你要是忘了改,會發現「這誰寫的 code?」變成全公司的人在笑你。

來吧!!讓我們一步步完成
選擇指定的 S3 Bucket 後,選擇 Permissions (許可)
https://ithelp.ithome.com.tw/upload/images/20250915/20141071iNecMBSofc.png

在 Bucket Policy 設定的位置,選擇 Edit (編輯)
https://ithelp.ithome.com.tw/upload/images/20250915/201410713EXLoe0Fep.png

以我的範例來說,就會改成以下的內容

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::website-838002ef-a248-46d4-a89b/*"
            ]
        }
    ]
}

最後選擇 Save changes (儲存變更)。

準備 index.html

來了,終於要寫網頁了(雖然只是貼一個 hello world 等級的東西)。
請將以下的人內容保存成 index.html ,務必要注意大小寫。檔案要和前面設定 Index document 時相同,不然會找不到檔案哦!

<html>
<head>
    <title>Amazon S3 架站教學</title>
</head>
<body>
  <h1>這是首頁哦!!!!</h1>
  <p>如果你看到這個說明,就表示你成功啦!!!</p>
</body>
</html>

index.html 建立好後,上傳到指定 S3 Bucket 的第一層。
https://ithelp.ithome.com.tw/upload/images/20250915/20141071Pgh3dZqnK1.png

https://ithelp.ithome.com.tw/upload/images/20250915/20141071yGnBAv1Sf0.png

驗收成果

最後,把之前抄下來的 Bucket website endpoint 丟進瀏覽器,假如你真的看到那個「這是首頁哦!!!!」,
恭喜,你不但省下一台 EC2,還順便向老闆證明你是省錢小能手
https://ithelp.ithome.com.tw/upload/images/20250915/20141071Pv2vGZ5hI1.png

當然,等到流量一來,你會立刻被問:「為什麼這個網站不能跑 PHP?」
到時候就可以回答:「老闆,這不是 Bug,這是 Feature,S3 就是純靜態。」

眼尖的小夥伴可能會發現網址列那個紅色告警的不安全三個字,我們後來聊到 SSL 憑證時會解決這個問題的。

結論:S3 架站 = 又快又省錢(但是沒靈活度)

用 S3 架靜態網站就是這樣,便宜、快速、沒後端。適合拿來做 Landing Page、文件站、甚至「工程師個人履歷」。
缺點就是一旦老闆說:「要有會員登入」、「要能下單付款」,你就會立刻陷入 AWS 服務深淵(API Gateway、Lambda、DynamoDB 通通來)。

所以記得,S3 靜態網站就是:能用就好,拿來 demo 一級棒,拿來做 production?那就準備爆肝吧。

參考資料:Amazon S3 使用者指南官方文件 - https://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/Welcome.html


上一篇
Day 4 - 用 S3 建立網頁 - 設定篇 1
下一篇
Day 6 - S3 版本控管功能設定
系列文
最適合小型工作室精打細算的服務使用法6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言