目標
Cloud Bigtable にアクセスする HTTP Cloud Function の関数を作成、デプロイ、トリガーします。
費用
このトピックでは、Google Cloud の課金対象コンポーネントである Cloud Bigtable と Cloud Functions を使用します。
Cloud Bigtable の使用料金については、Cloud Bigtable の料金をご覧ください。
Cloud Functions の使用料金と無料の呼び出しについては、Cloud Functions の料金をご覧ください。
始める前に
このトピックでは、
test-instance
という名前の Cloud Bigtable インスタンスとtest-table
という名前のテーブルがあることを前提としています。これらのリソースは、テストテーブルの作成の手順で作成できます。不要なコストの発生を避けるため、作業の終了後すぐにリソースを削除してください。Cloud Functions API を有効にします。
-
Cloud SDK がすでにインストールされている場合は、次のコマンドを実行して更新します。
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 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。
Cloud 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 nodejs10 --trigger-http優先する Node.js のバージョンを指定するには、
--runtime
フラグに次の値を使用します。
nodejs10
nodejs12
nodejs14
(公開プレビュー)
Python
gcloud functions deploy bigtable_read_data \ --runtime python38 --trigger-http優先する Python バージョンを指定するには、
--runtime
フラグに次の値を使用します。
python37
python38
python39
(公開プレビュー)
Go
gcloud functions deploy HelloBigtable \ --runtime go113 --trigger-http優先する Go バージョンを指定するには、
--runtime
フラグに次の値を使用します。
go111
go113
関数のデプロイには最大 2 分かかります。
関数のデプロイが完了すると、url
の値が返されます。この値は、関数をトリガーするときに使用します。
Google Cloud Console の Cloud Functions ページで、デプロイされた関数を確認できます。このページでは関数の作成と編集、関数の詳細と診断を得ることもできます。
関数をトリガーする
関数に HTTP リクエストを出します。
Node.js
curl "https://REGION-PROJECT_ID.cloudfunctions.net/get" --trigger-http
Python
curl "https://REGION-PROJECT_ID.cloudfunctions.net/bigtable_read_data" --trigger-http
Go
curl "https://REGION-PROJECT_ID.cloudfunctions.net/HelloBigtable" --trigger-http
ここで REGION
と PROJECT_ID
は、関数のデプロイが完了したときにターミナルに表示される値と一致します。読み取りリクエストの結果を示す出力が表示されます。
ブラウザで関数の URL にアクセスして、読み取りリクエストの結果を表示することもできます。
クリーンアップ
このトピックで使用した Cloud Bigtable と Cloud Functions のリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。
インスタンスを削除します。
gcloud bigtable instances delete test-instance
デプロイした関数を削除します。
Node.js
gcloud functions delete get --trigger-http
Python
gcloud functions delete bigtable_read_data --trigger-http
Go
gcloud functions delete HelloBigtable --trigger-http