前面十幾篇都在講協定與框架。今天把 agent 真的推上雲。
流程本身不難,gcloud run deploy 一行就會跑。難的是那一行裡藏了三個我實際撞到的坑,而且三個都不會報錯。
部署前要先啟用需要的服務。這步漏掉的話錯誤訊息還算清楚,是三個坑裡最善良的。
我送出的指令長這樣:
--update-env-vars GOOGLE_CLOUD_PROJECT={project-942b8cd4-519b-4927-98b}
大括號是教學文件裡的佔位標記,我照抄了。
gcloud 沒有任何警告,流程正常進行到 Do you want to continue (Y/n)?。環境變數的值會是含大括號的字面字串。
三層都不攔的原因值得知道:
{single-token} 不做 brace expansion,要有逗號或 .. 才展開。所以它既不報錯也不展開,原樣傳過去這類錯誤的特徵是部署會成功,失敗發生在 runtime(Vertex AI 初始化時找不到 project),距離事發點很遠,難追。
補一句誠實話:我當場就改掉了,所以「runtime 會失敗」這部分是推論,沒有實際觀測到那個錯誤。
做法建議:專案 ID 一律用 $(gcloud config get-value project) 取,不要手打也不要照抄。看到 {...}、<...>、YOUR_、xxx 這類樣式先攔下來。
修法不用重跑 deploy:
gcloud run services update <svc> --region <region> --update-env-vars K=V
--min 1 會持續計費codelab 給的部署指令含 --min 1。
--min-instances 1 保留一個實例常駐以消除冷啟動,代價是 idle 時段照樣計費。教學文件為了 demo 體驗流暢預設帶著它,但文件沒提醒計費含意,也沒給清理步驟。demo 結束後沒人會回頭關。
這跟 Cloud Run「零流量零費用」的直覺是相反的,所以特別容易漏。
實際帳單金額我沒查證,這裡只講機制不講數字。
從文件複製多行指令貼進終端機,換行位置沒對好,結果送出一個空指令或半截指令。這個坑最蠢也最常見,提出來是因為它在 log 裡看起來會很困惑。
講環境變數怎麼改、服務帳號怎麼設,以及一件我覺得所有雲端教學都該做但很少做的事:在同一頁給出刪除指令。