Gestire le connessioni

Questo documento descrive come visualizzare, elencare, condividere, modificare, eliminare e risolvere i problemi di una connessione BigQuery.

In qualità di amministratore BigQuery, puoi creare e gestire le connessioni utilizzate per collegarti a servizi e origini dati esterne. Gli analisti BigQuery utilizzano queste connessioni per inviare query contro origini dati esterne senza spostare o copiare i dati in BigQuery. Puoi creare i seguenti tipi di connessioni:

Prima di iniziare

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire le connessioni, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire le attività descritte in questo documento. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

  • Visualizza i dettagli della connessione: bigquery.connections.get
  • Elenca tutte le connessioni: bigquery.connections.list
  • Modificare ed eliminare una connessione: bigquery.connections.update
  • Condividere una connessione: bigquery.connections.setIamPolicy

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Elenca tutte le connessioni

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

    Le connessioni sono elencate nel progetto, in un gruppo denominato Connessioni esterne.

  2. Nel riquadro Explorer, fai clic sul nome del progetto > Collegamenti esterni per visualizzare un elenco di tutte le connessioni.

bq

Inserisci il comando bq ls e specifica il flag --connection. Se vuoi, specifica i flag --project_id e --location per identificare il progetto e la posizione delle connessioni da elencare.

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

Sostituisci quanto segue:

API

Utilizza il metodo projects.locations.connections.list nella sezione di riferimento dell'API REST.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.

Per autenticarti in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

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()));
    }
  }
}

Visualizzazione dei dettagli della connessione

Dopo aver creato una connessione, puoi ottenere informazioni sulla configurazione della connessione. La configurazione include i valori forniti al momento della creazione del trasferimento.

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

    Le connessioni sono elencate nel progetto, in un gruppo denominato Connessioni esterne.

  2. Nel riquadro Explorer, fai clic sul nome del progetto > Connessioni esterne > Connessione.

bq

Inserisci il comando bq show e specifica il flag --connection. Se vuoi, qualifica l'ID connessione con l'ID progetto e la regione della connessione.

bq show --connection PROJECT_ID.REGION.CONNECTION_ID

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto Google Cloud
  • REGION: la regione di connessione
  • CONNECTION_I: l'ID connessione

API

Utilizza il metodo projects.locations.connections.get nella sezione di riferimento dell'API REST.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.

Per autenticarti in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

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());
    }
  }
}

Condividere una connessione con gli utenti

Puoi concedere i seguenti ruoli per consentire agli utenti di eseguire query sui dati e gestire le connessioni:

  • roles/bigquery.connectionUser: consente agli utenti di utilizzare le connessioni per collegarsi a origini dati esterne ed eseguire query su di esse.

  • roles/bigquery.connectionAdmin: consente agli utenti di gestire le connessioni.

Per ulteriori informazioni sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

    Le connessioni sono elencate nel progetto, in un gruppo denominato Connessioni esterne.

  2. Nel riquadro Explorer, fai clic sul nome del progetto > Connessioni esterne > Connessione.

  3. Nel riquadro Dettagli, fai clic su Condividi per condividere una connessione. Quindi:

    1. Nella finestra di dialogo Autorizzazioni di connessione, condividi la connessione con altre entità aggiungendole o modificandole.

    2. Fai clic su Salva.

bq

Non puoi condividere una connessione con lo strumento a riga di comando bq. Per condividere una connessione, utilizza la console Google Cloud o il metodo dell'API BigQuery Connections.

API

Utilizza il metodo projects.locations.connections.setIAM nella sezione di riferimento dell'API REST BigQuery Connections e fornisci un'istanza della risorsa policy.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.

Per autenticarti in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

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");
    }
  }
}

Modificare una connessione

Una connessione utilizza le credenziali dell'utente che l'ha creata. Se devi cambiare l'utente associato a una connessione, puoi aggiornare le sue credenziali. Questa operazione è utile se l'utente che ha creato la connessione non fa più parte della tua organizzazione.

Non puoi modificare i seguenti elementi di una connessione:

  • Tipo di connessione
  • ID connessione
  • Località

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

    Le connessioni sono elencate nel progetto, in un gruppo denominato Connessioni esterne.

  2. Nel riquadro Explorer, fai clic sul nome del progetto > Connessioni esterne > Connessione.

  3. Nel riquadro Dettagli, per modificare i dettagli, fai clic su Modifica dettagli. Quindi:

    1. Nella finestra di dialogo Modifica connessione, modifica i dettagli della connessione, incluse le credenziali utente.

    2. Fai clic su Aggiorna connessione.

bq

Inserisci il comando bq update e specifica il flag di connessione: --connection. connection_id completo è obbligatorio.

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

Sostituisci quanto segue:

  • INSTANCE: l'istanza Cloud SQL
  • DATABASE: il nome del database
  • USERNAME: il nome utente del database Cloud SQL
  • PASSWORD: la password del database Cloud SQL
  • PROJECT: l'ID progetto Google Cloud
  • REGION: la regione di connessione
  • CONNECTION_ID: l'ID connessione

Ad esempio, il seguente comando aggiorna la connessione in un progetto con l'ID federation-test e l'ID connessione test-mysql.

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

Consulta il metodo projects.locations.connections.patch nella sezione di riferimento dell'API REST e fornisci un'istanza di connection.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.

Per autenticarti in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

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());
    }
  }
}

Eliminare una connessione

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

    Le connessioni sono elencate nel progetto, in un gruppo denominato Connessioni esterne.

  2. Nel riquadro Explorer, fai clic sul nome del progetto > Connessioni esterne > Connessione.

  3. Nel riquadro Dettagli, fai clic su Elimina per eliminare il collegamento.

  4. Nella finestra di dialogo Eliminare il collegamento?, inserisci delete per confermare l'eliminazione.

  5. Fai clic su Elimina.

bq

Inserisci il comando bq rm e specifica il flag di connessione: --connection. connection_id completo è obbligatorio.

bq rm --connection PROJECT_ID.REGION.CONNECTION_ID

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto Google Cloud
  • REGION: la regione di connessione
  • CONNECTION_ID: l'ID connessione

API

Consulta il metodo projects.locations.connections.delete nella sezione del riferimento all'API REST.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.

Per autenticarti in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

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");
    }
  }
}

Passaggi successivi