ACE 認證考前重點複習
Associate Cloud Engineer 考前衝刺懶人包
五大考試領域
點擊展開各領域的核心知識點、常見陷阱和 gcloud 指令
重點是 IAM 角色分配原則:最小權限、組織政策、服務帳戶的使用場景。記住 Resource Hierarchy 的繼承關係和預算警示不會自動停費。
1 專案、資料夾與組織階層
- 以為 Organization 是手動建立的(實際是綁定 Workspace/Cloud Identity 自動產生)
- 忽略 IAM 繼承 — 在 Organization 層級授予 Editor 等於所有專案都有 Editor
gcloud projects create PROJECT_ID --folder=FOLDER_ID gcloud projects list gcloud resource-manager folders list --organization=ORG_ID gcloud organizations list 2 帳單帳戶與預算管理
- 以為設定預算警示就會自動限制花費(最常考的陷阱之一)
- 混淆 Billing Account Admin 和 Project Billing Manager 角色
gcloud billing accounts list gcloud billing projects link PROJECT_ID --billing-account=ACCOUNT_ID gcloud billing budgets create --billing-account=ACCOUNT_ID --display-name=BUDGET_NAME 3 IAM 角色:基本、預先定義、自訂
- 在正式環境使用 Editor/Owner 等 Basic Roles(違反最小權限原則)
- 以為自訂角色可以在 Folder 層級建立(只能在 Organization 或 Project)
gcloud projects get-iam-policy PROJECT_ID gcloud projects add-iam-policy-binding PROJECT_ID --member=user:EMAIL --role=ROLE gcloud iam roles create ROLE_ID --project=PROJECT_ID --permissions=PERMISSIONS gcloud iam roles list --project=PROJECT_ID 4 服務帳戶(Service Accounts)
- 直接使用 Compute Engine 預設服務帳戶(權限太大)
- 為服務帳戶建立並下載金鑰檔案(安全風險高)
- 忘記服務帳戶也需要被授予角色才能存取資源
gcloud iam service-accounts create SA_NAME --display-name=DISPLAY_NAME gcloud iam service-accounts list gcloud iam service-accounts keys list --iam-account=SA_EMAIL gcloud projects add-iam-policy-binding PROJECT_ID --member=serviceAccount:SA_EMAIL --role=ROLE 5 Cloud SDK 設定(gcloud、gsutil、bq)
- 忘記切換 gcloud config 導致操作到錯誤專案
- 混淆 gcloud compute instances create 和 gcloud app deploy 的服務對象
gcloud init gcloud config set project PROJECT_ID gcloud config configurations create CONFIG_NAME gcloud config configurations activate CONFIG_NAME gcloud services enable SERVICE_NAME 熟記每種服務的使用場景和限制。運算選型看管理光譜,資料庫選型看關聯式 vs NoSQL + 全球 vs 區域。網路記住 VPC 是全球、Subnet 是區域。
1 運算服務選型(CE vs GKE vs Cloud Run vs App Engine vs Cloud Functions)
- 混淆 App Engine Standard 和 Flexible 的差異(尤其是縮到零的能力)
- 需要 GPU 時選了 Cloud Run(Cloud Run 不支援 GPU,選 CE 或 GKE)
- 以為 Cloud Functions 可以處理長時間執行的任務(有 timeout 限制)
gcloud compute instances create INSTANCE_NAME --machine-type=TYPE gcloud container clusters create CLUSTER_NAME gcloud run deploy SERVICE_NAME --image=IMAGE gcloud app deploy gcloud functions deploy FUNCTION_NAME --trigger-http 2 儲存服務選型(Cloud Storage 類別與生命週期)
- 以為 Nearline/Coldline/Archive 不能立即存取(可以,只是取回費更高)
- 忘記最低儲存時間 — Nearline 30 天、Coldline 90 天、Archive 365 天
- 混淆 ACL 和 Uniform Bucket-level Access
gsutil mb -l REGION -c STORAGE_CLASS gs://BUCKET_NAME gsutil lifecycle set LIFECYCLE_CONFIG gs://BUCKET_NAME gsutil versioning set on gs://BUCKET_NAME gsutil cp LOCAL_FILE gs://BUCKET_NAME/ 3 資料庫服務選型(SQL vs Spanner vs Firestore vs Bigtable)
- 以為 Cloud SQL 可以全球分佈(Cloud SQL 是區域性的,需要全球分佈選 Spanner)
- 混淆 Firestore 和 Firebase Realtime Database
- 需要 ACID 交易時選了 Bigtable(Bigtable 只支援單列交易)
- 用 BigQuery 做即時 OLTP 查詢(BigQuery 適合分析,不適合高頻小量查詢)
gcloud sql instances create INSTANCE_NAME --database-version=POSTGRES_15 gcloud spanner instances create INSTANCE_NAME --config=CONFIG gcloud firestore databases create --location=REGION cbt createtable TABLE_NAME 4 網路規劃(VPC、子網路、IP 範圍)
- 以為 VPC Peering 是遞移的(A-B peering + B-C peering 不代表 A-C 互通)
- 在正式環境使用 Auto Mode VPC(IP 衝突風險高)
- 忘記啟用 Private Google Access 導致內部 VM 無法存取 Google 服務
gcloud compute networks create VPC_NAME --subnet-mode=custom gcloud compute networks subnets create SUBNET_NAME --network=VPC_NAME --range=IP_RANGE --region=REGION gcloud compute networks peerings create PEERING_NAME --network=VPC_NAME --peer-network=PEER_VPC 5 負載平衡類型選擇
- 內部流量使用外部 LB(應使用 Internal LB)
- 需要 CDN 功能時選了 Network LB(CDN 只在 HTTP(S) LB 上支援)
- 混淆全球性和區域性負載平衡器的適用場景
gcloud compute forwarding-rules create RULE_NAME --global --target-http-proxy=PROXY gcloud compute backend-services create SERVICE_NAME --global gcloud compute url-maps create URL_MAP_NAME --default-service=SERVICE_NAME gcloud compute health-checks create http HEALTH_CHECK_NAME 6 Cloud DNS 與 CDN
- 以為 Cloud CDN 可以獨立使用(必須搭配 HTTP(S) LB)
- 混淆 Cloud DNS 和域名註冊(Cloud Domains 才是域名註冊服務)
gcloud dns managed-zones create ZONE_NAME --dns-name=DOMAIN --visibility=public gcloud dns record-sets create DOMAIN --zone=ZONE_NAME --type=A --rrdatas=IP gcloud compute backend-services update SERVICE_NAME --enable-cdn 佔分最重的領域(25%)。每個服務的部署指令要熟悉,Instance Template 不可修改、App Engine 區域不可更改、Cloud Functions 1st vs 2nd gen 差異是高頻考點。
1 部署 Compute Engine(Instance Templates、MIG、Preemptible/Spot VM)
- 以為可以修改 Instance Template(只能建新的,然後更新 MIG)
- 在關鍵工作負載使用 Spot VM(隨時可能被回收)
- 忘記設定 MIG 的自動修復(Auto-healing)健康檢查
gcloud compute instance-templates create TEMPLATE_NAME --machine-type=TYPE --image-family=IMAGE gcloud compute instance-groups managed create MIG_NAME --template=TEMPLATE --size=SIZE --zone=ZONE gcloud compute instance-groups managed set-autoscaling MIG_NAME --max-num-replicas=MAX --target-cpu-utilization=0.8 gcloud compute instances create VM_NAME --provisioning-model=SPOT 2 部署 GKE(Autopilot vs Standard、Node Pools)
- 混淆 Autopilot 和 Standard 的計費方式
- 在 Pod 中使用服務帳戶金鑰(應使用 Workload Identity)
- 忘記設定叢集自動升級(Auto-upgrade)
gcloud container clusters create CLUSTER_NAME --mode=autopilot --region=REGION gcloud container clusters create CLUSTER_NAME --num-nodes=3 --zone=ZONE gcloud container node-pools create POOL_NAME --cluster=CLUSTER_NAME --machine-type=TYPE gcloud container clusters get-credentials CLUSTER_NAME --zone=ZONE kubectl get pods --all-namespaces 3 部署 App Engine(Standard vs Flexible、Traffic Splitting)
- 想要更換 App Engine 區域(不可能,只能建新專案)
- 以為 Flexible 可以縮到零(Standard 才可以)
- 忘記停用舊版本導致持續計費
gcloud app create --region=REGION gcloud app deploy --version=VERSION_ID gcloud app services set-traffic SERVICE --splits=V1=0.5,V2=0.5 gcloud app versions list gcloud app versions stop VERSION_ID 4 部署 Cloud Functions(觸發類型、1st gen vs 2nd gen)
- 在 Cloud Functions 中存儲狀態到本地檔案系統
- 混淆 1st gen 和 2nd gen 的 timeout 限制
- 忘記設定適當的 IAM 權限讓函式可以存取其他服務
gcloud functions deploy FUNCTION_NAME --gen2 --runtime=nodejs20 --trigger-http gcloud functions deploy FUNCTION_NAME --trigger-event=google.storage.object.finalize --trigger-resource=BUCKET gcloud functions logs read FUNCTION_NAME gcloud functions call FUNCTION_NAME --data='{"key":"value"}' 5 部署 Cloud Run(Services vs Jobs、並行處理)
- 需要排程任務時用 Services(應該用 Jobs + Cloud Scheduler)
- 設定 concurrency=1 導致效能低下和費用增加
- 以為 Cloud Run 支援 WebSocket 長連線(有 timeout 限制)
gcloud run deploy SERVICE_NAME --image=IMAGE --region=REGION --allow-unauthenticated gcloud run jobs create JOB_NAME --image=IMAGE --region=REGION gcloud run jobs execute JOB_NAME gcloud run services update SERVICE_NAME --min-instances=1 --max-instances=10 6 基礎架構即程式碼(IaC):Terraform
- State file 存在本地(團隊協作應存在 GCS bucket 並啟用鎖定)
- 不先 plan 就直接 apply
- 混淆 Terraform 和 Deployment Manager 的語法(HCL vs YAML)
terraform init terraform plan terraform apply terraform destroy gcloud deployment-manager deployments create DEPLOYMENT --config=CONFIG.yaml 監控三大支柱:Metrics(Monitoring)、Logs(Logging)、Traces(Trace)。Log Sink 的 destination 選擇和 Alert Policy 的設定是高頻考點。記住各種日誌的保留期限。
1 管理 VM 執行個體(SSH、快照、即時遷移)
- 不知道 Spot VM 不支援 Live Migration(會直接被終止)
- 備份時使用 Machine Image 和 Snapshot 混淆
- 忘記 IAP Tunnel 是不需要外部 IP 就能 SSH 的方式
gcloud compute ssh VM_NAME --zone=ZONE gcloud compute ssh VM_NAME --tunnel-through-iap gcloud compute disks snapshot DISK_NAME --zone=ZONE --snapshot-names=SNAPSHOT_NAME gcloud compute instances set-metadata VM_NAME --metadata=KEY=VALUE 2 管理 GKE(kubectl、擴展、升級)
- 忘記先 get-credentials 就嘗試 kubectl 操作
- HPA 和 VPA 同時作用在同一 metric 上(會衝突)
- 不了解 PodDisruptionBudget 導致升級時服務中斷
gcloud container clusters get-credentials CLUSTER_NAME --zone=ZONE kubectl apply -f deployment.yaml kubectl scale deployment DEPLOY_NAME --replicas=3 kubectl autoscale deployment DEPLOY_NAME --min=2 --max=10 --cpu-percent=80 gcloud container clusters upgrade CLUSTER_NAME --zone=ZONE 3 Cloud Monitoring(Dashboard、Alert、Uptime Check)
- 只設定 alert 不設定 notification channel(沒人收到通知)
- 以為 Uptime Check 只能檢查 Google Cloud 服務(可檢查任何公開 URL)
- 混淆 Monitoring Workspace 和 Project 的關係
gcloud monitoring policies list gcloud monitoring policies create --policy-from-file=POLICY.json gcloud monitoring channels list gcloud monitoring dashboards create --config-from-file=DASHBOARD.json 4 Cloud Logging(Log Sinks、匯出、保留期限)
- 以為可以延長 Admin Activity Log 的保留期限(固定 400 天,不可更改)
- 混淆 Sink 的 destination 類型和適用場景
- 不了解排除過濾器(Exclusion Filter)可以減少日誌儲存成本
gcloud logging sinks create SINK_NAME DESTINATION --log-filter=FILTER gcloud logging sinks list gcloud logging read 'resource.type="gce_instance"' --limit=10 gcloud logging metrics create METRIC_NAME --description=DESC --log-filter=FILTER 5 Error Reporting 與 Cloud Trace
- 以為需要特別設定才能使用 Error Reporting(App Engine/Cloud Functions 自動啟用)
- 不知道 Cloud Debugger 已被棄用
- 混淆 Trace 和 Profiler 的用途(Trace 看請求延遲,Profiler 看資源使用)
gcloud beta error-reporting events list gcloud trace sinks create SINK_NAME --project=PROJECT_ID gcloud services enable cloudtrace.googleapis.com 最小權限原則是核心概念。防火牆 priority 數字越小越優先,Cloud KMS 的 Key Ring 不可刪除,Data Access Log 預設關閉(BigQuery 除外)。服務帳戶金鑰管理是安全重點。
1 IAM 最佳實踐(最小權限、Conditions)
- 直接對個人授權而非透過 Group(管理成本高)
- 使用 Owner/Editor 角色給應用程式(應該用細粒度的 Predefined Role)
- 忽略 IAM Recommender 的建議(免費的安全改善機會)
gcloud projects get-iam-policy PROJECT_ID gcloud asset analyze-iam-policy --organization=ORG_ID --identity=user:EMAIL gcloud policy-troubleshoot iam RESOURCE --principal-email=EMAIL --permission=PERMISSION 2 服務帳戶與金鑰管理
- 將服務帳戶金鑰存入程式碼庫(嚴重安全風險)
- 混淆 OAuth Scopes 和 IAM Roles(Scopes 是 VM 層級,IAM 是更細粒度的)
- 忘記停用不再使用的服務帳戶
gcloud iam service-accounts keys create KEY_FILE --iam-account=SA_EMAIL gcloud iam service-accounts keys list --iam-account=SA_EMAIL gcloud iam service-accounts keys delete KEY_ID --iam-account=SA_EMAIL gcloud auth activate-service-account --key-file=KEY_FILE 3 Cloud KMS(對稱、非對稱、信封加密)
- 以為 Key Ring 可以刪除(建立後不可刪除,只能停用其中的金鑰)
- 混淆 CMEK 和 CSEK(CMEK 金鑰存在 Cloud KMS,CSEK 金鑰由客戶持有)
- 忘記金鑰銷毀後有 24 小時的排程銷毀期(可以取消)
gcloud kms keyrings create KEY_RING --location=LOCATION gcloud kms keys create KEY_NAME --keyring=KEY_RING --location=LOCATION --purpose=encryption gcloud kms keys versions list --key=KEY_NAME --keyring=KEY_RING --location=LOCATION gcloud kms encrypt --key=KEY_NAME --keyring=KEY_RING --location=LOCATION --plaintext-file=INPUT --ciphertext-file=OUTPUT 4 VPC 安全性(防火牆規則、VPC Service Controls)
- 防火牆規則的 priority 搞反(0 是最高優先級,不是最低)
- 以為 Network Tags 和 Labels 是一樣的(Tags 用於防火牆,Labels 用於組織和計費)
- 忘記 VPC Service Controls 只保護 Google 管理的服務
gcloud compute firewall-rules create RULE_NAME --network=VPC_NAME --allow=tcp:80,tcp:443 --source-ranges=0.0.0.0/0 gcloud compute firewall-rules list --filter="network:VPC_NAME" gcloud access-context-manager perimeters create PERIMETER_NAME --resources=projects/PROJECT_NUMBER --restricted-services=SERVICES gcloud compute security-policies create POLICY_NAME 5 稽核日誌與合規
- 以為 Data Access Log 預設啟用(除了 BigQuery,其他需要手動啟用)
- 不知道 Admin Activity Log 免費但不可停用
- 混淆 Organization Policy 和 IAM Policy(Organization Policy 是限制,IAM 是權限)
gcloud logging read 'logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"' --limit=10 gcloud projects get-iam-policy PROJECT_ID --format=json gcloud resource-manager org-policies list --organization=ORG_ID gcloud resource-manager org-policies set-policy POLICY_FILE --organization=ORG_ID 考前必記 20 條
考前最後衝刺的濃縮精華,每條 1-2 句話
gcloud 指令語法:gcloud [GROUP] [SUBGROUP] [ACTION] [RESOURCE] --flags
CLIIAM 三元素:Who(Member)+ What(Role)+ Which(Resource)
IAM防火牆規則的 priority 數字越小優先級越高(0 = 最高,65535 = 最低)
NetworkVPC 是全球資源,Subnet 是區域資源
NetworkVPC Peering 不可遞移(A-B + B-C ≠ A-C)
Network預算警示只通知,不會自動停止花費
BillingCloud SQL 是區域性的,Cloud Spanner 是全球性的
DatabaseApp Engine 區域一旦選定不可更改,每個專案只能有一個 App Engine 應用
ComputeApp Engine Standard 可以縮到零,Flexible 不可以(最少 1 VM)
ComputeInstance Template 不可修改,只能建新的然後更新 MIG
ComputeSpot VM 最高省 91%,但會收到 30 秒預警後被回收,最長執行 24 小時
ComputeCloud Storage 四種類別的最低儲存時間:Nearline 30 天、Coldline 90 天、Archive 365 天
StorageBigQuery 適合 OLAP 分析,不適合 OLTP(高頻小量交易)
DatabaseCloud Functions 2nd gen 基於 Cloud Run,支援更長 timeout(60 分鐘)和更大記憶體(32 GB)
ComputeAdmin Activity Log 永遠啟用、免費、保留 400 天、不可停用
SecurityData Access Log 預設關閉(BigQuery 除外),需手動啟用
SecurityCloud KMS Key Ring 建立後不可刪除,金鑰銷毀有 24 小時排程銷毀期
SecurityCloud CDN 必須搭配 HTTP(S) Load Balancer,不可獨立使用
Network服務帳戶同時是 identity 和 resource,優先使用 Workload Identity 而非金鑰
IAMLog Sink 可匯出至 Cloud Storage(長期存檔)、BigQuery(分析)、Pub/Sub(即時串流)
Operations常見陷阱題
考試中最容易踩到的坑,牢記真相避免失分
Cloud SQL 可以全球分佈
Cloud SQL 是區域性的。需要全球分佈的關聯式資料庫請選 Cloud Spanner。
設定預算警示後,超過預算會自動停止服務
預算警示只會發送通知,不會自動停止花費。需要自動停費必須搭配 Cloud Functions 回應 Pub/Sub 通知。
App Engine Flexible 可以縮到零來省錢
App Engine Flexible 最少需要 1 個 VM 實例,不能縮到零。只有 Standard 環境可以縮到零。
可以修改已建立的 Instance Template
Instance Template 是不可變的(immutable)。若需修改,只能建立新的 Template 然後更新 MIG 使用新 Template。
VPC Peering 是遞移的,A-B 加 B-C 就等於 A-C 互通
VPC Peering 不可遞移(non-transitive)。A 和 C 要互通必須直接建立 Peering。
防火牆規則中 priority 數字越大代表優先級越高
防火牆規則的 priority 數字越小代表優先級越高。0 是最高優先級,65535 是最低。
BigQuery 適合即時交易處理(OLTP)
BigQuery 是 OLAP(分析處理)系統,不適合高頻小量的 OLTP 查詢。OLTP 請選 Cloud SQL 或 Spanner。
Cloud Armor 可以保護任何 GCP 服務免受 DDoS 攻擊
Cloud Armor 只與外部 HTTP(S) Load Balancer 整合,不能直接保護 Compute Engine 或其他服務。
Data Access Audit Logs 預設都是啟用的
Data Access Log 預設是關閉的(BigQuery 除外)。需要手動在 IAM & Admin > Audit Logs 中啟用。
Cloud KMS 的 Key Ring 可以在不需要時刪除
Key Ring 建立後不可刪除。金鑰可以停用,而金鑰版本銷毀有 24 小時的排程銷毀期可以取消。
Bigtable 支援完整的 ACID 交易
Bigtable 只支援單列(single-row)交易,不支援多列或跨表交易。需要完整 ACID 交易請選 Cloud SQL 或 Spanner。
App Engine 可以隨時更換部署區域
App Engine 的區域一旦建立就不可更改。如需更換區域,只能建立新的專案。
Network Tags 和 Labels 功能相同,可以互換使用
Network Tags 用於防火牆規則和路由,Labels 用於資源組織和計費。兩者用途完全不同。
Cloud Functions 適合長時間執行的批次任務
Cloud Functions 有 timeout 限制(1st gen 最長 9 分鐘,2nd gen 最長 60 分鐘)。長時間批次任務應選 Cloud Run Jobs 或 Compute Engine。
使用 Auto Mode VPC 是正式環境的最佳實踐
Auto Mode VPC 適合快速開始和測試,但正式環境建議使用 Custom Mode VPC 以避免 IP 範圍衝突並擁有完全控制權。
考試策略
掌握應試技巧,最大化你的分數
時間管理
- 120 分鐘約 50-60 題,平均每題 2 分鐘
- 先快速瀏覽全部題目,把有把握的先做完
- 標記不確定的題目,最後再回來
- 不要在單題花超過 3 分鐘,先跳過
審題技巧
- 仔細讀題目中的關鍵字:「最小權限」「成本最低」「最高可用性」
- 注意「最佳實踐」和「最具成本效益」的差別
- 多選題通常會告訴你要選幾個答案
- 看到「你應該怎麼做」先想 Google 的推薦做法,而非你習慣的做法
刪去法則
- 看到使用 Basic Roles(Owner/Editor)的選項,通常不是最佳答案
- 看到「手動操作」通常不如「自動化」選項
- 涉及安全性的題目,優先選最安全的方案
- 如果選項中有 Google 推薦的受管服務 vs 自建方案,通常選受管服務
不確定時
- 用刪去法排除明顯錯誤的選項
- 想想哪個選項最符合 Google Cloud 的設計哲學(受管、安全、可擴展)
- 如果兩個選項都可行,選更簡單或更受管的那個
- 不要留空白 — 猜錯不扣分
延伸閱讀
深入學習各主題的完整課程文章