このチュートリアルでは、BigQuery にクエリを送信する Cloud Run functions の HTTP 関数を作成する方法について説明します。
目標
このチュートリアルの内容は次のとおりです。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Run Admin API, and Cloud Build APIs.
- Google Cloud プロジェクトで Cloud Run 開発環境を設定します。
ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、限定公開サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。
- プロジェクトに対する Cloud Run ソース デベロッパー(
roles/run.sourceDeveloper
)。 -
Cloud Run サービスに対する Service Usage コンシューマー(
roles/serviceusage.serviceUsageConsumer
) -
サービス ID に対するサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)ロール -
サービス ID に対する BigQuery ジョブユーザー(
roles/bigquery.jobUser
)
必要なロール
ソースから Cloud Run サービスをデプロイするために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスがGoogle Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
Cloud Build サービス アカウントのロール
ユーザーまたは管理者が、Cloud Build サービス アカウントに次の IAM ロールを付与する必要があります。
クリックして Cloud Build サービス アカウントに必要なロールを表示
この動作をオーバーライドしない限り、Cloud Build は、ソースコードと Cloud Run リソースのビルドにデフォルトの Cloud Build サービス アカウントとして Compute Engine のデフォルトのサービス アカウントを自動的に使用します。Cloud Build がソースをビルドできるようにするには、プロジェクトの Compute Engine のデフォルトのサービス アカウントに Cloud Run ビルダー(roles/run.builder
)を付与するよう管理者に依頼します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
PROJECT_NUMBER
は Google Cloudプロジェクト番号に、PROJECT_ID
は Google Cloudプロジェクト ID に置き換えます。プロジェクト ID とプロジェクト番号を確認する方法については、プロジェクトの作成と管理をご覧ください。
Compute Engine のデフォルト サービス アカウントに Cloud Run ビルダーのロールを付与すると、反映されるまでに数分かかることがあります。
アプリケーションを準備する
ローカルマシンにサンプル アプリケーション リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
または、zip ファイルとしてサンプルをダウンロードし、ファイルを解凍します。
サンプルコードが入っているディレクトリに移動します。
cd nodejs-docs-samples/functions/v2/helloBigQuery
サンプルコードを見てみましょう。このサンプルは、指定したデータセットで 400 回以上発生した単語をクエリし、結果を返します。
関数をデプロイする
HTTP トリガーを使用して関数をデプロイするには:
サンプルコードを含むディレクトリで次のコマンドを実行します。
gcloud run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION \ --allow-unauthenticated
次のように置き換えます。
FUNCTION は、デプロイする関数の名前に置き換えます(
my-bigquery-function
など)。このパラメータは省略できますが、省略すると名前の入力を求められます。FUNCTION_ENTRYPOINT: ソースコード内の関数のエントリ ポイント。これは、関数の実行時に Cloud Run が実行するコードです。このフラグには、ソースコード内に存在する関数名または完全修飾クラス名を指定する必要があります。サンプル関数に指定するエントリ ポイントは
helloBigQuery
です。BASE_IMAGE は、関数のベースイメージ環境に置き換えます(例:
nodejs22
)。ベースイメージと各イメージに含まれるパッケージの詳細については、ランタイム ベースイメージをご覧ください。REGION は、関数をデプロイする Google Cloud リージョンに置き換えます。例:
europe-west1
。
オプション:
- 公開 HTTP 関数(Webhook など)を作成する場合は、
--allow-unauthenticated
フラグを指定します。このフラグは、Cloud Run IAM 起動元ロールを特別な IDallUser
に割り当てます。サービスの作成後に、IAM を使用してこの設定を編集できます。
関数をテストする
関数のデプロイが完了したら、
uri
プロパティをコピーします。ブラウザでこの URI にアクセスします。
クエリ条件に一致する単語のリストと、各単語がターゲット データセットに出現する回数が表示されます。
クリーンアップ
Google Cloud アカウントに追加料金が課されるのを回避するには、このチュートリアルでデプロイしたリソースをすべて削除します。
プロジェクトを削除する
このチュートリアル用に新規プロジェクトを作成した場合は、そのプロジェクトを削除します。 既存のプロジェクトを使用し、このチュートリアルでの変更を加えずに残す場合は、チュートリアル用に作成したリソースを削除します。
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
チュートリアル リソースを削除する
このチュートリアルでデプロイした Cloud Run サービスを削除します。Cloud Run サービスの費用は、リクエストを受け取るまでは発生しません。
Cloud Run サービスを削除するには、次のコマンドを実行します。
gcloud run services delete SERVICE-NAME
SERVICE-NAME は、実際のサービス名に置き換えます。
Cloud Run サービスは Google Cloud コンソールで削除することもできます。
チュートリアルの設定時に追加した
gcloud
のデフォルトのリージョン構成を削除します。gcloud config unset run/region
プロジェクト構成を削除します。
gcloud config unset project