本指南提供總覽,說明如何準備及設定 Agent2Agent (A2A) 代理程式,以便在 Cloud Run 上部署。內容涵蓋重要步驟,例如設定雲端環境、設定必要的 Identity and Access Management (IAM) 角色,以及準備部署代理程式。
事前準備
開始開發及部署 A2A 代理程式前,請先熟悉下列概念和資源:
- 請參閱官方 A2A 規格,瞭解通訊協定架構和代理程式通訊的核心概念。
- 探索現有的代理範例,取得實用洞察資訊,加快 A2A 代理開發程序。具體來說,請查看使用代理開發套件 (ADK) 的 Google Cloud Run 可部署範例。
A2A 代理程式部署藍圖
如要部署代理程式,請完成下列步驟:
- 瞭解 A2A 規格,並使用範例代理加快開發速度。
- 為 Cloud Run 服務建立安全的 IAM 角色。
- 設定必要的密鑰並建立 Dockerfile,即可設定雲端環境。
- 執行 Cloud Run 部署作業指令。
- 部署後測試及監控代理程式效能。
整體架構
A2A 代理程式的核心是服務和自動化調度管理層,例如 Cloud Run。這個層級會透過 API 管理與 AI 模型 (例如 Gemini 和 Vertex AI)、記憶體儲存空間 (例如 AlloyDB 和 A2A TaskStore) 和外部工具的互動。用戶端會傳送「取得服務專員卡片」或「傳送訊息」等要求,與服務專員互動,並接收工作更新。
下圖說明 A2A 代理程式系統的架構,顯示 A2A 用戶端 (使用者或代理程式) 與 A2A 代理程式互動。

如要瞭解 A2A 要求生命週期,請參閱「A2A 要求生命週期」一節。
Cloud Run A2A 代理程式的 IAM 角色和權限
正確設定 IAM 角色,是確保 Cloud Run 服務與其他服務安全互動的重要步驟。 Google Cloud建立專屬服務帳戶,並授予下列各節列出的特定權限,確保作業安全和效率。
建立 Cloud Run 服務帳戶
執行任何 gcloud
指令前,請務必先完成驗證。執行下列指令,登入 Google Cloud 帳戶:
gcloud auth login
為已部署的 A2A 服務執行個體建立專用服務帳戶。使用 gcloud iam service-accounts create
指令。
gcloud iam service-accounts create A2A_SERVICE_ACCOUNT_NAME \
--description="Service account for A2A Cloud Run service" \
--display-name="A2A Cloud Run Service Account"
將 A2A_SERVICE_ACCOUNT_NAME 改為服務帳戶名稱。
為 A2A 代理程式設定 IAM 角色
根據 A2A 代理程式互動的服務,將下列 IAM 角色指派給服務帳戶: Google Cloud
安全憑證的 Secret Manager 存取權
- 角色:
Secret Manager Secret Accessor
(roles/secretmanager.secretAccessor
) 用途:允許 Cloud Run 服務帳戶從 Secret Manager 安全地擷取密鑰,例如資料庫憑證。
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:A2A_SERVICE_ACCOUNT_NAME@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
AI 功能的 Vertex AI 模型存取權
- 角色:
Vertex AI User
(roles/aiplatform.user
) 用途:Cloud Run 服務帳戶必須具備這項權限,才能在 Vertex AI 模型上叫用預測 API。
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:A2A_SERVICE_ACCOUNT_NAME@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
永久儲存空間的 AlloyDB 執行個體存取權 (如適用)
- 角色:
AlloyDB Client
(roles/alloydb.client
) 和Service Usage Consumer
(roles/serviceusage.serviceUsageConsumer
) 用途:允許 Cloud Run 服務身分與 AlloyDB 叢集互動,以儲存持續性工作,這對正式版 A2A 代理程式至關重要。
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:A2A_SERVICE_ACCOUNT_NAME@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/alloydb.client"
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:A2A_SERVICE_ACCOUNT_NAME@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/serviceusage.serviceUsageConsumer"
準備 A2A 代理程式,以便部署至 Cloud Run
本節說明將 A2A 代理程式部署至 Cloud Run 時所需的設定,確保雲端作業安全、有效率且可擴充。
設定 Cloud Run 服務的密鑰
使用安全機制,將所有機密憑證 (例如 API 金鑰和資料庫密碼) 提供給 A2A 伺服器。Cloud Run 支援以環境變數或動態掛接磁碟區的形式提供密鑰。詳情請參閱「在 Cloud Run 中設定密鑰」。
舉例來說,您可以使用 gcloud
CLI 在 Google Secret Manager 中建立及管理資料庫使用者和密碼密鑰。詳情請參閱「建立密鑰」。
gcloud secrets create alloy_db_user --replication-policy="automatic"
# Create a file user.txt with contents of secret value
gcloud secrets versions add alloy_db_user --data-file="user.txt"
gcloud secrets create alloy_db_pass --replication-policy="automatic"
# Create a file pass.txt with contents of secret value
gcloud secrets versions add alloy_db_pass --data-file="pass.txt"
建立 Dockerfile 以進行容器化
Cloud Run 可以從已代管的容器映像檔部署服務,也可以直接從原始碼部署服務。從原始碼進行部署作業時,如果專案的根目錄中存在 Dockerfile,Cloud Run 就會自動建構容器映像檔。
以下是 A2A 代理程式部署作業的 Dockerfile 範例:
FROM python:3.13-slim
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
EXPOSE 8080
WORKDIR /app
COPY . ./
RUN uv sync
ENTRYPOINT ["uv", "run", ".", "--host", "0.0.0.0", "--port", "8080"]
透過原始碼部署,無須 Dockerfile
如果原始碼存放區沒有 Dockerfile
,Cloud Run 會內建支援某些熱門程式設計語言,簡化容器化程序。
- Cloud Run 上的 Python 應用程式:Cloud Run 通常會尋找
main.py
檔案,以便建構及部署 Python 服務。詳情請參閱「在 Cloud Run 上部署 Python 服務快速入門」。 - Cloud Run 上的 Node.js 應用程式:請參閱 Cloud Run 上的 Node.js 服務部署快速入門導覽課程。