iT邦幫忙

2026 iThome 鐵人賽

DAY 24
0
Build on Google AI

ADK × A2A × Cloud Run 打造可部署、可互通的 Agent 系統系列 第 24 篇

Day 24:Cloud Run(上)第一次 deploy 與三個踩坑

  • 分享至 

  • xImage
  •  

前面十幾篇都在講協定與框架。今天把 agent 真的推上雲。

流程本身不難,gcloud run deploy 一行就會跑。難的是那一行裡藏了三個我實際撞到的坑,而且三個都不會報錯。

先開 API

部署前要先啟用需要的服務。這步漏掉的話錯誤訊息還算清楚,是三個坑裡最善良的。

踩坑 1:大括號佔位符號

我送出的指令長這樣:

--update-env-vars GOOGLE_CLOUD_PROJECT={project-942b8cd4-519b-4927-98b}

大括號是教學文件裡的佔位標記,我照抄了。

gcloud 沒有任何警告,流程正常進行到 Do you want to continue (Y/n)?。環境變數的值會是含大括號的字面字串。

三層都不攔的原因值得知道:

  • 文件層:大括號在文件裡是「請替換」的意思,但它是給人看的約定
  • shell 層:POSIX shell 對 {single-token} 不做 brace expansion,要有逗號或 .. 才展開。所以它既不報錯也不展開,原樣傳過去
  • gcloud 層:對環境變數值不做格式驗證

這類錯誤的特徵是部署會成功,失敗發生在 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

踩坑 2:--min 1 會持續計費

codelab 給的部署指令含 --min 1。

--min-instances 1 保留一個實例常駐以消除冷啟動,代價是 idle 時段照樣計費。教學文件為了 demo 體驗流暢預設帶著它,但文件沒提醒計費含意,也沒給清理步驟。demo 結束後沒人會回頭關。

這跟 Cloud Run「零流量零費用」的直覺是相反的,所以特別容易漏。

實際帳單金額我沒查證,這裡只講機制不講數字。

踩坑 3:貼上斷行造成的空指令

從文件複製多行指令貼進終端機,換行位置沒對好,結果送出一個空指令或半截指令。這個坑最蠢也最常見,提出來是因為它在 log 裡看起來會很困惑。

明天

講環境變數怎麼改、服務帳號怎麼設,以及一件我覺得所有雲端教學都該做但很少做的事:在同一頁給出刪除指令。


上一篇
Day 23:宣告角色還是明確流程?CrewAI 與 LangGraph 的選型判準
下一篇
Day 25:Cloud Run(中)環境變數、服務 URL 與看 log
系列文
ADK × A2A × Cloud Run 打造可部署、可互通的 Agent 系統 共 25 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言