リモート関数と Translation API のチュートリアル
このチュートリアルでは、BigQuery リモート関数を作成し、Cloud Translation API を呼び出して、SQL と Python を使用して任意の言語からスペイン語へのコンテンツ翻訳を実行する方法について説明します。
この関数のユースケースには次のようなものがあります。
- ウェブサイトへのユーザー コメントをローカル言語に翻訳する
- サポートケース作業者向けに、サポート リクエストを複数の言語から 1 つの共通言語に翻訳する
目標
- アカウントに必要なロールを割り当てます。
- Cloud Run functions の関数を作成します。
- BigQuery データセットを作成します。
- BigQuery の接続とサービス アカウントを作成します。
- BigQuery サービス アカウントに権限を付与します。
- BigQuery リモート関数を作成します。
- BigQuery リモート関数を呼び出します。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
このチュートリアル用に Google Cloud プロジェクトを作成することをおすすめします。また、このチュートリアルを完了するために必要なロールが付与されていることを確認してください。
Google Cloud プロジェクトを設定する
このチュートリアル用に 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, Cloud Translation, Cloud Run functions, Cloud Build, Cloud Logging, Cloud Pub/Sub, Artifact Registry, and Cloud Run Admin APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, Cloud Translation, Cloud Run functions, Cloud Build, Cloud Logging, Cloud Pub/Sub, Artifact Registry, and Cloud Run Admin APIs.
-
BigQuery データオーナー(
roles/bigquery.dataOwner
) -
BigQuery Connection 管理者(
roles/bigquery.connectionAdmin
) -
Cloud Functions 開発者(
roles/cloudfunctions.developer
) -
bigquery.datasets.create
-
bigquery.connections.create
-
bigquery.connections.get
-
cloudfunctions.functions.create
Compute Engine のデフォルトのサービス アカウントをコピーします。デフォルトのサービス アカウントは次のようになります。
PROJECT_NUMBER-compute@developer.gserviceaccount.com
PROJECT_NUMBER
は、実際のプロジェクト ID に置き換えます。Google Cloud コンソールで、[IAM] ページに移動します。
プロジェクトを選択します。
[
アクセス権を付与] をクリックし、[新しいプリンシパル] フィールドに、先ほどコピーした Compute Engine のデフォルト サービス アカウントを貼り付けます。[ロールを割り当てる] のリストで、[Cloud Translation API ユーザー] を見つけて選択します。
[保存] をクリックします。
次の仕様で Cloud Run functions の関数を作成します。
- [環境] には、[第 2 世代] を選択します。
- [関数名] に「
translation-handler
」と入力します。 - [リージョン] で、[us-central1] を選択します。
[インスタンスの最大数] に「
10
」と入力します。この設定は、[Runtime, build, connections and security settings] セクションにあります。
このチュートリアルでは、デフォルトよりも小さい値を使用して、Translation に送信されるリクエスト レートを制御します。
[ランタイム] では [Python 3.10] を選択します。
[エントリ ポイント] に「
handle_translation
」と入力します。
ファイルリストで main.py を選択し、次のコードを貼り付けます。
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
<your location>
をus-central1
に更新します。ファイルリストで requirements.txt を選択し、次のテキストを貼り付けます。
[デプロイ] をクリックし、関数がデプロイされるのを待ちます。
[トリガー] タブをクリックします。
[トリガー URL] の値をコピーし、後で使用できるように保存します。BigQuery リモート関数を作成するときに、この URL を使用する必要があります。
- [データセット ID] に「
remote_function_test
」と入力します。 - [ロケーション タイプ] で [マルチリージョン] を選択します。
- [マルチリージョン] で [US(米国の複数のリージョン)] を選択します。
次の仕様で Google Cloud リソース接続を作成します。
- [接続タイプ] で、[BigLake とリモート関数(クラウド リソース)] を選択します。
- [接続 ID] に「
remote-function-connection
」と入力します。 - [ロケーション タイプ] で [マルチリージョン] を選択します。
- [マルチリージョン] で [US(米国の複数のリージョン)] を選択します。
[外部接続] リストを開き、[
us.remote-function-connection
] を選択します。サービス アカウント ID をコピーして、後で使用できるように保存します。次のステップで、この ID に権限を付与する必要があります。
[Cloud Run] ページに移動します。
プロジェクトを選択します。
translation-handler
の横のチェックボックスをオンにします。[権限] パネルで、[プリンシパルを追加] をクリックします。
[新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。
[ロールを割り当てる] のリストで、[Cloud Run 起動元] を見つけて選択します。
[保存] をクリックします。
Google Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタで以下のクエリを入力します。
CREATE OR REPLACE FUNCTION `remote_function_test.translate_text`(x STRING) RETURNS STRING REMOTE WITH CONNECTION `us.remote-function-connection` OPTIONS ( endpoint = 'TRIGGER_URL', max_batching_rows = 10);
TRIGGER_URL
は、Cloud Run functions の関数の作成時に保存したトリガー URL に置き換えます。[実行] をクリックします。次のようなメッセージが表示されます。
This statement created a new function named your_project.remote_function_test.translate_text.
BigQuery クエリエディタで次のクエリを入力し、[実行] をクリックします。
SELECT remote_function_test.translate_text('This new feature is fantastic!') AS translated_text;
結果は次のようになります。
+-------------------------------------------+ | translated_text | +-------------------------------------------+ | ¡Esta nueva característica es fantástica! | +-------------------------------------------+
省略可: 一般公開データセットでリモート関数をテストするには、次のクエリを入力して [実行] をクリックします。返される結果を制限するには、
LIMIT
句を使用します。SELECT text, remote_function_test.translate_text(text) AS translated_text FROM (SELECT text FROM `bigquery-public-data.hacker_news.full` LIMIT 3);
結果は次のようになります。
+---------------------------------------------------------------------------+ | text | translated_text | +---------------------------------------------------------------------------+ | These benchmarks look good. | Estos puntos de referencia se ven bien. | | Who is using Java? | ¿Quién está usando Java? | | You need more database storage. | Necesitas más almacenamiento. | +---------------------------------------------------------------------------+
- 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.
- BigQuery でリモート関数を使用する方法を確認する。
- Translationについて確認する。
- Cloud Run 関数 について確認する。
- Cloud Run について確認する。
アカウントに必要なロール
このチュートリアルのタスクを実行するために必要な権限を取得するには、プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
これらの事前定義ロールには、このチュートリアルのタスクを実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
このチュートリアルのタスクを実行するには、次の権限が必要です。
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
Compute Engine のデフォルト サービス アカウントに必要なロール
Cloud Run functions に対してこの API を有効にしたときに、Compute Engine のデフォルト サービス アカウントが作成されました。このチュートリアルを完了するには、このデフォルトのサービス アカウントに Cloud Translation API ユーザー ロールを付与する必要があります。
Cloud Run functions の関数を作成する
Cloud Run functions を使用して、入力テキストをスペイン語に変換する関数を作成します。
BigQuery データセットを作成する
リモート関数を含む BigQuery データセットを作成します。このデータセットを作成するときに、次の仕様を含めます。
BigQuery の接続とサービス アカウントを作成する
BigQuery 接続を作成して、Cloud Run functions と Cloud Run でサポートされている任意の言語でリモート関数を実装できるようにします。接続を作成すると、その接続用のサービス アカウントが作成されます。
BigQuery サービス アカウントに権限を付与する
前の手順で作成したサービス アカウントには、BigQuery リモート関数が Cloud Run functions の関数を使用できるように、Cloud Run を使用する権限が必要です。サービス アカウントに権限を付与する手順は、次のとおりです。
BigQuery リモート関数を作成する
BigQuery リモート関数を使用してテキストをスペイン語に変換する Cloud Run functions の関数を使用する手順は、次のとおりです。
BigQuery リモート関数を呼び出す
リモート関数を作成したら、その関数をテストして、Cloud Run functions の関数にリンクされており、期待される結果がスペイン語で生成されることを確認します。
リソースを削除する
このプロジェクトでこれらの関数を使用する予定がない場合は、プロジェクトを削除することで、追加費用の発生を回避できます。これにより、プロジェクトに関連付けられているすべてのリソースが完全に削除されます。