Cloud Functions の使用
目標
Bigtable にアクセスする Cloud Function の HTTP 関数を作成、デプロイ、トリガーします。
費用
このトピックでは、Google Cloud の課金対象コンポーネントである Bigtable と Cloud Functions を使用します。
Bigtable を使用する際の費用については、Bigtable の料金をご覧ください。
Cloud Functions の使用料金と無料の呼び出しについては、Cloud Functions の料金をご覧ください。
始める前に
このトピックでは、
test-instance
という名前の Bigtable インスタンスとtest-table
という名前のテーブルがあることを前提としています。これらのリソースは、テストテーブルの作成の手順で作成できます。不要なコストの発生を避けるため、作業の終了後すぐにリソースを削除してください。Cloud Functions 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 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。
Bigtable にアクセスするための Cloud Functions サンプルコードがあるディレクトリに移動します。
Node.js
cd nodejs-docs-samples/functions/bigtable/
Python
cd python-docs-samples/functions/bigtable/
Go
cd golang-samples/functions/bigtable/
サンプルコードを見てみましょう。
Node.js
Python
Go
この関数はテーブルに対して読み取りリクエストを送信して、行キー接頭辞が
phone
であるすべてのstats_summary
データをフェッチします。この関数は、関数のエンドポイントに HTTP リクエストを行うと実行されます。
関数をデプロイする
HTTP トリガーを使用して関数をデプロイするには、bigtable
ディレクトリで次のコマンドを実行します。
Node.js
gcloud functions deploy get \ --runtime nodejs20 --trigger-http
サポートされている Node.js バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Python
gcloud functions deploy bigtable_read_data \ --runtime python312 --trigger-http
サポートされている Python バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Go
gcloud functions deploy BigtableRead \ --runtime go121 --trigger-http
サポートされている Go バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
関数のデプロイには最大 2 分かかります。
関数のデプロイが完了すると、url
の値が返されます。この値は、関数をトリガーするときに使用します。
Google Cloud Console の Cloud Functions ページで、デプロイされた関数を確認できます。このページでは関数の作成と編集、関数の詳細と診断を得ることもできます。
関数をトリガーする
関数に HTTP リクエストを出します。
Node.js
curl "https://REGION-PROJECT_ID.cloudfunctions.net/get" -H "instance_id: test-instance" -H "table_id: test-table"
Python
curl "https://REGION-PROJECT_ID.cloudfunctions.net/bigtable_read_data" -H "instance_id: test-instance" -H "table_id: test-table"
Go
curl "https://REGION-PROJECT_ID.cloudfunctions.net/BigtableRead" -H "instance_id: test-instance" -H "table_id: test-table"
ここで REGION
と PROJECT_ID
は、関数のデプロイが完了したときにターミナルに表示される値と一致します。読み取りリクエストの結果を示す出力が表示されます。
ブラウザで関数の URL にアクセスして、読み取りリクエストの結果を表示することもできます。
クリーンアップ
このトピックで使用した Bigtable と Cloud Functions のリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。
インスタンスを削除します。
gcloud bigtable instances delete test-instance
デプロイした関数を削除します。
Node.js
gcloud functions delete get
Python
gcloud functions delete bigtable_read_data
Go
gcloud functions delete BigtableRead
次のステップ
- 他の Cloud Functions のコードサンプルを確認する。
- Cloud Functions のインテグレーションを確認する。
- Memcached とともに Cloud Functions を使用する方法を学ぶ。