目標
Spanner にアクセスする HTTP Cloud Functions の関数を作成、デプロイ、トリガーします。
費用
このドキュメントでは、Google Cloud の課金対象コンポーネントである Spanner と Cloud Run functions を使用します。
Spanner の使用料金については、Spanner の料金をご覧ください。
Cloud Run functions の使用料金(無料の呼び出しを含む)については、Cloud Run functions の料金をご覧ください。
始める前に
このドキュメントでは、
test-instance
という名前の Cloud Spanner インスタンスと、音楽アプリケーション スキーマを使用するexample-db
という名前のデータベースがあると想定します。音楽アプリケーション スキーマを使用するインスタンスとデータベースの作成方法については、コンソールを使用したクイックスタートか、Go、Java、Node.js、Python のスタートガイドのチュートリアルをご覧ください。Cloud Run functions と Cloud Build API を有効にします。
-
gcloud CLI がすでにインストールされている場合は、次のコマンドを実行して更新します。
gcloud components update
開発環境を準備します。
アプリケーションを準備する
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
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 形式のサンプルをダウンロードしてファイルを抽出してもかまいません。
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
または、zip 形式のサンプルをダウンロードしてファイルを抽出してもかまいません。
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
または、zip 形式のサンプルをダウンロードしてファイルを抽出してもかまいません。
Spanner にアクセスする Cloud Run functions のサンプルコードが含まれているディレクトリに移動します。
Node.js
cd nodejs-docs-samples/functions/spanner/
Python
cd python-docs-samples/functions/spanner/
Go
cd golang-samples/functions/spanner/
Java
cd java-docs-samples/functions/spanner/
サンプルコードを見てみましょう。
Node.js
Python
Go
Java
この関数は、SQL クエリを送信してデータベースから
Albums
のすべてのデータをフェッチします。この関数は、関数のエンドポイントに HTTP リクエストを行うと実行されます。
関数をデプロイする
HTTP トリガーを使用して関数をデプロイするには、spanner
ディレクトリで次のコマンドを実行します。
Node.js
gcloud functions deploy nodejs-spanner-function \ --gen2 \ --runtime=nodejs20 \ --region=REGION
\ --source=. \ --entry-point=spannerQuickstart
--trigger-http
サポートされている Node.js バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Python
gcloud functions deploy python-spanner-function \ --gen2 \ --runtime=python312 \ --region=REGION
\ --source=. \ --entry-point=spanner_read_data
--trigger-http
サポートされている Python バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Go
gcloud functions deploy go-spanner-function \ --gen2 \ --runtime=go121 \ --region=REGION
\ --source=. \ --entry-point=HelloSpanner
--trigger-http
サポートされている Go バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Java
gcloud functions deploy java-spanner-function \ --gen2 \ --runtime=java17 \ --region=REGION
\ --source=. \ --entry-point=functions.HelloSpanner \ --memory=512MB
--trigger-http
サポートされている Java バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
REGION は、関数をデプロイする Google Cloud リージョンの名前に置き換えます(us-west1
など)。
関数のデプロイには最大 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 spanner instances delete test-instance
デプロイした関数を削除します。
Node.js
gcloud functions delete nodejs-spanner-function
Python
gcloud functions delete python-spanner-function
Go
gcloud functions delete go-spanner-function
Java
gcloud functions delete java-spanner-function