Se connecter à l'aide de connecteurs Cloud SQL

Les connecteurs Cloud SQL sont des bibliothèques qui fournissent le chiffrement et l'autorisation basée sur IAM lors de la connexion à une instance Cloud SQL. Ils ne peuvent pas fournir de chemin d'accès réseau vers une instance Cloud SQL s'il n'en existe pas déjà un.

Vous pouvez également vous connecter à une instance Cloud SQL à l'aide d'un client de base de données ou du proxy d'authentification Cloud SQL. Consultez la page Présentation du processus de connexion pour en savoir plus sur la connexion à une instance Cloud SQL.

Cette page traite des connecteurs Cloud SQL suivants :

  • Connecteur Java Cloud SQL
  • Connecteur Python Cloud SQL

Avant de commencer

Avant de pouvoir vous connecter à une instance Cloud SQL, vous devez avoir :

Prérequis

Java

Le connecteur Java Cloud SQL est une bibliothèque qui fournit une autorisation et un chiffrement basés sur IAM lors de la connexion à une instance Cloud SQL. Il ne peut pas fournir de chemin d'accès réseau à une instance Cloud SQL s'il n'en existe pas déjà un.

Installation

Pour obtenir des instructions sur la création et l'utilisation des pilotes pour JDBC et R2DBC avec le connecteur Java Cloud SQL, consultez les liens suivants :

JDBC : Se connecter à Postgres à l'aide de JDBC.

R2DBC : Se connecter à Postgres à l'aide de R2DBC.

Pour obtenir des exemples d'utilisation de cette bibliothèque dans le contexte d'une application, consultez ces exemples d'applications.

Authentification

Cette bibliothèque utilise les identifiants par défaut de l'application pour authentifier la connexion au serveur Cloud SQL.

Pour activer les identifiants localement, exécutez la commande gcloud suivante :

    gcloud auth application-default login
    

Connexion avec IntelliJ

Pour connecter IntelliJ à votre instance Cloud SQL, vous devez ajouter la bibliothèque en tant que fichier JAR avec des dépendances dans la section Fichiers supplémentaires de la page des paramètres des pilotes. Par exemple, vous pouvez trouver des fichiers Fat JAR prédéfinis sur la page Versions du connecteur Java pour Cloud SQL à cet effet.

Python

Le connecteur Python Cloud SQL est une bibliothèque qui peut être utilisée avec un pilote de base de données pour permettre aux utilisateurs disposant des autorisations suffisantes de se connecter à une base de données Cloud SQL sans avoir à ajouter manuellement les adresses IP à la liste d'autorisation ni à gérer les certificats SSL.

Le pilote actuellement compatible avec PostgreSQL est pg8000.

Installation

Pour installer la dernière version, suivez ces instructions.

Authentification

Cette bibliothèque utilise les identifiants par défaut de l'application pour authentifier la connexion au serveur Cloud SQL.

Pour activer les identifiants localement, exécutez la commande gcloud suivante :

    gcloud auth application-default login
    

Utilisation

Java

Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.

// Note: For Java users, the Cloud SQL JDBC Socket Factory can provide authenticated connections
// which is preferred to using the Cloud SQL 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

Pour obtenir des instructions détaillées sur l'utilisation de la bibliothèque, consultez la page Utiliser le connecteur. Affichez l'exemple de code de test de connectivité sur 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

Dépannage

Configuration du pare-feu

Le proxy d'authentification Cloud SQL établit des connexions aux instances Cloud SQL via le port 3307. Les applications protégées par un pare-feu devront peut-être être configurées pour autoriser les connexions sortantes sur le port TCP 3307. Le blocage d'une connexion par un pare-feu entraîne généralement une erreur indiquant l'échec de la connexion. Par exemple, com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure.

Versions des pilotes

Assurez-vous que vous utilisez la dernière version des connecteurs Cloud SQL et de vos pilotes de base de données pour éviter les incompatibilités. Certaines versions anciennes de pilotes ne sont pas compatibles

Chemins d'accès de connexion

Les connecteurs Cloud SQL fournissent l'autorisation pour les connexions, mais ils ne fournissent pas de nouveaux chemins d'accès à la connectivité. Par exemple, pour se connecter à une instance Cloud SQL à l'aide d'une adresse IP privée, votre application doit déjà disposer d'un accès VPC. Pour pouvoir se connecter à une instance Cloud SQL à l'aide d'une adresse IP publique, votre application doit se trouver dans un réseau autorisé.

Déboguer les problèmes de connexion

Pour obtenir une aide supplémentaire concernant les problèmes de connexion, consultez les pages Dépannage et Déboguer les problèmes de connexion.

Étape suivante