Verbindungen verwalten

In diesem Dokument wird beschrieben, wie Sie eine BigQuery-Verbindung aufrufen, auflisten, freigeben, bearbeiten, löschen und Fehler beheben.

Als BigQuery-Administrator können Sie Verbindungen erstellen und verwalten, die zum Herstellen einer Verbindung zu Diensten und externen Datenquellen verwendet werden. BigQuery-Analysten verwenden diese Verbindungen, um Abfragen an externe Datenquellen zu senden, ohne Daten in BigQuery zu verschieben oder zu kopieren. Sie können die folgenden Arten von Verbindungen erstellen:

Hinweise

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Verwaltung von Verbindungen benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Ausführen der Aufgaben in diesem Dokument erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

  • Verbindungsdetails ansehen: bigquery.connections.get
  • Alle Verbindungen auflisten: bigquery.connections.list
  • Verbindung bearbeiten und löschen: bigquery.connections.update
  • Verbindung teilen: bigquery.connections.setIamPolicy

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Alle Verbindungen auflisten

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

    Verbindungen werden in Ihrem Projekt in einer Gruppe namens Externe Verbindungen aufgeführt.

  2. Klicken Sie im Bereich Explorer auf Ihren Projektnamen. > Externe Verbindungen, um eine Liste aller Verbindungen aufzurufen.

bq

Geben Sie den Befehl bq ls mit dem Flag --connection ein. Optional können Sie die Flags --project_id und --location angeben, um das Projekt und den Standort der aufzulistenden Verbindungen zu identifizieren.

bq ls --connection --project_id=PROJECT_ID --location=REGION

Dabei gilt:

API

Verwenden Sie die Methode projects.locations.connections.list im Referenzabschnitt der REST API.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import com.google.cloud.bigquery.connection.v1.ListConnectionsRequest;
import com.google.cloud.bigquery.connection.v1.LocationName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import java.io.IOException;

// Sample to get list of connections
public class ListConnections {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    listConnections(projectId, location);
  }

  static void listConnections(String projectId, String location) throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      LocationName parent = LocationName.of(projectId, location);
      int pageSize = 10;
      ListConnectionsRequest request =
          ListConnectionsRequest.newBuilder()
              .setParent(parent.toString())
              .setPageSize(pageSize)
              .build();
      client
          .listConnections(request)
          .iterateAll()
          .forEach(con -> System.out.println("Connection Id :" + con.getName()));
    }
  }
}

Verbindungsdetails ansehen

Nachdem Sie eine Verbindung erstellt haben, können Sie Informationen zur Konfiguration der Verbindung abrufen. Die Konfiguration enthält die Werte, die Sie bei der Erstellung der Übertragung angegeben haben.

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

    Verbindungen werden in Ihrem Projekt in einer Gruppe namens Externe Verbindungen aufgeführt.

  2. Klicken Sie im Bereich Explorer auf Ihren Projektnamen > Externe Verbindungen > Verbindung.

bq

Geben Sie den Befehl bq show mit dem Flag --connection ein. Geben Sie optional die Verbindungs-ID und die Projekt-ID und die Region der Verbindung an.

bq show --connection PROJECT_ID.REGION.CONNECTION_ID

Dabei gilt:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID
  • REGION: die Verbindungsregion
  • CONNECTION_I: die Verbindungs-ID

API

Verwenden Sie die Methode projects.locations.connections.get im Referenzabschnitt der REST API.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import com.google.cloud.bigquery.connection.v1.Connection;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigquery.connection.v1.GetConnectionRequest;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import java.io.IOException;

// Sample to get connection
public class GetConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    getConnection(projectId, location, connectionId);
  }

  static void getConnection(String projectId, String location, String connectionId)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ConnectionName name = ConnectionName.of(projectId, location, connectionId);
      GetConnectionRequest request =
          GetConnectionRequest.newBuilder().setName(name.toString()).build();
      Connection response = client.getConnection(request);
      System.out.println("Connection info retrieved successfully :" + response.getName());
    }
  }
}

Verbindung für Nutzer freigeben

Sie können die folgenden Rollen zuweisen, damit Nutzer Daten abfragen und Verbindungen verwalten können:

  • roles/bigquery.connectionUser: Nutzer können Verbindungen nutzen, um sich mit externen Datenquellen zu verbinden und diese abzufragen.

  • roles/bigquery.connectionAdmin: Nutzer können Verbindungen verwalten.

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

    Verbindungen werden in Ihrem Projekt in einer Gruppe namens Externe Verbindungen aufgeführt.

  2. Klicken Sie im Bereich Explorer auf Ihren Projektnamen > Externe Verbindungen > Verbindung.

  3. Klicken Sie im Bereich Details auf Freigeben, um eine Verbindung freizugeben. Führen Sie anschließend folgende Schritte aus:

    1. Geben Sie im Dialogfeld Verbindungsberechtigungen die Verbindung für andere Hauptkonten frei, indem Sie Hauptkonten hinzufügen oder bearbeiten.

    2. Klicken Sie auf Speichern.

bq

Sie können keine Verbindung mit dem bq-Befehlszeilentool freigeben. Verwenden Sie zum Freigeben einer Verbindung die Google Cloud Console oder die Methode der BigQuery Connections API.

API

Verwenden Sie die Methode projects.locations.connections.setIAM in dem Referenzabschnitt zur BigQuery Connections REST API und geben Sie eine Instanz der Ressource policy an.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import com.google.api.resourcenames.ResourceName;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import java.io.IOException;

// Sample to share connections
public class ShareConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    shareConnection(projectId, location, connectionId);
  }

  static void shareConnection(String projectId, String location, String connectionId)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ResourceName resource = ConnectionName.of(projectId, location, connectionId);
      Binding binding =
          Binding.newBuilder()
              .addMembers("group:example-analyst-group@google.com")
              .setRole("roles/bigquery.connectionUser")
              .build();
      Policy policy = Policy.newBuilder().addBindings(binding).build();
      SetIamPolicyRequest request =
          SetIamPolicyRequest.newBuilder()
              .setResource(resource.toString())
              .setPolicy(policy)
              .build();
      client.setIamPolicy(request);
      System.out.println("Connection shared successfully");
    }
  }
}

Verbindung bearbeiten

Eine Verbindung verwendet die Anmeldedaten des Nutzers, der sie erstellt hat. Wenn Sie den einer Verbindung zugeordneten Nutzer ändern müssen, können Sie die Anmeldedaten des Nutzers aktualisieren. Dies ist hilfreich, wenn der Nutzer, der die Verbindung erstellt hat, der Organisation nicht mehr angehört.

Die folgenden Elemente einer Verbindung können Sie nicht bearbeiten:

  • Verbindungstyp
  • Verbindungs-ID
  • Standort

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

    Verbindungen werden in Ihrem Projekt in einer Gruppe namens Externe Verbindungen aufgeführt.

  2. Klicken Sie im Bereich Explorer auf Ihren Projektnamen > Externe Verbindungen > Verbindung.

  3. Klicken Sie im Bereich Details auf Details bearbeiten, um die Details zu bearbeiten. Führen Sie anschließend folgende Schritte aus:

    1. Bearbeiten Sie im Dialogfeld Verbindung bearbeiten die Verbindungsdetails, einschließlich der Nutzeranmeldedaten.

    2. Klicken Sie auf Verbindung aktualisieren.

bq

Geben Sie den Befehl bq update ein und geben Sie das Verbindungs-Flag --connection an. Die vollständig qualifizierte connection_id ist erforderlich.

  bq update --connection --connection_type='CLOUD_SQL'
      --properties='{"instanceId" : "INSTANCE",
      "database" : "DATABASE", "type" : "MYSQL" }'
      --connection_credential='{"username":"USERNAME", "password":"PASSWORD"}'
      PROJECT.REGION.CONNECTION_ID
 

Dabei gilt:

  • INSTANCE: die Cloud SQL-Instanz
  • DATABASE: Datenbankname
  • USERNAME: der Nutzername Ihrer Cloud SQL-Datenbank
  • PASSWORD: Passwort für Ihre Cloud SQL-Datenbank
  • PROJECT: die Google Cloud-Projekt-ID
  • REGION: die Verbindungsregion
  • CONNECTION_ID: die Verbindungs-ID

Mit dem folgenden Befehl wird beispielsweise die Verbindung in einem Projekt mit der ID federation-test und der Verbindungs-ID test-mysql aktualisiert.

bq update --connection --connection_type='CLOUD_SQL'
    --properties='{"instanceId" : "federation-test:us-central1:new-mysql",
    "database" : "imdb2", "type" : "MYSQL" }'
    --connection_credential='{"username":"my_username",
    "password":"my_password"}' federation-test.us.test-mysql

API

Sehen Sie sich die Methode projects.locations.connections.patch im Referenzabschnitt der REST API an und geben Sie eine Instanz der Ressource connection an.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import com.google.cloud.bigquery.connection.v1.Connection;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigquery.connection.v1.UpdateConnectionRequest;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to update connection
public class UpdateConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    String description = "MY_DESCRIPTION";
    Connection connection = Connection.newBuilder().setDescription(description).build();
    updateConnection(projectId, location, connectionId, connection);
  }

  static void updateConnection(
      String projectId, String location, String connectionId, Connection connection)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ConnectionName name = ConnectionName.of(projectId, location, connectionId);
      FieldMask updateMask = FieldMaskUtil.fromString("description");
      UpdateConnectionRequest request =
          UpdateConnectionRequest.newBuilder()
              .setName(name.toString())
              .setConnection(connection)
              .setUpdateMask(updateMask)
              .build();
      Connection response = client.updateConnection(request);
      System.out.println("Connection updated successfully :" + response.getDescription());
    }
  }
}

Verbindung löschen

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

    Verbindungen werden in Ihrem Projekt in einer Gruppe namens Externe Verbindungen aufgeführt.

  2. Klicken Sie im Bereich Explorer auf Ihren Projektnamen > Externe Verbindungen > Verbindung.

  3. Klicken Sie im Bereich Details auf Löschen, um die Verbindung zu löschen.

  4. Geben Sie im Dialogfeld Verbindung löschen? delete ein, um den Löschvorgang zu bestätigen.

  5. Klicken Sie auf Löschen.

bq

Geben Sie den Befehl bq rm ein und geben Sie das Verbindungs-Flag --connection an. Die vollständig qualifizierte connection_id ist erforderlich.

bq rm --connection PROJECT_ID.REGION.CONNECTION_ID

Dabei gilt:

  • PROJECT_ID: Ihre Google Cloud-Projekt-ID
  • REGION: die Verbindungsregion
  • CONNECTION_ID: die Verbindungs-ID

API

Weitere Informationen finden Sie unter projects.locations.connections.delete-Methode im Referenzabschnitt der REST API.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigquery.connection.v1.DeleteConnectionRequest;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import java.io.IOException;

// Sample to delete a connection
public class DeleteConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionName = "MY_CONNECTION_NAME";
    deleteConnection(projectId, location, connectionName);
  }

  static void deleteConnection(String projectId, String location, String connectionName)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ConnectionName name = ConnectionName.of(projectId, location, connectionName);
      DeleteConnectionRequest request =
          DeleteConnectionRequest.newBuilder().setName(name.toString()).build();
      client.deleteConnection(request);
      System.out.println("Connection deleted successfully");
    }
  }
}

Nächste Schritte