cloud-architect

cloud-architect

熱門

設計雲端架構、建立遷移計畫、產生成本最佳化建議,並制定跨 AWS、Azure 與 GCP 的災難復原策略。適用於設計雲端架構、規劃遷移或最佳化多雲部署。可調用於 Well-Architected Framework、成本最佳化、災難復原、登陸區、安全架構、無伺服器設計。

1.1萬星標
972分支
更新於 2026/5/20
SKILL.md
唯讀
名稱
cloud-architect
描述

設計雲端架構、建立遷移計畫、產生成本最佳化建議,並制定跨 AWS、Azure 與 GCP 的災難復原策略。適用於設計雲端架構、規劃遷移或最佳化多雲部署。可調用於 Well-Architected Framework、成本最佳化、災難復原、登陸區、安全架構、無伺服器設計。

雲端架構師

核心工作流程

  1. 探索 — 評估現狀、需求、限制、合規要求
  2. 設計 — 選擇服務、設計拓撲、規劃資料架構
  3. 安全 — 實施零信任、身分聯合、加密
  4. 成本模型 — 調整資源大小、預留容量、自動擴展
  5. 遷移 — 應用 6R 框架、定義遷移波次、在切換前驗證連線
  6. 營運 — 設定監控、自動化、持續最佳化

工作流程驗證檢查點

設計後: 確認每個元件都有備援策略,且拓撲中無單點故障。

遷移切換前: 驗證 VPC 對等或連線已完全建立:

# AWS:確認對等連線狀態為 Active 後再繼續
aws ec2 describe-vpc-peering-connections \
  --filters "Name=status-code,Values=active"

# Azure:確認 VNet 對等狀態
az network vnet peering list \
  --resource-group myRG --vnet-name myVNet \
  --query "[].{Name:name,State:peeringState}"

遷移後: 驗證應用程式健康狀態與路由:

# AWS:檢查 ALB 中的目標群組健康狀態
aws elbv2 describe-target-health \
  --target-group-arn arn:aws:elasticloadbalancing:...

災難復原測試後: 確認已達成 RTO/RPO 目標;記錄實際復原時間。

參考指南

根據情境載入詳細指引:

主題 參考文件 載入時機
AWS 服務 references/aws.md EC2、S3、Lambda、RDS、Well-Architected Framework
Azure 服務 references/azure.md VM、儲存體、Functions、SQL、Cloud Adoption Framework
GCP 服務 references/gcp.md Compute Engine、Cloud Storage、Cloud Functions、BigQuery
多雲 references/multi-cloud.md 抽象層、可攜性、降低供應商鎖定
成本最佳化 references/cost.md 預留執行個體、Spot、調整大小、FinOps 實務

限制

必須執行

  • 設計高可用性(99.9% 以上)
  • 實施安全設計(零信任)
  • 使用基礎設施即程式碼(Terraform、CloudFormation)
  • 啟用成本分配標籤與監控
  • 規劃災難復原,定義 RTO/RPO
  • 對關鍵工作負載實施多區域部署
  • 盡可能使用受管服務
  • 記錄架構決策

禁止事項

  • 在程式碼或公開儲存庫中儲存憑證
  • 跳過加密(靜態與傳輸中)
  • 建立單點故障
  • 忽略成本最佳化機會
  • 未妥善監控即部署
  • 使用過於複雜的架構
  • 忽略合規要求
  • 跳過災難復原測試

常見模式與範例

最小權限 IAM(零信任)

使用範圍限定的政策而非寬鬆政策:

# AWS:為應用程式建立範圍限定的角色
aws iam create-role \
  --role-name AppRole \
  --assume-role-policy-document file://trust-policy.json

aws iam put-role-policy \
  --role-name AppRole \
  --policy-name AppInlinePolicy \
  --policy-document '{
    "Version": "2012-10-17",
    "Statement": [{
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject"],
      "Resource": "arn:aws:s3:::my-app-bucket/*"
    }]
  }'
# Terraform 等效寫法
resource "aws_iam_role" "app_role" {
  name               = "AppRole"
  assume_role_policy = data.aws_iam_policy_document.trust.json
}

resource "aws_iam_role_policy" "app_policy" {
  role = aws_iam_role.app_role.id
  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Effect   = "Allow"
      Action   = ["s3:GetObject", "s3:PutObject"]
      Resource = "${aws_s3_bucket.app.arn}/*"
    }]
  })
}

具有公有/私有子網路的 VPC(Terraform)

resource "aws_vpc" "main" {
  cidr_block           = "10.0.0.0/16"
  enable_dns_hostnames = true
  tags = { Name = "main", CostCenter = var.cost_center }
}

resource "aws_subnet" "private" {
  count             = 2
  vpc_id            = aws_vpc.main.id
  cidr_block        = cidrsubnet("10.0.0.0/16", 8, count.index)
  availability_zone = data.aws_availability_zones.available.names[count.index]
}

resource "aws_subnet" "public" {
  count                   = 2
  vpc_id                  = aws_vpc.main.id
  cidr_block              = cidrsubnet("10.0.0.0/16", 8, count.index + 10)
  availability_zone       = data.aws_availability_zones.available.names[count.index]
  map_public_ip_on_launch = true
}

自動擴展群組(Terraform)

resource "aws_autoscaling_group" "app" {
  desired_capacity    = 2
  min_size            = 1
  max_size            = 10
  vpc_zone_identifier = aws_subnet.private[*].id

  launch_template {
    id      = aws_launch_template.app.id
    version = "$Latest"
  }

  tag {
    key                 = "CostCenter"
    value               = var.cost_center
    propagate_at_launch = true
  }
}

resource "aws_autoscaling_policy" "cpu_target" {
  autoscaling_group_name = aws_autoscaling_group.app.name
  policy_type            = "TargetTrackingScaling"
  target_tracking_configuration {
    predefined_metric_specification {
      predefined_metric_type = "ASGAverageCPUUtilization"
    }
    target_value = 60.0
  }
}

成本分析 CLI

# AWS:找出過去 30 天的前幾大成本驅動因素
aws ce get-cost-and-usage \
  --time-period Start=$(date -d '30 days ago' +%Y-%m-%d),End=$(date +%Y-%m-%d) \
  --granularity MONTHLY \
  --metrics "UnblendedCost" \
  --group-by Type=DIMENSION,Key=SERVICE \
  --query 'ResultsByTime[0].Groups[*].{Service:Keys[0],Cost:Metrics.UnblendedCost.Amount}' \
  --output table

# Azure:依資源群組檢視支出
az consumption usage list \
  --start-date $(date -d '30 days ago' +%Y-%m-%d) \
  --end-date $(date +%Y-%m-%d) \
  --query "[].{ResourceGroup:resourceGroup,Cost:pretaxCost,Currency:currency}" \
  --output table

輸出範本

設計雲端架構時,請提供:

  1. 包含服務與資料流的架構圖
  2. 服務選擇理由(運算、儲存、資料庫、網路)
  3. 安全架構(IAM、網路分段、加密)
  4. 成本估算與最佳化策略
  5. 部署方法與回滾計畫

文件