

# AWS Glue Studio で Google BigQuery に接続する
<a name="connecting-to-data-bigquery"></a>

**注記**  
  AWS Glue for Spark を使用して、AWS Glue 4.0 以降のバージョンの Google BigQuery のテーブルからの読み取りとテーブルへの書き込みを行うことができます。AWS Glue ジョブと Google BigQuery をプログラム的に設定する方法については、「[BigQuery 接続](aws-glue-programming-etl-connect-bigquery-home.md)」を参照してください。  

 AWS Glue Studio には、BigQuery へ接続し、データ統合ジョブを作成し、AWS Glue Studio サーバーレス Spark ランタイム上でそれらを実行するビジュアルインターフェイスが用意されています。

 AWS Glue Studio で Google BigQuery への接続を作成すると、統合接続が作成されます。詳細については、「[考慮事項](using-connectors-unified-connections.md#using-connectors-unified-connections-considerations)」を参照してください。

 特定の形式 `{"credentials": "base64 encoded JSON"}` の認証情報を使用してシークレットを作成する代わりに、Google BigQuery への統合接続を使用して、Golge BigQuery の JSON を直接含むシークレットを作成できます: `{"type": "service-account", ...}`。

**Topics**
+ [BigQuery 接続を作成する](creating-bigquery-connection.md)
+ [BigQuery ソースノードの作成](creating-bigquery-source-node.md)
+ [BigQuery ターゲットノードを作成する](creating-bigquery-target-node.md)
+ [詳細オプション](#creating-bigquery-connection-advanced-options)

# BigQuery 接続を作成する
<a name="creating-bigquery-connection"></a>

AWS Glue から Google BigQuery へ接続するには、Google Cloud Platform の認証情報を作成して AWS Secrets Manager シークレットに保存し、そのシークレットを Google BigQuery AWS Glue 接続に関連付ける必要があります。

**BigQuery への接続を設定するには:**

1. Google Cloud Platform で、関連するリソースを作成して特定します。
   + 接続したい BigQuery テーブルを含む GCP プロジェクトを作成または特定します。
   + BigQuery API を有効にします。詳細については、「[Use the BigQuery Storage Read API to read table data](https://cloud.google.com/bigquery/docs/reference/storage/#enabling_the_api)」を参照してください。

1. Google Cloud Platform で、サービスアカウントの認証情報を作成してエクスポートします。

   BigQuery 認証情報ウィザードを使用すると、[認証情報の作成](https://console.cloud.google.com/apis/credentials/wizard?api=bigquery.googleapis.com) というステップを迅速に実行できます。

   GCP でサービスアカウントを作成するには、[サービスアカウントを作成する](https://cloud.google.com/iam/docs/service-accounts-create) にあるチュートリアルに従ってください。
   + **プロジェクト** を選択するときは、BigQuery テーブルを含むプロジェクトを選択します。
   + サービスアカウントの GCP IAM ロールを選択するときは、BigQuery テーブルの読み取り、書き込み、作成を行う BigQuery ジョブを実行するための適切な権限を付与するロールを追加または作成します。

   サービスアカウントの認証情報を作成するには、[サービスアカウントキーを作成する](https://cloud.google.com/iam/docs/keys-create-delete#creating) にあるチュートリアルに従ってください。
   + キータイプを選択するときは、**[JSON]** を選択します。

   これで、サービスアカウントの認証情報が記載された JSON ファイルがダウンロードされたはずです。これは次のように表示されます。

   ```
   {
     "type": "service_account",
     "project_id": "*****",
     "private_key_id": "*****",
     "private_key": "*****",
     "client_email": "*****",
     "client_id": "*****",
     "auth_uri": "https://accounts.google.com/o/oauth2/auth",
     "token_uri": "https://oauth2.googleapis.com/token",
     "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
     "client_x509_cert_url": "*****",
     "universe_domain": "googleapis.com"
   }
   ```

1. AWS Secrets Manager で、ダウンロードした認証情報ファイルを使用してシークレットを作成します。**[プレーンテキスト]** タブを選択し、JSON 形式のファイルコンテンツを貼り付けることができます。Secrets Manager でシークレットを作成するには、AWS Secrets Manager ドキュメントの [AWS Secrets Manager シークレットを作成する](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) にあるチュートリアルに従ってください。シークレットを作成したら、次のステップのためにシークレット名 *secretName* を保存しておきます。

1. AWS Glue データカタログで、[https://docs.aws.amazon.com/glue/latest/dg/console-connections.html](https://docs.aws.amazon.com/glue/latest/dg/console-connections.html) にある手順に従って接続を作成します。接続を作成したら、次のステップのために接続名 *connectionName* を保存しておきます。
   + **[接続タイプ]** を選択するときは、Google BigQuery を選択してください。
   + **[AWS Secret]** をクリックして、*secretName* を入力します。

1. AWS Glue ジョブに関連付けられている IAM ロールに *secretName* を読み取るアクセス許可を付与します。

1. AWS Glue ジョブ設定で、**[Additional network connection]** として *[connectionName]* を指定します。

# BigQuery ソースノードの作成
<a name="creating-bigquery-source-node"></a>

## 必要な前提条件
<a name="creating-bigquery-source-node-prerequisites"></a>
+ BigQuery タイプの AWS Glue データカタログ接続
+ 接続時に使用される Google BigQuery 認証情報の AWS Secrets Manager シークレット。
+ 接続で使用されるシークレットを読み取るためのジョブに対する適切なアクセス許可。
+ 読み取る対象のテーブルおよび対応する Google Cloud プロジェクトの名前とデータセット。

## BigQuery データソースを追加する
<a name="creating-bigquery-source-node-add"></a>

****データソース — BigQuery** ノードを追加するには**

1.  BigQuery データソースの接続を選択します。すでに作成したので、ドロップダウンに表示されているはずです。接続を作成する必要がある場合は、**[Create BigQuery connection]** を選択します。詳細については、「[コネクタと接続の使用に関する概要](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview)」を参照してください。

    接続を選択したあとは、**[プロパティを表示]** をクリックすると、接続のプロパティを表示できます。

1. 読み取る BigQuery データを特定し、**[BigQuery Source]** オプションを選択します。
   + Choose a single table - テーブルからすべてのデータを取得できます。
   + Enter a custom query — クエリを指定することで、取得するデータをカスタマイズできます。

1.  読み取るデータの説明を記述します。

   **(必須)** テーブルを含むプロジェクト、または該当する場合は、請求元の親プロジェクトに**[親プロジェクト]**を設定します。

   1 つのテーブルを選択した場合は、**[テーブル]** を次の形式で Google BigQuery テーブルの名前に設定します。`[dataset].[table]`

   クエリを選択した場合は、それを **[クエリ]** に提供します。クエリでは、`[project].[dataset].[tableName]` の形式の完全修飾テーブル名の付いたテーブルを参照します。

1.  BigQuery プロパティを指定します。

   1 つのテーブルを選択した場合は、追加のプロパティを指定する必要はありません。

   クエリを選択した場合は、以下の **[Custom Google BigQuery properties]** を指定する必要があります。
   + `viewsEnabled` を true に設定します。
   + `materializationDataset` をデータセットに設定します。AWS Glue 接続を通じて提供された認証情報で認証された GCP プリンシパルは、このデータセットにテーブルを作成できる必要があります。

# BigQuery ターゲットノードを作成する
<a name="creating-bigquery-target-node"></a>

## 必要な前提条件
<a name="creating-bigquery-target-node-prerequisites"></a>
+ BigQuery タイプの AWS Glue データカタログ接続
+ 接続時に使用される Google BigQuery 認証情報の AWS Secrets Manager シークレット。
+ 接続で使用されるシークレットを読み取るためのジョブに対する適切なアクセス許可。
+ 書き込み対象のテーブルおよび対応する Google Cloud プロジェクトの名前とデータセット。

## BigQuery データターゲットを追加する
<a name="creating-bigquery-target-node-add"></a>

****[Data target – BigQuery]** ノードを追加するには:**

1.  BigQuery データターゲットの接続を選択します。すでに作成したので、ドロップダウンに表示されているはずです。接続を作成する必要がある場合は、**[Create BigQuery connection]** を選択します。詳細については、「[コネクタと接続の使用に関する概要](https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html#using-connectors-overview)」を参照してください。

    接続を選択したあとは、**[プロパティを表示]** をクリックすると、接続のプロパティを表示できます。

1. どの BigQuery テーブルに書き込むかを特定し、**[Write method]** を選択します。
   + 直接 — BigQuery Storage Write API を使用して BigQuery に直接書き込みます。
   + 間接 — Google Cloud Storage に書き込んでから BigQuery にコピーします。

   間接的に書き込む場合は、**一時 GCS バケット**を使用して送信先の GCS ロケーションを指定します。AWS Glue 接続時に追加の設定を行う必要があります。詳細については、「[Using indirect write with Google BigQuery](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect-bigquery-home.html#aws-glue-programming-etl-connect-bigquery-indirect-write)」を参照してください。

1.  読み取るデータの説明を記述します。

   **(必須)** テーブルを含むプロジェクト、または該当する場合は、請求元の親プロジェクトに**[親プロジェクト]**を設定します。

   1 つのテーブルを選択した場合は、**[テーブル]** を次の形式で Google BigQuery テーブルの名前に設定します。`[dataset].[table]`

## 詳細オプション
<a name="creating-bigquery-connection-advanced-options"></a>

BigQuery ノードを作成するときに、高度なオプションを指定できます。これらのオプションは Spark AWS Glue スクリプトのプログラミング時に使用できるオプションと同じです。

「AWS Glue デベロッパーガイド」の「[BigQuery 接続オプションリファレンス](https://docs.aws.amazon.com//glue/latest/dg/aws-glue-programming-etl-connect-bigquery-home.html)」をご覧ください。