⚠️ 提醒:這篇文章是完整的雲端環境評估記錄。
內容會涵蓋成本試算、安全權衡、部署方式等細節,屬於「實務考量」的展開。本文適合「想控制雲端成本」且「熟悉 AWS/Cloudflare 基礎」的讀者。如果只是想快速驗證功能,直接用 Vercel/Zeabur 更快。如果是雲端新手,建議先熟悉基礎後再閱讀。
既然這個系列放在 DevOps 分類,沒有搬到公有雲感覺就少了那一味 🥳。
所以把功能在本機跑通(Day27)後,今天我們會進入最容易「燒錢」也最常被忽略的環節:雲端環境評估。我會用最小可行(但安全)的方式,把 Demo 架構搬到雲上:
今天的內容會是架構評估與成本試算,明天(Day29)則是實際部署以及處理入口安全性。
本文所有價格以 2025/09–10 的官方定價為準,文末會標註我的假設與取捨。
系統架構圖(System Architecture Diagram)
在上生產線實戰環節,我會分成五個表格來羅列可能會花費的成本,分別是:AWS、Cloudflare、GitHub、Grafana Cloud 以及 OpenAI。這份表格的有效性建立在 2025 年 9 ~10月的期間,如果後續有人看到這篇文章與實際上的價目表有出入,請自行查找官方文件,以免造成費用損失。
我是部署在東京區域,以東京區域(ap-northeast-1)為準,通常北美區域的定價會是最便宜的。我這個 AWS 帳號是在 2025 年 8 月辦的,所以只有 6 個月 Free Tier / $100 Credits 可以折抵。
服務 | 是否有 Free Tier / 免費額度 | 以 RAG-FAQ-BOT 實際部署上去是否計費 | 備註 |
---|---|---|---|
EC2(t4g.medium) | 有 Free Tier(t4g.small),但不符合本案實際需求 | 💰 約 $0.0432 / 小時(東京區,Linux/按需) | 2 vCPU、4 GiB RAM。適合跑 FastAPI / Python 應用,比 Free Tier 涵蓋的 t4g.small(2 GiB RAM)更穩定。若長時間執行建議搭配 Budgets 設警示。(Amazon Web Services, Inc.) |
EBS(根磁碟) | 30 GB 儲存 + 200 萬 I/O + 1 GB Snapshot | 💰 約 $1.44 / 月(若帳號仍在 Free Tier 期間則 $0,但不在 Free Tier 的 EC2 則不會套用) | 東京區 gp3 約 $0.096/GB-month;本例 15 GB × 0.096 = $1.44。Free Tier 配額合併計算,停機仍計費;刪除才歸零。(Amazon Web Services, Inc.) |
ElastiCache for Redis | (僅限 2025-07-15 前註冊帳號)cache.t3.micro 750 小時 / 月(12 個月) | ⚠️ 帳號 2025/08 新開 → 不適用💰 約 $0.0208 / 小時(全區域通用估算) | 若在 2025-07-15 之後開戶,這項 Free Tier 不一定提供。(Amazon Web Services, Inc.) |
CloudWatch Metrics | 免費層(多數 AWS 服務的基本指標免費) | ✅ 多數情況免費,AWS 服務自帶的 metrics 是免費的 | 付費多集中在自訂 metrics。(Amazon Web Services, Inc.) |
SSM Parameter Store(標準) | Always Free(標準參數、不啟用進階) | ✅ 免費 | 可存純文字與 KMS 加密參數;常用於取代 Secrets Manager。〔官方定價頁未集中列本項免費額度,屬 Always Free 類型〕 |
Secrets Manager | 無 Free Tier | 💰 $0.40 / secret / 月 + $0.05 / 1k API calls | 若要省錢可改存 Parameter Store(自行管理 rotation)。〔官方定價頁〕 |
S3 | 5 GB 標準儲存(12 個月) | ✅ 免費⚠️ 超出才收費 | 存 FAISS index 通常很小。〔AWS Free Tier 總覽頁〕💡S3 傳回 EC2:同區域免費;若 EC2 取 S3 檔案不會收費。 |
AWS Budgets | Budgets 本身免費;含動作的 Budgets 前 2 個免費 | ✅ 免費 | 建議設超額/Free Tier 用量警示。(Amazon Web Services, Inc.) |
VPC | 單純 VPC + Subnet + Route Table 幾乎是 0 元。⚠️ Free Tier 的 EIP(Elastic IP):若綁定並持續使用在一台執行中的 EC2 上,免費;但如果 沒綁定 / 綁定但 EC2 沒跑,就會收 $0.005/hr。 | 💰 $0.005 IP/hr,約 $3.65/每 IP・每月 以 730 小時計(EC2 需要綁定 Public IP 才能出網) | 同一 AZ 內:免費跨 AZ:有流量費(目前大約 $0.01/GB)。 |
EC2 Egress | 無 Free Tier | 以東京區 (ap-northeast-1) 來看:✅ 前 1GB/月免費💰 1GB 之後:$0.114/GB(東京區價格,比美東貴一點) | FastAPI 應用在 EC2 上回應 Cloudflare Worker 的請求,那些回應流量(HTML/JSON 給外部用戶)全部算 出網費。 |
類別 | Free 計畫內容 | 以 RAG-FAQ-BOT實際部署上去是否計費 | 備註 |
---|---|---|---|
Workers | 100,000 requests / 日(每日 00:00 UTC 重置) | ✅ 免費 | 超過即失敗或需升級;程式裡面 Error Handler 可選「fail open / fail closed」。(Cloudflare Docs) |
Pages | 每月 500 次 build(Free) | ✅ 免費 | Pages Functions 的請求會算進 Workers 配額。(Cloudflare Docs) |
Zero Trust / Access | 免費(適合 ≤ 50 使用者) | ✅ 免費 | 設定 Access 規則時務必選 Service Auth(避免被導到使用者登入流程)。(Cloudflare) |
Tunnel(cloudflared) | 用於反向代理到內部服務 | ✅ 免費(我甚至沒買域名) | 建議正式使用 Named Tunnel + 自網域;Quick Tunnel 僅適合開發。〔官方建議方向〕 |
項目 | Free / 內含額度(Private Repo) | 以 RAG-FAQ-BOT實際部署上去是否計費 | 備註 |
---|---|---|---|
Actions(GitHub-hosted runners) | 2,000 分鐘 / 月(Linux runner 計 1 倍;Windows ×2;macOS ×10) + 500 MB Artifacts 儲存 | ✅ 免費 | 超過配額後依 runner 類型計價。公有 repo 無限免費;Private Repo 會消耗這 2,000 分鐘額度。自託管 runner 不吃分鐘數。(GitHub Docs) |
GHCR(Container Registry) | 500 MB 儲存(包含 Packages / Container Registry) | ✅ 免費 | 公有 repo 套件免收費;Private Repo 則包含在免費 500 MB 儲存配額內,超過會依用量收費。官方文件同時提醒,單一 layer 上限 10 GB 與頻寬限制仍適用。(GitHub Docs) |
項目 | Free / 內含額度 | 以 RAG-FAQ-BOT實際部署上去是否計費 | 備註 |
---|---|---|---|
Metrics | 10,000 active series,14 天保留期 | ✅ 免費 | 足夠 Demo 使用;超出需升級付費方案。 |
Users / Teams | 3 個使用者 | ✅ 免費 | Free Plan 最多 3 人;協作時若人數更多需升級。 |
Dashboards | 無特別限制 | ✅ 免費 | 主要受限於 active series / 保留期。 |
Integrations | 包含多數常見 Cloud / App 整合(AWS、Prometheus Remote Write 等) | ✅ 免費 | Demo 常見需求足夠。 |
項目 | 免費額度 | 以 RAG-FAQ-BOT實際部署上去是否計費 | 備註 |
---|---|---|---|
OpenAI API | 無一般性 Free Tier | 💰依 token 計費 | 例如 gpt-4o-mini:$0.15 / 1M input、$0.60 / 1M output(作為成本估算基準);實際以定價頁為準。(OpenAI) |
項目 | 單價 / 假設 | 預估月費 (USD) |
---|---|---|
EC2 t4g.medium | $0.0432/hr × 720h ≈ $24.2/月 | $31.104 |
EBS 根磁碟(gp3 15 GB) | $0.096/GB-month × 15 GB ≈ $1.44/月 | $1.44 |
ElastiCache Redis (cache.t3.micro) | $0.0208/hr × 720h ≈ $15/月 | $15.0 |
CloudWatch Metrics | 只用內建(免費) | $0 |
SSM Parameter Store (標準) | Always Free | $0 |
Secrets Manager | $0.40/secret-月;假設 2–3 個 secret = $0.8–1.2 | $0.8 ~ $1.2 |
S3 | 5 GB Free Tier;索引很小 → $0 | $0 |
VPC / EIP | $0.005 IP/hr * 720h = 3.6 | $3.6 |
EC2 出網流量 (Egress) | 前 100 GB 免費;超過 $0.12/GB | 0(≤100GB) ~ $12(200GB) |
查詢量 / 月 | Token 數 (平均 1k/query) | 成本估算 |
---|---|---|
10k queries | 約 10M tokens | ≈ $7.5/月 |
50k queries | 約 50M tokens | ≈ $37.5/月 |
100k queries | 約 100M tokens | ≈ $75/月 |
場景 | AWS 成本 | OpenAI 成本 | 合計/月 |
---|---|---|---|
極輕量 Demo(< 10k 查詢、≤100GB egress) | $55.72 | $7.5 | $63.22 |
中等 Demo(~50k、~200GB egress) | $55.72 + $12 = $67.72 | $37.5 | $105.22 |
高使用 Demo(~100k、~400GB egress) | $55.72 + $36 = $91.72 | $75 | $166.72 |
本專案使用到的 Terraform IaC 程式碼也會放在 GitHub,有興趣的讀者可以拉下來研究。
⚠️ 這邊請絕對要自己去查 Free Tier 的區域和額度!實務上建立資源都很快,很多時間都是花在事前的評估和 Infrastructure 費用計算,因為 AWS 的 Free Tier Policy 有可能會變。
EC2 能支援 gp3 的 20 GB 免費不代表可以支援 RDS 的 gp3 的 20 GB,而且有沒有獨立計入 Free Tier 也要留意。
另外還有一個容易忽視的成本就是 AWS 的網路費用,特別是 egress 出網費用以及 AZ 之間的網路流量費用。所以這個 Demo 架構會把資源都放在同一個 AZ,我們先犧牲高可用換來節省費用。
AWS Infrastructure 架構圖
建立好所有 Infra
資源之後,確認一下 ec2 instance
能夠順利連線到 RDS Instance
以及 ElastiCache Instance
。順便把 Budgets
設定好,不然哪天設定錯誤帳單下來會哭 🫠
AWS Budgets Dashboard
Infra
資源都建立好之後,接下來的工作就是撰寫簡單的後端 API。
如果要串 GitHub
CI/CD 這邊要先做幾件事情:
ssm:SendCommand
、ssm:List*
、ec2:DescribeInstances
deploy_role_arn
:放在 Actions Secrets 的 AWS_ROLE_TO_ASSUME
GHCR
是 private
的關係,稍後會需要在 Secrets Manager
存一把 PAT(read:packages)
EC2
的 Instance Role
可以讀到上面的 Secret
secret
接下來確認一下能夠把後端程式碼打包以及推到 ghcr.io
,目前結構長這樣,要透過 GitHub Workflow
打包推送 :
.
├── README.md
├── backend
│ ├── Dockerfile
│ ├── app
│ │ └── main.py
│ └── requirements.txt
└── frontend
└── index.html
第一次打包會比較久是正常的
接下來要把打包好的 Image
部署到 EC2
上面,我們要先把以下值存到 GitHub Repo
的 Repository Secrets
:
AWS_ROLE_TO_ASSUME
(gha-deploy-ssm 的 Role ARN)EC2_INSTANCE_ID
(EC2 ID)GHCR_SECRET_ARN
(Secrets Manager 裡存 PAT 的 ARN)寫好部署腳本和 GitHub Workflow
之後,可以在 deploy
的 logs console 看到:
連線到 EC2
後驗證容器確實有起來:
sh-5.2$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a8d07544a34 ghcr.io/hazel-shen/rag-qa-bot:latest "uvicorn app.main:ap…" 14 minutes ago Up 14 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp rag-qa-bot
sh-5.2$ curl -i localhost:8080
HTTP/1.1 200 OK
date: Sat, 20 Sep 2025 09:11:27 GMT
server: uvicorn
content-length: 35
content-type: application/json
{"message":"hello from rag-qa-bot"}
如果是一般的 Demo 情況的話,當然可以自己實作認證的功能。但是實務上在後端加上這些邏輯不但會拉長交付時程,這些功能也不是專案的核心價值,所以我選擇外包給 Cloudflare。
認證這種高風險的基礎建設,如果自己實作不但容易出漏洞,交給 Cloudflare Access / Zero Trust,可以直接用 SSO、多因子驗證、細緻存取策略,安全性與合規水準都比自建高,重點是Cloudflare 免費方案真的有夠佛。
Cloudflare Zero Trust 架構圖
這邊用一張表格說明上面架構圖的元件之間的關係,以及使用到的功能:
層級 | 範例域名 / 元件 | 對外狀態 | 保護方式 |
---|---|---|---|
前端 (Cloudflare Pages) | https://yourdomain.com 、https://project.pages.dev |
🔐 公開但受保護:需 Cloudflare Access(GitHub Login) 後才可瀏覽 | - Cloudflare Access(Login 規則)-(可選)限制只允許自家網域的 Origin/Referrer-Policy |
Pages Functions | https://project.pages.dev/api/* |
🔐 受保護:與 Pages 同一組 Access | - 同上(Access)- 注意:Functions 的請求會計入 Workers 配額 |
Worker (API Proxy) | https://api.yourdomain.com 、https://api-proxy.<sub>.workers.dev |
🔐 受保護:Cloudflare Access(Service Auth) 後才可呼叫 | - Access(Service Token,規則置頂)- CORS 白名單(僅允許 Pages 網域)- Rate Limiting(身分/路由/租戶級)- HMAC/Nonce 驗簽、轉發時加 X-From-Worker |
Tunnel 子網域(內部 API) | Quick Tunnel:https://*.trycloudflare.com (開發)Named Tunnel:https://api-internal.yourdomain.com (正式) |
開發:⚠️ 實務上是可被探測(隨機但對外公開)正式:🔐 僅 Worker 可用(不對外) | - 正式環境:Named Tunnel + 自網域- 後端強制驗 X-From-Worker 或 mTLS(Authenticated Origin Pulls)- 不建議公開對外 DNS;若保留,需再疊 Access/WAF |
EC2 後端服務 | http://localhost:8080 (VPC 內) |
🔒 不公開:僅 cloudflared 連入 |
- SG不開任何入站- 僅 loopback/本機服務- 中介層驗 X-From-Worker (或 HMAC)才處理 |
先部署Day7 的範例前端頁面到 Cloudflare Page 上面,可以選擇匯入現有 Git:
部署完成,點開域名就可以查看頁面,要注意這邊的域名是 對外公開 的。
先拿 Day7
的 Demo 頁面來部署,結果如下:
在這邊我們會需要用到 GitHub APP 作為 Cloudflare 認證的媒介:
設定好了之後可以在 Cloudflare 端測試是否串接成功:
如果不是設定條件的帳號就會登入失敗,這邊在條件設定遇到了神秘的情況,貌似只用 email 會連自己也無法登入:
解法,把 GitHub
username 寫上去包含條件:
後來這個設定也可以...? 總之後面有成功。
在前端 Cloudflare Pages 與後端 EC2 / Container Service 之間,我們不直接暴露後端,而是透過 Cloudflare Worker 做一層反向代理(Reverse Proxy)。這樣可以:
為了保護我們的後端 API,會限制來源 Domain 為 https://${你的專案名字}.pages.dev 才能存取這個 URL
,所以直接 curl 會得到以下結果:
❯ curl -i https://api-proxy.XXXX.workers.dev/
HTTP/2 403
...
...
...
Forbidden: invalid caller%
但是只靠 CORS
並沒有辦法防止有心人士偽造來源並存取,且 DoS / DDoS
等暴力攻擊仍然會消耗每天十萬次的免費 quota。那要如何兼顧免費又安全的需求呢?
🤝 Cloudflare Access
仍然是你最好的朋友(本文並沒有收到任何廠商贊助)
Cloudflare Access (Zero Trust) 可以在 Worker 入口 就攔截非法請求,沒帶對的 Service Token / Identity 就直接擋掉。不只可以擋掉偽造 Origin,連「根本不應該存在的請求」也不會進到 Worker。
⚠️ 此處有坑,等等會講這張圖的坑在哪...
加上 Access
之後就沒有辦法直接存取 reverse proxy 的域名了。
就是這裡 🔥
請千萬要選 Service Auth
,不然你會一直卡在上面人類用的 302 轉導頁面
,Cloudflare 會以為你是人類要登入。
官方文件這裡有寫:You can now configure your Access applications and device enrollment permissions to accept this service token. Make sure to set the policy action to Service Auth; otherwise, Access will prompt for an identity provider login.
Response 出現 200
就是過了。
❯ curl -i -s -o -L /dev/null -w '%{http_code} %{redirect_url}\n' \
https://api-proxy.8qrsvmh9rs.workers.dev/ping \
-H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
-H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
-H "x-from-pages: $PAGES_SECRET"
...
...
...
{"ok":true,"time":"2025-09-20T13:23:28.757Z","worker":true}200
Tips:
- Access 規則有順序,請把「Service Auth」放在最上面,避免被後面的 Login 規則覆蓋。
- Worker 代理到後端前,先刪掉外部來的機敏 Header(如 Authorization、Cookie),只保留你要轉發的簽章或 Service Token。
到這邊比較細心的讀者可能會想說,那假設有人剛好猜中 Service Token
,或是有使用者行為比較奇特,會一直拿正確的 Service Token
重複嘗試存取 Worker
的話,我要怎麼做?
明天(Day29)在實際部署的文章中,會示範如何在 Cloudflare Pages Function 實作認證以及 Rate Limit 功能。就算是內部人員,也要防止他們的應用程式亂打(筆者親身經驗😃)。
首先我們要先建立一條開發通道,連上 EC2 之後安裝 .rpm
套件:
curl -LO https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-aarch64.rpm
sudo yum install -y ./cloudflared-linux-aarch64.rpm
# 打開開發通道,Cloudflare 會給你一個臨時網址
cloudflared tunnel --url http://localhost:8080
在沒有自己的網域時,可以暫時維持 Workers 的 *.workers.dev
作為固定入口,讓外部世界始終透過同一個網址存取。實作方式是把 Quick Tunnel 隨機產生的 URL 放到 Worker 的 Secret(例如 BACKEND_ORIGIN
),並在每次重啟 cloudflared
後自動更新 Secret、重新 deploy Worker,如此外界只需使用固定的 https://your-worker.xxx.workers.dev
。
⚠️ 不過,這種方式只是不花錢的權宜(Demo)之計:
正式上線方案仍應該使用 Named Tunnel + 綁定自己的網域,並加上 Cloudflare Access / WAF / Rate Limit 等機制,才能確保連線的穩定性與安全性。
正式 / Demo 風險比較
如果是以省錢為目標的話,自然是花錢的基礎建設能夠不要自建就不要自建。剛好之前有看到 Grafana Cloud
有一些錢包友善的 Free Plan 給獨立開發者,索性直接拿來用。
不知道為什麼網站上面產生的範例呼叫會有 400 Error,改寫了一下,然後傳送測試 metrics:
# 1) 產生奈秒時間(任何環境都可)
TIME_NANO=$(python3 - <<'PY'
import time; print(int(time.time()*1_000_000_000))
PY
)
echo "timeUnixNano=$TIME_NANO"
# 2) 建 payload(注意 asInt 是數字,timeUnixNano 也是數字,沒有引號)
cat > payload.json <<EOF
{
"resourceMetrics": [{
"resource": { "attributes": [
{ "key": "service.name", "value": { "stringValue": "curl-demo" } }
]},
"scopeMetrics": [{
"scope": { "name": "manual" },
"metrics": [{
"name": "test_metric",
"unit": "s",
"gauge": { "dataPoints": [{
"timeUnixNano": $TIME_NANO,
"asInt": 1,
"attributes": [
{ "key": "bar_label", "value": { "stringValue": "abc" } }
]
}]}
}]
}]
}]
}
EOF
# 3) 送出 Request
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${Grafana 給你的 instance ID}:${你的 API Token}" \
--data-binary @payload.json \
https://${Grafana 給你的 endpoint}}$/otlp/v1/metrics
在 Grafana Cloud Console 上面看到測試資料了 🎉
如果 API Token
沒有存到的話,可以回到一開始的 Console 頁面找 Access Policies
:
或是可以在 Grafana Cloud Console 找下面這個子頁面,也可以看到一樣的東西:
Home > Administration > Users and access > Cloud access policies
專案的擴展性和 Log 會留待本系列最後一天(Day30)回覆。
從上面的架構圖來看,不難發現我的實作其實是使用 Cloudflare (Worker + Access + Rate Limit)
去模擬 ALB (反向代理) + WAF (規則/限流) + Cognito/OIDC (驗證)。
以下從 成本、延遲、架構 三個面向說明我在模擬雲端生產環境時的取捨:
ALB 光是「開著不用(流量都還沒進來)」就有固定費(約 $20/月等級),再加上 WAF 基本費,每月硬成本大概 $25–$40。用 Cloudflare 實作,在流量不大時幾乎沒有固定費,能把 TCO(總持有成本,Total Cost of Ownership) 壓到很低。
服務 | 定價模式 | 預估月費 (低流量 Demo) | 備註 |
---|---|---|---|
ALB (Application Load Balancer) | 固定時費:$0.0272/hrLCU:$0.008/LCU-hr | $19.6 (固定費用) + $5~10 (LCU,取決於流量/新連線/規則數) | LCU 包含:新連線數、活躍連線數、處理的規則數、流量。即使流量小,固定費用跑不掉。 |
WAF v2 | $5 / WCU / 月$1 / rule / 月 | $5–10 起 | 例如:1 個 WebACL (5 WCU) + 幾條規則 (3–5 條),就要 $8–10/月。流量大會再算 request 費用。 |
Cognito (OIDC/OAuth2 驗證) | MAU (Monthly Active User) 計價:前 50k user 免費 | 0 | 如果只是內部 demo,幾十個帳號基本免費。企業大流量才開始收費。 |
把驗證/限流前移到 Edge,能就近終止 TLS 與擋壞流量;有效請求雖多了極薄的邊緣處理開銷,但整體體感更快、更穩。
路徑 | 連線段 | 典型影響 |
---|---|---|
直連 ALB | 使用者→東京 ALB | 單段往返;少一跳、理論上最短。 |
Cloudflare(Pages/Worker/Access)→ EC2 | 使用者→最近邊緣 →(邊緣長連)→ 東京 EC2 | 邊緣終止 TLS/驗簽/快取;有效請求多 +5~15ms;無效請求在邊緣就被丟棄,不進 AWS。 |
Cloudflare Tunnel | 邊緣→EC2 走 tunnel | 和直連來源相比,通常再 +數毫秒~十餘毫秒;但保持長連線、HTTP/2/壓縮,可抵銷一部分。 |
註:AWS WAF 綁在 ALB,能在 ALB 就擋下,不會到 EC2,但已進到 AWS 區域與 ALB。
跟認證有關的設定全部都用 worker 在 Edge 處理掉、前端與 API 同域治理,可以讓環境配置更單純一些:
面向 | Cloudflare Edge(Pages + Worker + Access) | AWS ALB + WAF + Cognito(傳統) |
---|---|---|
域名/SSL | Pages 與 API Worker 同域,一份 SSL | 前後端分域:ALB + ACM + Route53,多處配置 |
CORS/Headers | 於 Worker 統一處理,前端/API 一致 | ALB 與後端各自配置,規則重複,易錯 |
基建複雜度 | 單一控制點(Edge),配置少 | 三套服務協作(ALB + WAF + Cognito) |
主要原因是因為筆者個人習慣用 Secret Manager,差異如下表,有版本 Stage 功能的話可以防止 Secret 更新後 App 直接連不到 DB 之類的連線中斷問題。如果是 Demo 之類的想極致省錢其實用 Parameter Store 也可以用。
功能 | Parameter Store (SecureString) | Secrets Manager |
---|---|---|
加密 | ✅ KMS | ✅ KMS |
IAM 控制 | ✅ | ✅ |
CloudTrail 紀錄 | ✅ | ✅ |
Rotation(自動換密碼) | ❌ 自己寫 | ✅ 內建 RDS/Aurora、自訂 Lambda |
版本 Stage (AWSCURRENT / AWSPREVIOUS ) |
❌ 沒有 | ✅ 有 |
定位 | 泛用參數抽屜 | 專門密碼保險箱 |
Parameter Store vs Secret Manager
請 OpenAI
幫忙畫了一張圖(?)
今天做了三件事,把「能跑」推進到「能上雲」:
這篇不是「怎麼跑起來」,而是「怎麼花小錢、保留升級路徑地跑起來」。
如果想讓 Demo 更接近生產水準,Day28 就是那第一道上雲門檻。
明天(Day29) 會把 Day27 的後端透過 GitHub CI/CD 搬上 EC2,補上自動化與安全細節。