リポジトリの作成

このドキュメントでは、BigQuery でリポジトリを操作する方法について説明します。これには、次のタスクが含まれます。

  • リポジトリを作成する
  • リポジトリを削除する
  • リポジトリを共有する
  • 必要に応じて BigQuery リポジトリをサードパーティ リポジトリに接続する

始める前に

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and Dataform APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and Dataform APIs.

    Enable the APIs

  8. 必要なロール

    リポジトリとワークスペースの操作に必要な権限を取得するには、リポジトリとワークスペースに対する次の IAM ロールを付与するよう管理者に依頼してください。

    • 共有リポジトリを作成して管理する: コードオーナーroles/dataform.codeOwner
    • 共有リポジトリでワークスペースを作成、削除する: コード編集者roles/dataform.codeEditor
    • 共有リポジトリのワークスペースでファイルの作成、変更、バージョン管理を行う: コード編集者roles/dataform.codeEditor
    • 共有リポジトリ内のワークスペースとそれらのファイルを表示する: コード閲覧者roles/dataform.codeViewer
    • プライベート リポジトリを作成して管理する(プライベート リポジトリ内のワークスペースとファイルに対するすべてのアクションを含む): コード作成者roles/dataform.codeCreator

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

    リポジトリに対するコード編集者のロールを持つプリンシパルは、リポジトリ内のすべてのワークスペースを編集できます。

    作成したプライベート リポジトリは、プロジェクト レベルで BigQuery 管理者ロールまたは BigQuery Studio 管理者ロールが付与されているプリンシパルには引き続き表示されます。これらのプリンシパルは、それらのプライベート リポジトリを他のユーザーと共有できます。

    リポジトリを作成する

    BigQuery リポジトリを作成するには、次の操作を行います。

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

      [BigQuery] に移動

    2. [エクスプローラ] ペインで、[リポジトリ] フォルダをクリックします。

    3. エディタで [リポジトリの追加] をクリックします。

    4. [リポジトリの作成] ペインの [リポジトリ ID] フィールドに一意の ID を入力します。

      ID には数字、英字、ハイフン、アンダースコアのみを使用できます。

    5. [リージョン] プルダウン リストで、リポジトリとそのコンテンツを保存する BigQuery リージョンを選択します。自分の場所に最も近い BigQuery リージョンを選択します。

      使用可能な BigQuery リージョンの一覧については、BigQuery Studio のロケーションをご覧ください。リポジトリ リージョンは、BigQuery データセットのロケーションと一致する必要はありません。

    6. [作成] をクリックします。

    サードパーティ リポジトリに接続する

    このセクションでは、BigQuery リポジトリをリモート リポジトリに接続する方法について説明します。リポジトリを接続すると、そのリポジトリに含まれるワークスペース内のファイルに対して Git アクションを実行できます。たとえば、リモート リポジトリから更新を pull したり、リモート リポジトリに変更を push したりできます。

    接続するリモート リポジトリごとに専用の BigQuery リポジトリを作成することをおすすめします。マッピングを明確にするために、その BigQuery リポジトリにリモート リポジトリに似た名前を付けます。

    リモート リポジトリには、HTTPS または SSH 経由で接続できます。BigQuery リポジトリのリモート リポジトリへの接続は、リモート リポジトリが公共のインターネットに開かれていない場合(例: ファイアウォールの内側にある場合)に失敗する可能性があります。次の表に、サポートされている Git プロバイダと、そのリポジトリで使用できる接続方法を示します。

    Git プロバイダ 接続方法
    Azure DevOps Services SSH
    Bitbucket SSH
    GitHub SSH または HTTPS
    GitLab SSH または HTTPS

    SSH 経由でリモート リポジトリに接続する

    SSH 経由でリモート リポジトリに接続するには、SSH 認証鍵と Secret Manager シークレットを生成する必要があります。SSH 認証鍵は、公開 SSH 認証鍵と秘密 SSH 認証鍵で構成されています。公開 SSH 認証鍵を Git プロバイダと共有し、秘密 SSH 認証鍵を使用して Secret Manager シークレットを作成する必要があります。次に、デフォルトの BigQuery サービス アカウントとシークレットを共有します。

    BigQuery は秘密 SSH 認証鍵のシークレットを使用して Git プロバイダにログインし、ユーザーに代わって変更を commit します。BigQuery では、ユーザーの Google Cloud メールアドレスを使用してこれらの commit が行われるため、誰が各 commit を行ったかを確認できます。

    SSH を介してリモート リポジトリを BigQuery リポジトリに接続する手順は次のとおりです。

    1. Git プロバイダで次の操作を行います。

      Azure DevOps Services

      1. Azure DevOps Services で秘密 SSH 認証鍵を作成します。
      2. Azure DevOps Services リポジトリに公開 SSH 認証鍵をアップロードします。

      Bitbucket

      1. Bitbucket で秘密 SSH 認証鍵を作成します。
      2. Bitbucket リポジトリに公開 SSH 認証鍵をアップロードします。

      GitHub

      1. GitHub で既存の SSH 認証鍵があるか確認します。
      2. 既存の SSH 認証鍵がない、または新しい鍵を使用する場合は、秘密 SSH 認証鍵を作成します。
      3. GitHub リポジトリに GitHub の公開 SSH 認証鍵をアップロードします。

      GitLab

      1. GitLab で秘密 SSH 認証鍵を作成します。
      2. GitLab リポジトリに GitLab の公開 SSH 認証鍵をアップロードします。
    2. Secret Manager でシークレットを作成し、秘密 SSH 認証鍵をシークレット値として貼り付けます。秘密 SSH 認証鍵は、~/.ssh/id_ed25519 に似たファイルに保存されているはずです。後で見つけられるように、シークレットに名前を付けます。

    3. デフォルトの Dataform サービス アカウントにシークレットへのアクセス権を付与します

      デフォルトの Dataform サービス アカウントの形式は次のとおりです。

      service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
      
    4. サービス アカウントに roles/secretmanager.secretAccessor ロールを付与します。

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

      [BigQuery] に移動

    6. [エクスプローラ] ペインで、[リポジトリ] フォルダを開きます。

    7. リモート リポジトリに接続する BigQuery リポジトリを選択します。

    8. エディタで [構成] タブを選択します。

    9. [Git と接続] をクリックします。

    10. [リモート リポジトリに接続] ペインで、[SSH] ラジオボタンを選択します。

    11. [リモートの Git リポジトリの URL] フィールドに、末尾が .git のリモート Git リポジトリの URL を入力します。

      リモート Git リポジトリの URL は、次のいずれかの形式にする必要があります。

      • 絶対 URL: ssh://git@{host_name}[:{port}]/{repository_path}port は省略可。
      • SCP のような URL: git@{host_name}:{repository_path}
    12. [デフォルトのリモート ブランチ名] フィールドに、リモート Git リポジトリのメインブランチの名前を入力します。

    13. [シークレット] プルダウンで、SSH 秘密鍵を含む作成したシークレットを選択します。

    14. [ホストの SSH 公開鍵の Key-Value] フィールドに、Git プロバイダのホストの公開鍵を入力します。

      Azure DevOps Services

      SSH 公開鍵の値は known_hosts ファイルの形式にする必要があります。この値には、アルゴリズムと、base64 形式でエンコードされた公開鍵が、次の形式で含まれている必要があります(ホスト名や IP は不要です)。

      ALGORITHM BASE64_KEY_VALUE
      

      Azure DevOps Services のホストの公開鍵を取得するには、ターミナルで ssh-keyscan -t rsa ssh.dev.azure.com コマンドを実行します。

      Bitbucket

      SSH 公開鍵の値は known_hosts ファイルの形式にする必要があります。この値には、アルゴリズムと、base64 形式でエンコードされた公開鍵が、次の形式で含まれている必要があります(ホスト名や IP は不要です)。

      ALGORITHM BASE64_KEY_VALUE
      

      Bitbucket のホストの公開鍵を取得するには、SSH を構成するをご覧ください。

      GitHub

      SSH 公開鍵の値は known_hosts ファイルの形式にする必要があります。この値には、アルゴリズムと、base64 形式でエンコードされた公開鍵が、次の形式で含まれている必要があります(ホスト名や IP は不要です)。

      ALGORITHM BASE64_KEY_VALUE
      

      GitHub のホストの公開鍵を取得するには、GitHub の SSH 認証鍵のフィンガープリントをご覧ください。

      GitLab

      SSH 公開鍵の値は known_hosts ファイルの形式にする必要があります。この値には、アルゴリズムと、base64 形式でエンコードされた公開鍵が、次の形式で含まれている必要があります(ホスト名や IP は不要です)。

      ALGORITHM BASE64_KEY_VALUE
      

      GitLab のホストの公開鍵を取得するには、SSH known_hosts のエントリをご覧ください。

    15. [接続] をクリックします。

    HTTPS 経由でリモート リポジトリに接続する

    HTTPS 経由でリモート リポジトリに接続するには、個人アクセス トークンを含む Secret Manager シークレットを作成し、デフォルトの BigQuery サービス アカウントとシークレットを共有する必要があります。

    BigQuery は、そのアクセス トークンを使用して Git プロバイダにログインし、ユーザーに代わって変更を commit します。BigQuery では、ユーザーの Google Cloud メールアドレスを使用してこれらの commit が行われるため、誰が各 commit を行ったかを確認できます。

    HTTPS を介してリモート リポジトリを BigQuery リポジトリに接続する手順は次のとおりです。

    1. Git プロバイダで次の操作を行います。

      GitHub

      1. GitHub で、きめ細かい個人アクセス トークンまたは従来の個人アクセス トークンを作成します。

        • きめ細かい GitHub 個人アクセス トークンの場合は、次の操作を行います。
        1. 選択したリポジトリのみへのリポジトリ アクセスを選択し、接続するリポジトリを選択します。

        2. リポジトリの内容に対する読み取り / 書き込みアクセス権を付与します。

        3. ニーズに応じてトークンの有効期限を設定します。

        • 従来の GitHub 個人アクセス トークンの場合は、次の操作を行います。
        1. BigQuery に repo 権限を付与します。

        2. ニーズに応じてトークンの有効期限を設定します。

      2. 組織で SAML シングル サインオン(SSO)を使用している場合は、トークンを承認します。

      GitLab

      1. GitLab で GitLab 個人アクセス トークンを作成します。

      2. トークンに dataform という名前を付けます。これは必須です。

      3. BigQuery に apiread_repositorywrite_repository の権限を付与します。

      4. ニーズに応じてトークンの有効期限を設定します。

    2. Secret Manager で、リモート リポジトリの個人アクセス トークンを含むシークレットを作成します。

    3. デフォルトの Dataform サービス アカウントにシークレットへのアクセス権を付与します

      デフォルトの Dataform サービス アカウントの形式は次のとおりです。

      service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
      
    4. サービス アカウントに roles/secretmanager.secretAccessor ロールを付与します。

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

      [BigQuery] に移動

    6. [エクスプローラ] ペインで、[リポジトリ] フォルダを開きます。

    7. リモート リポジトリに接続する BigQuery リポジトリを選択します。

    8. エディタで [構成] タブを選択します。

    9. [Git と接続] をクリックします。

    10. [リモート リポジトリに接続] ペインで、[HTTPS] ラジオボタンを選択します。

    11. [リモートの Git リポジトリの URL] フィールドに、末尾が .git のリモート Git リポジトリの URL を入力します。

      リモート Git リポジトリの URL にユーザー名やパスワードを含めることはできません。

    12. [デフォルトのリモート ブランチ名] フィールドに、リモート Git リポジトリのメインブランチの名前を入力します。

    13. [シークレット] プルダウンで、個人アクセス トークンを含む作成したシークレットを選択します。

    14. [接続] をクリックします。

    リモート リポジトリ接続を編集する

    BigQuery リポジトリとリモート Git リポジトリ間の接続を編集する手順は次のとおりです。

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

      [BigQuery] に移動

    2. [エクスプローラ] ペインで、[リポジトリ] フォルダを開きます。

    3. 接続を編集する BigQuery リポジトリを選択します。

    4. エディタで [構成] タブを選択します。

    5. リポジトリ ページで、[Git 接続を編集] をクリックします。

    6. 接続設定を編集します。

    7. [更新] をクリックします。

    リポジトリを共有する

    リポジトリを共有する手順は次のとおりです。

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

      [BigQuery] に移動

    2. [エクスプローラ] ペインで、[リポジトリ] フォルダをクリックします。

    3. [Git リポジトリ] ペインで、共有するリポジトリを選択します。

    4. [アクション] オプションをクリックし、[共有] をクリックします。

    5. [共有権限] ペインで、[ユーザー / グループを追加] をクリックします。

    6. [ユーザー / グループの追加] ペインの [新しいプリンシパル] フィールドに、1 つ以上のユーザー名またはグループ名をカンマ区切りで入力します。

    7. [ロール] フィールドで、新しいプリンシパルに割り当てるロールを選択します。

    8. [保存] をクリックします。

    リポジトリを削除する

    リポジトリとそのすべてのコンテンツを削除するには、次の手順を行います。

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

      [BigQuery] に移動

    2. [エクスプローラ] ペインで、[リポジトリ] フォルダをクリックします。

    3. [Git リポジトリ] ペインで、削除するリポジトリを選択します。

    4. [アクション] オプションをクリックし、[削除] をクリックします。

    5. [削除] をクリックします。

    次のステップ