本教學課程將說明如何編寫可傳回 Spanner 結果的 HTTP Cloud Run 函式。
目標
編寫、部署及觸發可存取 Spanner 的 HTTP 函式。
費用
本文使用 Spanner 和 Cloud Run,這兩者都是 Google Cloud的可計費元件。
如要瞭解 Spanner 的使用費用,請參閱 Spanner 定價。
如要瞭解 Cloud Run 的使用費用,包括免費叫用,請參閱 Cloud Run 定價。
事前準備
本文假設您擁有一個名稱為
test-instance
的 Spanner 執行個體,與一個名稱為example-db
且使用音樂應用程式結構定義的資料庫。如需使用音樂應用程式結構定義建立執行個體與資料庫的操作說明,請參閱使用主控台的快速入門導覽課程,或 Node.js 或 Python 中的入門指南教學課程。啟用 Cloud Run 和 Cloud Build API。
-
如果您已安裝 gcloud CLI,請執行下列指令來更新:
gcloud components update
準備您的開發環境:
Node.js
請參閱 Node.js 設定指南。
Python
請參閱 Python 設定指南。
準備應用程式
將應用程式存放區範例複製到本機電腦中:
變更為包含 Cloud Run 函式範例程式碼的目錄,以存取 Spanner:
Node.js
cd nodejs-docs-samples/functions/spanner
Python
cd python-docs-samples/functions/spanner
查看程式碼範例:
Node.js
Python
函式會傳送 SQL 查詢,從資料庫擷取所有
Albums
資料。函式會在您對函式的端點提出 HTTP 要求時執行。
部署函式
如要使用 HTTP 觸發條件部署函式,請在 spanner
目錄中執行下列指令:
Node.js
gcloud run deploy nodejs-spanner-function \
--source . \
--region REGION \
--function spannerQuickstart \
--base-image RUNTIME_ID \
--log-http
Python
gcloud run deploy python-spanner-function \
--source . \
--region REGION \
--function spanner_read_data \
--base-image RUNTIME_ID \
--log-http
取代:
REGION 與您要部署函式的Google Cloud 區域名稱 (例如
us-west1
)。RUNTIME_ID 與適當的執行階段 ID (例如
nodejs22
)。請參閱「支援的語言執行階段和基礎映像檔」。
部署函式可能需要兩分鐘的時間。
請注意函式完成部署時傳回的 url
值。您將會在觸發函式時使用它。
您可以在Google Cloud 控制台的「Cloud Run」頁面查看已部署的函式。您也可在該頁面上建立及編輯函式,並取得函式的詳細資料與診斷資訊。
觸發函式
對您的函式提出 HTTP 要求:
curl URL
將 URL 取代為函式完成部署時傳回的網址值。
您應會看見輸出顯示 SQL 查詢的結果。假設您完成了入門指南教學課程並填入資料庫:
SingerId: 2, AlbumId: 2, AlbumTitle: Forever Hold Your Peace
SingerId: 1, AlbumId: 2, AlbumTitle: Go, Go, Go
SingerId: 2, AlbumId: 1, AlbumTitle: Green
SingerId: 2, AlbumId: 3, AlbumTitle: Terrified
SingerId: 1, AlbumId: 1, AlbumTitle: Total Junk
您也可以透過瀏覽器造訪函式的網址,查看 SQL 查詢的結果。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取您在本文件中使用 Spanner 和 Cloud Run 函式資源的相關費用,請按照下列步驟操作:
刪除執行個體:
gcloud CLI instances delete test-instance
刪除您在本教學課程中部署的 Cloud Run 服務:
Node.js
gcloud run services delete nodejs-spanner-function
Python
gcloud run services delete python-spanner-function