目標
Spanner にアクセスする HTTP 関数を作成、デプロイ、トリガーします。
料金
このドキュメントでは、 Google Cloudの課金対象コンポーネントである Spanner と Cloud Run を使用します。
Spanner の使用料金については、Spanner の料金をご覧ください。
Cloud Run の使用料金(無料の呼び出しを含む)については、Cloud Run の料金をご覧ください。
始める前に
このドキュメントでは、
test-instance
という名前の Cloud Spanner インスタンスと、音楽アプリケーション スキーマを使用するexample-db
という名前のデータベースがあると想定します。音楽アプリケーション スキーマを使用するインスタンスとデータベースの作成方法については、Console を使用したクイックスタートか、Node.js または Python のスタートガイドのチュートリアルをご覧ください。Cloud Run と Cloud Build API を有効にします。
-
gcloud CLI がすでにインストールされている場合は、次のコマンドを実行して更新します。
gcloud components update
開発環境を準備します。
Node.js
Node.js 設定ガイドをご覧ください。
Python
Python 設定ガイドをご覧ください。
アプリケーションを準備する
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
または、zip ファイルとしてサンプルをダウンロードして解凍します。
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
または、zip ファイルとしてサンプルをダウンロードして解凍します。
Spanner にアクセスする Cloud Run functions のサンプルコードが含まれているディレクトリに移動します。
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
など)に置き換えます。サポートされている言語ランタイムとベースイメージをご覧ください。
関数のデプロイには最大 2 分かかります。
関数のデプロイが完了すると、url
値が返されることに注意してください。関数をトリガーするときにこの値を使用します。
Google Cloud コンソールの Cloud Run ページで、デプロイされた関数を確認できます。このページでは関数の作成と編集、関数の詳細と診断を得ることもできます。
関数をトリガーする
関数に HTTP リクエストを出します。
curl URL
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
ブラウザで関数の URL にアクセスして、SQL クエリの結果を確認することもできます。
クリーンアップ
このドキュメントで使用した Spanner と Cloud Run functions のリソースについて、 Google Cloud アカウントに以後課金されないようにするには:
インスタンスを削除します。
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