在這篇文章中,將撰寫如何使用 AWS 所推出的 AI 輔助開發工具 Kiro,結合 Amazon S3 與 CloudFront 建立一個完整的靜態網站部署流程。本文以技術文章網站iThome 為範例!
Kiro 是 AWS 推出的 AI 輔助開發工具,基於 VS Code 架構,整合了 Amazon Q 的 AI 能力。它能夠做到以下功能:
可以在AWS Consol內部搜尋Kiro


或是由 Kiro 官方網站 安裝






安裝成功後的Kiro畫面!


第一次啟動時,可選擇從 VS Code 匯入設定與擴充套件
切換主題
相關套件匯入


跳出提示: 切換為繁體中文介面

Bonus Credit:新用戶會獲得免費額度,可用於 AI 功能




確保已安裝以下工具:
使用範例: 開啟一個聊天欄位
網頁結果

依序在cmd輸入以下指令:npm install -g hexo-cli

hexo init my-blog

cd my-blog + npm install
開啟server: hexo server
測試連結,開啟瀏覽器輸入: http://localhost:4000/可預覽網站
按
Ctrl + C可停止server。


安裝相關套件

npm install --save @string-bean/hexo-deployer-aws-s3

為什麼? Root 帳戶權限太大,不安全。所以需要創建一個專門用於部署的用戶。
登入 AWS Console
進入 IAM 服務
創建新用戶
設置用戶名
hexo-deployer
設置權限
AmazonS3FullAccess
CloudFrontFullAccess(如果要用 CDN)
審查並創建
創建訪問密鑰
hexo-deployer
重要:保存密鑰
AKIA****************
****************************************
ap-northeast-1(東京)或:ap-southeast-1(新加坡)
xian-hexo-blog-2025(必須全球唯一,只能小寫字母、數字、連字符)
index.html
404.html
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/
}
]
}
your-bucket-name替換為你的 bucket 名稱
arn:aws:s3:::xian-hexo-blog-2025/*



aws --version
aws configure
ap-northeast-1)json
在cmd輸入
npm install --save @string-bean/hexo-deployer-aws-s3

cd 你的專案路徑
_config.yml
deploy: 部分deploy:
type: aws-s3
bucket: your-bucket-name # 改為你的 bucket 名稱
region: ap-northeast-1 # 改為你的區域

3. 更新網站 URL
_config.yml 文件中url: 設置url: http://xian-hexo-blog-2025.s3-website-ap-northeast-1.amazonaws.com

4. 保存文件
# 清理快取
npm run clean

# 生成靜態檔案
npm run build

public 文件夾
部署到 AWS
在cmd輸入
# 部署至 S3
npm run deploy
開啟網站
npx hexo new post "我的第一篇文章"
source/_posts/ 創建新的 markdown 文件npm run server
npm run clean
npm run build
npm run deploy
CloudFront 是 AWS 的 內容傳遞網路 (CDN),它將你的網站內容快取到全球各地的邊緣節點,讓用戶可以從最近的伺服器獲取內容,大幅提升載入速度。
一個 CloudFront Distribution 就是一個 CDN 配置,包含:
內容的原始儲存位置,可以是:
全球超過 400 個節點,分布在:
| 功能 | 說明 |
|---|---|
| HTTPS | S3 靜態網站僅支援 HTTP,CloudFront 提供免費 SSL |
| 全球加速 | 內容快取至全球邊緣節點 |
| DDoS 防護 | 內建 AWS Shield Standard |
| 壓縮 | 自動壓縮 HTML/CSS/JS |
| 項目 | 值 |
|---|---|
| Distribution Domain | dkjuqtsbwj2f8.cloudfront.net |
| Origin | xian-hexo-blog-2025.s3-website-ap-northeast-1.amazonaws.com |
| Protocol | HTTPS(自動重定向 HTTP) |
| Price Class | 使用全部邊緣節點 |
https://dkjuqtsbwj2f8.cloudfront.net
http://xian-hexo-blog-2025.s3-website-ap-northeast-1.amazonaws.com
當你更新網站內容後,需要清除 CloudFront 快取:
/*(清除所有快取)CloudFront 提供詳細的統計數據:
your-bucket.s3-website-ap-northeast-1.amazonaws.com
使用 CloudShell 或本地終端機查詢狀態
aws cloudfront list-distributions \
--query "DistributionList.Items[*].[Id,DomainName,Status]" \
--output table

當網站內容更新後,需清除 CDN Cache:
aws cloudfront create-invalidation \
--distribution-id YOUR_DISTRIBUTION_ID \
--paths "/*"
提示:在瀏覽器按
Ctrl + Shift + R可強制刷新頁面。
# 建立主題資料夾
mkdir -p themes/fast-theme/layout/partial
mkdir -p themes/fast-theme/source/css
mkdir -p themes/fast-theme/source/js
在 _config.yml 中指定主題:
theme: fast-theme
原因:Bucket Policy 未正確設定或 Block Public Access 未關閉。
解決方案:
原因:CDN 快取尚未過期。
解決方案:
aws cloudfront create-invalidation \
--distribution-id YOUR_ID \
--paths "/*"
原因:AWS 憑證未正確配置。
解決方案:
aws configure
# 重新輸入 Access Key 與 Secret Key
| 服務 | 免費方案 | 超出後費用 |
|---|---|---|
| S3 | 5GB 儲存 / 20,000 GET | ~$0.023/GB |
| CloudFront | 1TB 傳輸 / 10M 請求 | ~$0.085/GB |
| Route 53 | - | $0.50/hosted zone |
對於小型部落格,通常可維持在免費方案範圍內。