AWS RDS 與 S3
Vibe Prompt
「幫我用 CDK 建立 RDS PostgreSQL(db.t3.micro)+ S3 Bucket,並設定 EC2 可以存取這兩者。」
CDK
import * as rds from 'aws-cdk-lib/aws-rds';
import * as s3 from 'aws-cdk-lib/aws-s3';
// RDS
const db = new rds.DatabaseInstance(this, 'Database', {
engine: rds.DatabaseInstanceEngine.postgres({ version: rds.PostgresEngineVersion.VER_16 }),
vpc,
instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.MICRO),
credentials: rds.Credentials.fromGeneratedSecret('dbadmin'),
allocatedStorage: 20,
securityGroups: [dbSg],
});
// S3
const bucket = new s3.Bucket(this, 'Assets', {
versioned: true,
encryption: s3.BucketEncryption.S3_MANAGED,
removalPolicy: cdk.RemovalPolicy.DESTROY,
});
bucket.grantReadWrite(instance);
export them by updating index.md with more content, and continue to fill chapters for the remaining courses.
關鍵要點
RDS 篇
- ✅ RDS 支援六種資料庫引擎:Aurora、MySQL、PostgreSQL、MariaDB、Oracle、SQL Server
- ✅ Multi-AZ:同步備份到另一個可用區域(DR)
- ✅ Read Replica:非同步複製,分擔讀取負載
- ✅ 自動備份:保留期 1-35 天,可還原到任意時間點
- ✅ 儲存自動擴展:當使用量接近上限時自動增加
| 特性 | Multi-AZ | Read Replica | |------|:--------:|:-----------:| | 目的 | 災難還原 | 讀取擴展 | | 複製方式 | 同步 | 非同步(最終一致) | | 可寫入 | 僅 primary | 僅 primary | | 自動切換 | ✅ | ❌ |
S3 篇
- ✅ S3 = 無限儲存空間,99.999999999% 持久性(11 個 9)
- ✅ 儲存類別:Standard → IA → Glacier → Deep Archive(成本遞減)
- ✅ Lifecycle Policy:自動轉移到更低成本的儲存類別
- ✅ 版本控制:防止誤刪,可回復到舊版本
- ✅ 靜態網站代管:直接從 S3 bucket 提供網站
# S3 Lifecycle Policy 範例
# 30 天後 → IA, 90 天後 → Glacier, 365 天後 → 刪除
aws s3api put-bucket-lifecycle-configuration \
--bucket my-logs \
--lifecycle-configuration '{
"Rules": [{
"Id": "log-lifecycle",
"Status": "Enabled",
"Transitions": [
{"Days": 30, "StorageClass": "STANDARD_IA"},
{"Days": 90, "StorageClass": "GLACIER"}
],
"Expiration": {"Days": 365}
}]
}'
常見錯誤
程式碼範例
RDS + S3:AWS 上最常用的資料儲存組合
RDS(關聯式資料庫)和 S3(物件儲存)是 AWS 上最基礎也最常用的儲存服務。
RDS:託管資料庫
RDS 支援 MySQL、PostgreSQL、MariaDB、SQL Server、Oracle——你不用管作業系統更新、磁碟備份、自動容錯轉移。
| 功能 | 效果 | 是否加錢 | |:----|:----|:--------| | Multi-AZ | 自動同步到另一個可用區 | ✅ 費用加倍 | | Read Replica | 讀取副本分散查詢流量 | ✅ 額外費用 | | 自動備份 | 每日備份 + 交易日誌 | ✅ 儲存費用 | | Storage Autoscaling | 磁碟滿了自動擴充 | ✅ 依使用量計費 |
S3:幾乎無限的物件儲存
S3 不是傳統的檔案系統——它是物件儲存。每個檔案(物件)放在 Bucket 中,透過 URL 存取。
| S3 儲存類別 | 可用性 | 每 GB 月費 | 適合 | |:----------|:-----|:---------|:----| | Standard | 99.99% | $0.023 | 頻繁存取的資料 | | Infrequent Access | 99.9% | $0.0125 | 備份、舊資料 | | Glacier | 99.99% | $0.004 | 歸檔、法規保留 |
下一章預告:ECS 與 EKS
資料放好了,下一步是部署應用。下一章將教你使用 ECS 和 EKS 來管理 Container——從單體服務到微服務架構的轉變。