我原本以為環境設定這篇應該會很無聊,結果第一個指令就讓我停下來。
在一個空目錄跑 agents-cli scaffold create,它中間印了這兩行:
> Verifying GCP credentials...
> ✓ Connected to project: project-942b8cd4-5192-4927-98b
它沒有問我要用哪個專案,而是直接讀 gcloud 目前設定的 active project。讀到什麼,就直接用什麼。
project-942b8cd4-5192-4927-98b 這種命名方式,我看到的第一反應就是:這應該不是我自己的專案。
後來想了一下,果然是之前跑 A2A codelab 留下來的臨時專案。那時候設定完 gcloud 就沒再管,結果一路留到現在。
這件事如果沒注意到其實滿危險的。
因為後面還會碰到部署、Terraform、Agent Runtime。如果一直沿用這個專案,最後這些資源全部都會掛在一個不是自己的環境上。更麻煩的是,codelab 的 temporary project 有使用期限,專案到期後,裡面的資源也不會是你想留就能留。
不能拿 lab project 當長期環境,除了會過期之外,還有幾個問題:
尤其最後一點,真的要自己開始部署東西之後才會有感。
先跑:
gcloud config get-value project
先看它現在到底指向哪個 project。
如果不是自己的,就換掉:
gcloud projects create <你的專案id> --name="<顯示名稱>"
gcloud config set project <你的專案id>
Project ID 在 Google Cloud 裡是全球唯一的,所以名字很容易撞。可以自己加一個後綴,例如年份或專案名稱。
建立完之後,再到 Cloud Console 確認這個 project 有沒有綁定 Billing account。
這裡不要直接理解成「沒 Billing 就什麼 API 都不能用」,實際上不同服務的要求不一樣。不過後面要用到的雲端服務,有些會要求 project 已經啟用 billing,所以一開始先處理掉比較省事。Google Cloud 的 API 啟用與 Billing 本身也是不同的設定。
到 Cloud Billing 的 Budgets & alerts 建一個預算。
我自己會先設小一點,例如 1 美元,通知門檻可以先用:
這幾個也是 Google Cloud 建立 Budget 時的預設門檻。
這東西我覺得蠻值得一開始就設。
因為雲端最麻煩的地方不是一定會突然跳錯誤,而是有些東西可以正常跑很久,等你回頭看帳單才發現:「欸?我怎麼有這筆?」
例如 Cloud Run 如果設定 minimum instances,instance 就不會完全縮到 0。Request-based billing 下,閒置的 minimum instances 仍然會產生費用,只是使用的是較低的 idle rate。
所以如果只是跟著教學做 demo,看到 --min 1 這類設定,最好順手確認一下它到底在做什麼。
另外有一件事要記住:
Budget alert 是提醒,不是信用卡防火牆。
一般的 alerts-only budget 不會在達到 1 美元之後自動把所有服務關掉。Google Cloud 官方也特別說明,Budget 本身不會自動限制支出。
所以它比較像是「有人提醒你該回來看帳單了」,不是「超過 1 美元就自動斷電」。
後面看到需要填 project ID 的指令,我會盡量不要直接手打。
例如可以先確認目前 project:
gcloud config get-value project
如果指令支援 shell 的 command substitution,也可以讓 shell 幫你帶入目前的 project,而不是自己複製貼上。
不要從教學文件看到 <PROJECT_ID>、{PROJECT_ID} 這種佔位符就直接整段貼進去。
我以前真的照抄過。
而且最煩的是,有些指令不一定會立刻告訴你「你貼錯了」,就是正常跑,然後你過幾分鐘才發現自己一直在操作錯的東西。