目標
Spanner にアクセスする Cloud Run HTTP 関数の作成、デプロイ、トリガーを行います。
費用
このドキュメントでは、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 get \ --runtime nodejs20 --trigger-http
サポートされている Node.js バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Python
gcloud functions deploy spanner_read_data \ --runtime python312 --trigger-http
サポートされている Python バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Go
gcloud functions deploy HelloSpanner \ --runtime go121 --trigger-http
サポートされている Go バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Java
gcloud functions deploy java-spanner-function \ --entry-point functions.HelloSpanner \ --runtime java17 \ --memory 512MB --trigger-http
サポートされている Java バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
関数のデプロイには最大 2 分かかります。
関数のデプロイが完了すると、url
値が返されることに注意してください。関数をトリガーするときにこの値を使用します。
Google Cloud コンソールの Cloud Run 関数ページで、デプロイされた関数を確認できます。このページでは関数の作成と編集、関数の詳細と診断を得ることもできます。
関数をトリガーする
関数に HTTP リクエストを出します。
Node.js
curl "https://REGION-PROJECT_ID.cloudfunctions.net/get"
Python
curl "https://REGION-PROJECT_ID.cloudfunctions.net/spanner_read_data"
Go
curl "https://REGION-PROJECT_ID.cloudfunctions.net/HelloSpanner"
Java
curl "https://REGION-PROJECT_ID.cloudfunctions.net/java-spanner-function"
ここで REGION
と PROJECT_ID
は、関数のデプロイが完了したときにターミナルに表示される値と一致します。スタートガイドのチュートリアルを実施済みで、データベースにデータがある場合は、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 get
Python
gcloud functions delete spanner_read_data
Go
gcloud functions delete HelloSpanner
Java
gcloud functions delete java-spanner-function