Connessione tramite i connettori Cloud SQL

I connettori Cloud SQL sono librerie che forniscono crittografia e autorizzazione basata su IAM quando ci si connette a un'istanza Cloud SQL. Non possono fornire un percorso di rete a un'istanza Cloud SQL se non è già presente.

Altri modi per connetterti a un'istanza Cloud SQL includono l'utilizzo di un client di database o il proxy Cloud SQL Auth. Consulta la pagina Panoramica della connessione per ulteriori informazioni sulla connessione a un'istanza Cloud SQL.

In questa pagina vengono trattati i seguenti connettori di Cloud SQL:

  • Il connettore Java di Cloud SQL
  • Il connettore Cloud SQL Python

Prima di iniziare

Configurazione

Java

Il connettore Java di Cloud SQL è una libreria che fornisce autorizzazioni e crittografia basate su IAM durante la connessione a un'istanza Cloud SQL. Non può fornire un percorso di rete a un'istanza Cloud SQL se non è già presente.

Installazione

Per istruzioni sulla creazione e sull'utilizzo dei driver per JDBC e R2DBC con il connettore Java di Cloud SQL, consulta i seguenti link:

JDBC: Collegamento a Postgres tramite JDBC.

R2DBC: connessione a Postgres tramite R2DBC.

Per esempi di questa libreria utilizzata nel contesto di un'applicazione, guarda queste applicazioni di esempio.

Autenticazione

Questa libreria utilizza Credenziali predefinite dell'applicazione per autenticare la connessione al server Cloud SQL.

Per attivare le credenziali localmente, utilizza il seguente comando gcloud:

    gcloud auth application-default login
    

Connettiti a Intellij

Per connettere IntelliJ alla tua istanza Cloud SQL, devi aggiungere la libreria come un jar con dipendenze nella sezione File aggiuntivi sulla pagina delle impostazioni del driver. Ad esempio, i grassi preconfigurati si trovano nella pagina Release del connettore Java di Cloud SQL a questo scopo.

Python

Il connettore Python di Cloud SQL è una libreria che può essere utilizzata insieme a un driver di database per consentire agli utenti con autorizzazioni sufficienti di connettersi a un database Cloud SQL senza dover inserire manualmente gli IP nella lista consentita o gestire i certificati SSL.

Il driver attualmente supportato per PostgreSQL è pg8000 .

Installazione

Per installare la release più recente, segui queste istruzioni.

Autenticazione

Questa libreria utilizza Credenziali predefinite dell'applicazione per autenticare la connessione al server Cloud SQL.

Per attivare le credenziali localmente, utilizza il seguente comando gcloud:

    gcloud auth application-default login
    

Utilizzo

Java

Per vedere questo snippet nel contesto di un'applicazione web, visualizza README su GitHub.

// Note: For Java users, the Cloud SQL JDBC Socket Factory can provide authenticated connections
// which is preferred to using the Cloud SQL Auth Proxy with Unix sockets.
// See https://github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory for details.

// The configuration object specifies behaviors for the connection pool.
HikariConfig config = new HikariConfig();

// The following URL is equivalent to setting the config options below:
// jdbc:postgresql:///<DB_NAME>?cloudSqlInstance=<INSTANCE_CONNECTION_NAME>&
// socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=<DB_USER>&password=<DB_PASS>
// See the link below for more info on building a JDBC URL for the Cloud SQL JDBC Socket Factory
// https://github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory#creating-the-jdbc-url

// Configure which instance and what database user to connect with.
config.setJdbcUrl(String.format("jdbc:postgresql:///%s", DB_NAME));
config.setUsername(DB_USER); // e.g. "root", "postgres"
config.setPassword(DB_PASS); // e.g. "my-password"

config.addDataSourceProperty("socketFactory", "com.google.cloud.sql.postgres.SocketFactory");
config.addDataSourceProperty("cloudSqlInstance", INSTANCE_CONNECTION_NAME);

// The ipTypes argument can be used to specify a comma delimited list of preferred IP types
// for connecting to a Cloud SQL instance. The argument ipTypes=PRIVATE will force the
// SocketFactory to connect with an instance's associated private IP.
config.addDataSourceProperty("ipTypes", "PUBLIC,PRIVATE");

// ... Specify additional connection properties here.
// ...

// Initialize the connection pool using the configuration object.
DataSource pool = new HikariDataSource(config);

Python

Per istruzioni dettagliate sull'uso della libreria, consulta la pagina Come utilizzare il connettore. Visualizza un esempio di codice di test della connessione su GitHub.

# The Cloud SQL Python Connector can be used along with SQLAlchemy using the
# 'creator' argument to 'create_engine'
def init_connection_engine() -> sqlalchemy.engine.Engine:
    def getconn() -> pg8000.dbapi.Connection:
        conn: pg8000.dbapi.Connection = connector.connect(
            os.environ["POSTGRES_CONNECTION_NAME"],
            "pg8000",
            user=os.environ["POSTGRES_USER"],
            password=os.environ["POSTGRES_PASS"],
            db=os.environ["POSTGRES_DB"],
        )
        return conn

    engine = sqlalchemy.create_engine(
        "postgresql+pg8000://",
        creator=getconn,
    )
    engine.dialect.description_encoding = None
    return engine

Risolvi problemi

Versioni driver

Assicurati di utilizzare la versione più recente dei connettori Cloud SQL e del driver del database per evitare incompatibilità. Alcune versioni precedenti dei driver non sono supportate

Percorsi di connessione

I connettori Cloud SQL forniscono l'autorizzazione per le connessioni, ma non forniscono nuovi percorsi per la connettività. Ad esempio, per connetterti a un'istanza Cloud SQL utilizzando un indirizzo IP privato, la tua applicazione deve avere già accesso VPC. Per connetterti a un'istanza Cloud SQL utilizzando un indirizzo IP pubblico, la tua applicazione deve trovarsi in una rete autorizzata.

Debug dei problemi di connessione

Per ulteriore assistenza in merito ai problemi di connessione, consulta le pagine Risoluzione dei problemi e Debug dei problemi di connessione.

Passaggi successivi