Esta página contiene información y ejemplos para conectarse a una instancia de Cloud SQL desde un servicio que se ejecuta en el entorno estándar de App Engine.
Cloud SQL es un servicio de base de datos completamente administrado que le ayuda a configurar, mantener, administrar y gestionar sus bases de datos relacionales en la nube.
App Engine es una plataforma sin servidor y totalmente administrada para desarrollar y alojar aplicaciones web a gran escala. Puedes elegir entre varios lenguajes, bibliotecas y frameworks populares para desarrollar tus aplicaciones y dejar que App Engine se encargue del aprovisionamiento de servidores y del escalado de las instancias de tus aplicaciones según la demanda.
Configurar una instancia de Cloud SQL
- Habilite la API de administración de Cloud SQL en el Google Cloud proyecto desde el que te estás conectando, si aún no lo has hecho:
- Cree una instancia de Cloud SQL para PostgreSQL . Le recomendamos que elija una ubicación de instancia de Cloud SQL en la misma región que su servicio Cloud Run para mejorar la latencia, evitar costos de red y reducir el riesgo de fallos entre regiones.
De forma predeterminada, Cloud SQL asigna una dirección IP pública a cada nueva instancia. También puede asignar una dirección IP privada. Para obtener más información sobre las opciones de conectividad para ambas instancias, consulte la página "Resumen de la conexión" .
Configurar el entorno estándar de App Engine
Los pasos para configurar el entorno estándar de App Engine dependen del tipo de dirección IP que haya asignado a su instancia de Cloud SQL.IP pública (predeterminada)
Para configurar el entorno estándar de App Engine a fin de habilitar conexiones a una instancia de Cloud SQL mediante IP pública:
- Asegúrese de que la instancia tenga una dirección IP pública. Puede verificarlo en la página Descripción general de su instancia en Google Cloud consola . Si necesita agregar una, consulte la página "Configuración de IP pública" para obtener instrucciones.
- Obtenga el INSTANCE_CONNECTION_NAME de su instancia. Puede encontrar este valor en la página de descripción general de su instancia en Google Cloud consola o ejecutando el siguiente comando
gcloud sql instances describe
: Reemplace INSTANCE_NAME con el nombre de su instancia de Cloud SQL.gcloud sql instances describe INSTANCE_NAME
Reemplace la variable INSTANCE_NAME con el nombre de su instancia. Asegúrese de que la cuenta de servicio que utiliza su aplicación para autenticar llamadas a Cloud SQL tenga el rol de IAM
Cloud SQL Client
.Para obtener instrucciones detalladas sobre cómo agregar roles de IAM a una cuenta de servicio, consulte Otorgar roles a cuentas de servicio .
De forma predeterminada, tu aplicación autorizará tus conexiones mediante una cuenta de servicio de App Engine . La identidad de la cuenta de servicio tiene el formato PROJECT_ID @appspot.gserviceaccount.com
.
Si la cuenta de servicio autorizadora pertenece a un proyecto diferente al de la instancia de Cloud SQL, será necesario agregar los permisos de IAM y de la API de administración de Cloud SQL para ambos proyectos.
IP privada
Si la cuenta de servicio autorizadora pertenece a un proyecto diferente al que contiene la instancia de Cloud SQL, haga lo siguiente:
- En ambos proyectos, habilite la API de administración de Cloud SQL.
- Para la cuenta de servicio en el proyecto que contiene la instancia de Cloud SQL, agregue los permisos de IAM .
- Asegúrese de que la instancia de Cloud SQL creada previamente tenga una dirección IP privada. Si necesita agregar una, consulte Configurar una IP privada para obtener instrucciones.
- Cree un conector de acceso a VPC sin servidor en la misma red de VPC que su instancia de Cloud SQL. Tenga en cuenta las siguientes condiciones:
- A menos que estés usando VPC compartida , tu conector debe estar en el mismo proyecto y región que el recurso que lo usa, pero puede enviar tráfico a recursos en diferentes regiones.
- El acceso a VPC sin servidor admite la comunicación con redes VPC conectadas mediante Cloud VPN y VPC Network Peering .
- El acceso a VPC sin servidor no es compatible con redes heredadas .
- Configure el entorno estándar de App Engine para usar el conector.
- Conéctese utilizando la dirección IP privada de su instancia y el puerto
5432
.
Conectarse a Cloud SQL
Después de configurar el entorno estándar de App Engine, puedes conectarte a tu instancia de Cloud SQL.
IP pública (predeterminada)
Para las rutas de IP públicas, el entorno estándar de App Engine proporciona cifrado y se conecta mediante el proxy de autenticación de Cloud SQL de dos maneras:
- A través de sockets Unix
- Mediante el uso de un conector de Cloud SQL
IP privada
Para las rutas IP privadas, la aplicación se conecta directamente a la instancia a través de una red VPC. Este método utiliza TCP para conectarse directamente a la instancia de Cloud SQL sin usar el proxy de autenticación de Cloud SQL.
Conectarse con TCP
Conéctese utilizando la dirección IP privada de su instancia de Cloud SQL como host y el puerto 5432
.
Pitón
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
Java
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
Nota:
- CLOUD_SQL_CONNECTION_NAME debe representarse como <MI-PROYECTO>:<REGIÓN-DE-INSTANCIA>:<NOMBRE-DE-INSTANCIA>
- El uso del argumento ipTypes=PRIVATE obligará a SocketFactory a conectarse con la IP privada asociada a una instancia
- Consulte los requisitos de la versión de fábrica del socket JDBC para el archivo pom.xml aquí .
Node.js
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
Ir
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
DO#
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
Rubí
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
PHP
Para ver este fragmento en el contexto de una aplicación web, consulte el archivo README en GitHub .
Mejores prácticas y otra información
Puedes usar el proxy de autenticación de Cloud SQL al probar tu aplicación localmente. Consulta la guía de inicio rápido para usar el proxy de autenticación de Cloud SQL para obtener instrucciones detalladas.
Grupos de conexiones
Las conexiones a las bases de datos subyacentes pueden perderse, ya sea por el propio servidor de bases de datos o por la infraestructura subyacente. Para mitigar esto, recomendamos usar una biblioteca cliente compatible con grupos de conexiones y reconexión automática.
Límites de conexión
Cada instancia de App Engine que se ejecuta en un entorno estándar no puede tener más de 100 conexiones simultáneas . Para las aplicaciones PHP 5.5, el límite es de 60 conexiones simultáneas . Este límite se aplica por instancia de aplicación. Esto significa que cada instancia de la aplicación de App Engine puede tener esa cantidad de conexiones a la base de datos y, a medida que escala, el número total de conexiones por implementación puede aumentar. Para obtener más información, consulte Escalado de elementos .
Puede limitar el número máximo de conexiones por instancia mediante un grupo de conexiones. Para obtener ejemplos más detallados sobre cómo limitar el número de conexiones, consulte la página "Administrar conexiones de base de datos" .
Las aplicaciones de App Engine están sujetas a límites de tiempo de solicitud según el uso y el entorno. Para obtener más información, consulte cómo se administran las instancias en los entornos estándar y flexibles de App Engine.
Límites de cuota de API
App Engine proporciona un mecanismo que se conecta mediante el proxy de autenticación de Cloud SQL, que utiliza la API de administración de Cloud SQL. Los límites de cuota de la API se aplican al proxy de autenticación de Cloud SQL. Al iniciarse la API de administración de Cloud SQL, utiliza una cuota de dos y, posteriormente, un promedio de dos por hora. La cuota predeterminada es de 180 por minuto por usuario. Las aplicaciones de App Engine también están sujetas a cuotas y límites adicionales, como se explica en la página Cuotas de App Engine .