VPC ネットワークを使用した Amazon Redshift データの移行

このドキュメントでは、VPC を使用して Amazon Redshift から BigQuery にデータを移行する方法について説明します。

AWS にプライベートの Amazon Redshift インスタンスがある場合、Virtual Private Cloud(VPC)ネットワークを作成して Amazon Redshift VPC ネットワークに接続することにより、そのデータを BigQuery に移行できます。データの移行プロセスは次のとおりです。

  1. 転送に使用するプロジェクトに VPC ネットワークを作成します。VPC ネットワークを共有 VPC ネットワークにすることはできません。
  2. バーチャル プライベート ネットワーク(VPN)を設定して、プロジェクトの VPC ネットワークと Amazon Redshift VPC ネットワークを接続します。
  3. 転送を設定するときに、プロジェクトの VPC ネットワークと予約済み IP 範囲を指定します。
  4. BigQuery Data Transfer Service でテナント プロジェクトを作成し、転送に使用するプロジェクトにアタッチします。
  5. BigQuery Data Transfer Service は、指定された予約済み IP 範囲を使用して、テナント プロジェクト内に 1 つのサブネットを持つ VPC ネットワークを作成します。
  6. BigQuery Data Transfer Service は、プロジェクトの VPC ネットワークとテナント プロジェクトの VPC ネットワークの間に VPC ピアリングを作成します。
  7. BigQuery Data Transfer Service の移行はテナント プロジェクトで実行されます。Amazon Redshift から Amazon S3 バケットのステージング領域へのアンロード オペレーションがトリガーされます。アンロード速度は、クラスタ構成によって決まります。
  8. BigQuery Data Transfer Service 移行によって Amazon S3 バケットから BigQuery にデータが転送されます。

Amazon Redshift インスタンスからパブリック IP 経由でデータを転送する場合は、次の手順で Amazon Redshift データを BigQuery に移行できます。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. BigQuery and BigQuery Data Transfer Service API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します

  7. BigQuery and BigQuery Data Transfer Service API を有効にします。

    API を有効にする

必要な権限を設定する

Amazon Redshift 転送を作成する前に、次の手順に従います。

  1. 転送を作成するユーザーに、BigQuery で次の必要な Identity and Access Management(IAM)権限があることを確認します。

    • bigquery.transfers.update(転送を作成する権限)
    • bigquery.datasets.update(抽出先データセットに対する権限)

    bigquery.transfers.update 権限と bigquery.datasets.update 権限は IAM 事前定義ロール role/bigquery.admin に含まれています。BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御をご覧ください。

  2. 転送を有効にするために必要な権限が構成されたことを確認するには、Amazon S3 のドキュメントをご覧ください。少なくとも、Amazon S3 ソースデータには AWS 管理ポリシー AmazonS3ReadOnlyAccess が適用されている必要があります。

  3. 転送を設定する個人に、VPC ネットワーク ピアリングの作成と削除のための適切な IAM 権限を付与します。このサービスでは、個人の Google Cloud ユーザー認証情報を使用して VPC ピアリング接続を作成します。

    • VPC ピアリングを作成する権限: compute.networks.addPeering
    • VPC ピアリングを削除する権限: compute.networks.removePeering

    compute.networks.addPeering 権限と compute.networks.removePeering 権限は、デフォルトで 事前定義された IAM の事前定義ロール roles/project.ownerroles/project.editorroles/compute.networkAdmin に含まれています。

データセットを作成する

データを保存する BigQuery データセットを作成します。テーブルを作成する必要はありません。

Amazon Redshift クラスタへのアクセスを許可する

SQL クライアント用の受信ルールの構成の手順に沿って、限定公開の Amazon Redshift クラスタの IP 範囲を許可リストに登録します。後のステップで、転送を設定するときに、この VPC ネットワーク内のプライベート IP 範囲を定義します。

Amazon S3 バケットへのアクセスを許可する

Amazon Redshift データを BigQuery に転送するには、ステージング領域として使用する Amazon S3 バケットが必要になります。詳しい手順については、Amazon のドキュメントをご覧ください。

  1. 専用の Amazon IAM ユーザーを作成し、Amazon Redshift に対する読み取り専用アクセス権と、Amazon S3 に対する読み取り / 書き込みアクセス権を付与することをおすすめします。このステップを実現するには、次のポリシーを適用します。

    Amazon Redshift 移行用の Amazon の権限

  2. Amazon IAM ユーザーのアクセスキー ペアを作成します。

分離移行キューによるワークロードの制御

移行用に Amazon Redshift キューを定義することで、移行に使用されるリソースを限定および分離できます。この移行キューには、同時実行クエリの最大数を指定して構成できます。その後、特定の移行ユーザー グループをキューに関連付けて、BigQuery へのデータ転送を設定する際にそれらの認証情報を使用します。転送サービスは移行キューにのみアクセスできます。

転送情報を収集する

BigQuery Data Transfer Service で移行を設定するために必要な情報を収集します。

  • Amazon Redshift の VPC と予約済み IP 範囲を取得します。
  • こちらの JDBC の URL を取得する手順を使用します。
  • Amazon Redshift データベースに対する適切な権限を持つユーザーのユーザー名とパスワードを取得します。
  • Amazon S3 バケットへのアクセスを許可するの手順に沿って、AWS アクセスキーのペアを取得します。
  • 転送に使用する Amazon S3 バケットの URI を取得します。 このバケットにライフサイクル ポリシーを設定して、不要な課金が発生しないようにすることをおすすめします。すべてのデータを BigQuery に転送するのに十分な時間を確保するため、推奨される有効期限は 24 時間です。

データを評価する

データ転送の一環として、BigQuery Data Transfer Service は Amazon Redshift から Cloud Storage に CSV ファイルとしてデータを書き込みます。これらのファイルに ASCII 0 文字が含まれていると、BigQuery に読み込めません。データを評価して、これが問題の原因であるかどうかを判断することをおすすめします。その場合は、データを Parquet ファイルとして Amazon S3 にエクスポートし、BigQuery Data Transfer Service を使用してそれらのファイルをインポートすることで、この問題を回避できます。詳細については、Amazon S3 の転送の概要をご覧ください。

VPC ネットワークと VPN を設定する

  1. VPC ピアリングを有効にする権限があることを確認します。詳細については、必要な権限を設定するをご覧ください。

  2. このガイドの手順に従い Google Cloud VPC ネットワークの設定を行い、Google Cloud プロジェクトの VPC ネットワークと Amazon Redshift VPC ネットワークの間に VPN を設定し、VPC ピアリングを有効にします。

  3. VPN に接続できるように Amazon Redshift を構成します。詳細については、Amazon Redshift クラスタのセキュリティ グループをご覧ください。

  4. Google Cloud コンソールで [VPC ネットワーク] ページに移動し、Google Cloud VPC ネットワークが Google Cloud プロジェクト内に存在し、VPN を通じて Amazon Redshift に接続されていることを確認します。

    [VPC ネットワーク] に移動

    [コンソール] ページには、VPC ネットワークのすべてが一覧表示されます。

Amazon Redshift 転送を設定する

次の手順で、Amazon Redshift 転送を設定します。

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. [データ転送] をクリックします。

  3. [転送を作成] をクリックします。

  4. [ソースタイプ] セクションで、[ソース] リストから [Migration: Redshift] を選択します。

  5. [転送構成名] セクションで、[表示名] フィールドに、My migration などの転送の名前を入力します。表示名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。

  6. [宛先の設定] セクションで、[データセット] リストから作成したデータセットを選択します。

  7. [データソースの詳細] セクションで、次のようにします。

    1. [JDBC connection url for Amazon Redshift] で、Amazon Redshift クラスタにアクセスするための JDBC の URL を指定します。
    2. [Username of your database] に、移行する Amazon Redshift データベースのユーザー名を入力します。
    3. [Password of your database] に、データベースのパスワードを入力します。

    4. [アクセスキー ID] と [シークレット アクセスキー] に、S3 バケットにアクセスを許可するで取得したアクセスキー ペアを入力します。

    5. [Amazon S3 URI] に、ステージング領域として使用する S3 バケットの URI を入力します。

    6. [Redshift Schema] に、移行する Amazon Redshift スキーマを入力します。

    7. [Table name patterns] に、スキーマ内でテーブル名を照合するための名前かパターンを指定します。正規表現を使用して、<table1Regex>;<table2Regex> の形式でパターンを指定できます。このパターンは、Java の正規表現の構文に従っている必要があります。次に例を示します。

      • lineitem;ordertb は、lineitemordertb という名前のテーブルに一致します。
      • .* はすべてのテーブルを照合します。

      指定したスキーマからすべてのテーブルを移行するには、このフィールドを空のままにします。

    8. [VPC and the reserved IP range] に、テナント プロジェクトの VPC ネットワークで使用する VPC ネットワーク名とプライベート IP アドレス範囲を指定します。IP アドレス範囲を CIDR ブロックとして指定します。

      Amazon Redshift の移行の CIDR フィールド

      • フォームは VPC_network_name:CIDR です。例: my_vpc:10.251.1.0/24
      • 10.x.x.x から始まる標準のプライベート VPC ネットワーク アドレス範囲を CIDR 表記で使用します。
      • IP 範囲には 10 個を超える IP アドレスが必要です。
      • IP 範囲は、プロジェクトの VPC ネットワークと Amazon Redshift VPC ネットワークのどのサブネットとも重複してはいけません。
      • 同じ Amazon Redshift インスタンスに複数の転送が構成されている場合は、それぞれに同じ VPC_network_name:CIDR 値を使用して、複数の転送で同じ移行インフラストラクチャを再利用できるように保証してください。
  8. 省略可: [通知オプション] セクションで、次のようにします。

    1. [切り替えボタン] をクリックしてメール通知を有効にします。このオプションを有効にすると、転送の実行が失敗した場合、転送管理者にメール通知が送信されます。
    2. [Pub/Sub トピックを選択してください] で、トピック名を選択するか、[トピックを作成する] をクリックします。このオプションで、Pub/Sub の転送実行通知を構成します。
  9. [保存] をクリックします。

  10. この転送のリソース名を含むすべての転送設定の詳細が Google Cloud コンソールに表示されます。

割り当てと上限

VPC ネットワークを使用した Amazon Redshift プライベート インスタンスを移行する場合は、単一のテナント インフラストラクチャで移行エージェントが実行されます。コンピューティング リソースの制限のため、同時転送の実行が許可されるのは最大 5 つまでです。

BigQuery の読み込み割り当て量は、読み込みジョブごと各テーブルあたり 15 TB です。Amazon Redshift は内部でテーブルデータを圧縮するため、エクスポートされたテーブルサイズは、Amazon Redshift で提示されたテーブルサイズより大きくなります。15 TB を超えるテーブルを移行する場合は、まず Cloud カスタマーケアまでお問い合わせください。

このサービスを使用すると、Google の外部で料金が発生する場合があります。詳細については、Amazon RedshiftAmazon S3 の料金ページをご覧ください。

Amazon S3 の整合性モデルにより、一部のファイルが BigQuery への転送に含まれない可能性があります。

次のステップ