Cloud リソース接続を作成して設定する
BigQuery 管理者は、データ アナリストが次のタスクを実行できるように Cloud リソース接続を作成できます。
- BigLake テーブルを使用して、構造化された Cloud Storage データをクエリする。BigLake テーブルを使用すると、アクセスの委任により外部データに対してクエリを実行できます。
- オブジェクト テーブルを使用して Cloud Storage の非構造化データをクエリする。
- Cloud Functions や Cloud Run でサポートされている言語でリモート関数を実装する。
接続の詳細については、接続の概要をご覧ください。
始める前に
BigQuery Connection API を有効にします。
-
Cloud リソース接続を作成するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
-
プロジェクトに対する BigQuery Connection 管理者(
roles/bigquery.connectionAdmin
) -
バケットに対するストレージ閲覧者(
roles/storage.viewer
)
ロールの付与の詳細については、アクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Cloud Storage ベースの BigLake テーブルまたはオブジェクト テーブルを使用する非構造化データを使用して構造化データに対してクエリを実行する場合は、接続に関連付けられているサービス アカウントに、外部データを含むバケットに対するストレージ閲覧者のロール(roles/storage.viewer
)も必要です。
-
プロジェクトに対する BigQuery Connection 管理者(
- Google Cloud SDK のバージョンが 366.0.0 以降であることを確認します。
gcloud version
必要に応じて、Google Cloud SDK を更新します。
- 省略可: Terraform の場合は、Terraform GCP バージョン 4.25.0 以降を使用します。最新バージョンは HashiCorp Terraform のダウンロードからダウンロードできます。
ロケーションに関する考慮事項
Cloud Storage を使用してデータファイルを保存する場合は、最適なパフォーマンスのために、マルチリージョン バケットではなく Cloud Storage のシングル リージョン バケットか、デュアル リージョン バケットを使用することをおすすめします。
クラウド リソース接続を作成する
BigLake は接続を使用して Cloud Storage にアクセスします。この接続は、単一テーブルまたはテーブルのグループで使用できます。
次のオプションのいずれかを選択します。
コンソール
[BigQuery] ページに移動します。
接続を作成するには、[
データを追加] をクリックし、続いて [外部データソースへの接続] をクリックします。[接続タイプ] リストで、[BigLake とリモート関数(クラウド リソース)] を選択します。
[接続 ID] フィールドに接続の名前を入力します。
[接続を作成] をクリックします。
[接続へ移動] をクリックします。
[接続情報] ペインで、次の手順で使用するサービス アカウント ID をコピーします。
bq
コマンドライン環境で接続を作成します。
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
--project_id
パラメータは、デフォルト プロジェクトをオーバーライドします。次のように置き換えます。
REGION
: 接続のリージョンPROJECT_ID
: 実際の Google Cloud プロジェクト IDCONNECTION_ID
: 接続の ID
接続リソースを作成すると、BigQuery は、一意のシステム サービス アカウントを作成し、それを接続に関連付けます。
トラブルシューティング: 次の接続エラーが発生した場合は、Google Cloud SDK を更新します。
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
後の手順で必要になるため、サービス アカウント ID を取得してコピーします。
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
出力は次のようになります。
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
main.tf
ファイルに次のセクションを追加します。
## This creates a cloud resource connection. ## Note: The cloud resource nested object has only one output only field - serviceAccountId. resource "google_bigquery_connection" "connection" { connection_id = "CONNECTION_ID" project = "PROJECT_ID" location = "REGION" cloud_resource {} }
CONNECTION_ID
: 接続の IDPROJECT_ID
: 実際の Google Cloud プロジェクト IDREGION
: 接続のリージョン
サービス アカウントへのアクセスを許可する
リモート関数を作成する場合は、Cloud Functions または Cloud Run に必要なロールを付与する必要があります。
Cloud Storage に接続する場合は、新しい接続に Cloud Storage への読み取り専用アクセス権を付与し、BigQuery がユーザーの代わりにファイルにアクセスできるようにする必要があります。
次のオプションのいずれかを選択します。
コンソール
接続リソース サービス アカウントに、Storage オブジェクト閲覧者 IAM ロール(roles/storage.objectViewer
)を付与することをおすすめします。これにより、サービス アカウントが Cloud Storage バケットにアクセスできるようになります。
[IAM と管理] ページに移動します。
[
追加] をクリックします。[プリンシパルを追加] ダイアログが開きます。
[新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。
[ロールを選択] フィールドで、[Cloud Storage] を選択し、続いて [Storage オブジェクト閲覧者] を選択します。
[保存] をクリックします。
gsutil
gsutil iam ch
コマンドを実行します。
gsutil iam ch serviceAccount:MEMBER:objectViewer gs://example-bucket
MEMBER
は、先ほどコピーしたサービス アカウント ID に置き換えます。
詳細については、バケットレベルのポリシーにプリンシパルを追加するをご覧ください。
Terraform
main.tf
ファイルに次のセクションを追加します。
## This grants permissions to the service account of the connection created in the last step. resource "google_project_iam_member" "connectionPermissionGrant" { project = "PROJECT_ID" role = "roles/storage.objectViewer" member = format("serviceAccount:%s", google_bigquery_connection.connection.cloud_resource[0].service_account_id) }
ユーザーと接続を共有する
次のロールを付与することで、ユーザーがデータをクエリして接続を管理できます。
roles/bigquery.connectionUser
: ユーザーが接続を使用して外部データソースに接続し、クエリを実行できるようにします。roles/bigquery.connectionAdmin
: ユーザーが接続を管理できるようにします。
BigQuery での IAM のロールと権限について詳しくは、事前定義ロールと権限をご覧ください。
次のオプションのいずれかを選択します。
コンソール
[BigQuery] ページに移動します。
接続は、プロジェクトで外部接続というグループに一覧表示されます。
[エクスプローラ] ペインで、[プロジェクト名] > [外部接続] > [接続] の順にクリックします。
[詳細] ペインで、[共有] をクリックして接続を共有します。次に、以下の操作を行います。
[接続の権限] ダイアログで、プリンシパルを追加または編集して、他のプリンシパルと接続を共有します。
[保存] をクリックします。
bq
bq コマンドライン ツールを使用して接続を共有することはできません。接続を共有するには、Google Cloud コンソールまたは BigQuery Connections API メソッドを使用します。
API
BigQuery Connections REST API の projects.locations.connections.setIAM
メソッドを使用して、policy
リソースのインスタンスを指定します。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Java の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
次のステップ
- さまざまな接続タイプについて確認する。
- 接続の管理について確認する。
- BigLake テーブルについて確認する。
- BigLake テーブルを作成する方法を確認する。
- 外部テーブルを BigLake テーブルにアップグレードする方法を確認する。
- オブジェクト テーブルとオブジェクト テーブルの作成方法を確認する。
- リモート関数を実装する方法を確認する。