このチュートリアルでは、BigQuery にクエリを送信する HTTP Cloud Run 関数を作成する方法について説明します。
始める前に
設定ページの説明に従って、Cloud Run に新しいプロジェクトを設定したことを確認してください。
Artifact Registry、Cloud Build、Cloud Run Admin API を有効にします。
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com
ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、限定公開サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。
必要なロール
ソースから Cloud Run サービスをデプロイするために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
プロジェクトに対する 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 サービスがGoogle Cloud API(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
はプロジェクト番号に、PROJECT_ID
はプロジェクト ID に置き換えます。 Google CloudGoogle Cloudプロジェクト 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 リージョンに置き換えます。例:
us-central1
。
オプション:
- 公開 HTTP 関数(Webhook など)を作成する場合は、
--allow-unauthenticated
フラグを指定します。このフラグは、Cloud Run IAM 起動元ロールを特別な IDallUser
に割り当てます。サービスの作成後に、IAM を使用してこの設定を編集できます。
関数をテストする
関数のデプロイが完了したら、
uri
プロパティをコピーします。ブラウザでこの URI にアクセスします。
クエリ条件に一致する単語のリストと、各単語がターゲット データセットに出現する回数が表示されます。
クリーンアップ
サービスが使用されていない場合、Cloud Run の料金は発生しませんが、コンテナ イメージを Artifact Registry に保存すると課金される場合があります。コンテナ イメージを削除するか、Google Cloud プロジェクトを削除してこのような料金が発生しないようにできます。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.