En esta página, se muestran 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 te ayuda a configurar, mantener, controlar y administrar tus bases de datos relacionales en la nube.
App Engine es una plataforma sin servidores completamente administrada para desarrollar y alojar aplicaciones web a gran escala. Puedes elegir entre varios lenguajes, bibliotecas y frameworks populares para desarrollar tu aplicación. Luego, deja que App Engine se encargue del aprovisionamiento de servidores y del escalamiento de las instancias de tu aplicación a pedido.
Configura una instancia de Cloud SQL
- Habilita la API de Cloud SQL Admin en el proyecto de Google Cloud desde el que te conectas, si
aún no lo has hecho:
- Crea una instancia de Cloud SQL para SQL Server. Te recomendamos que elijas una ubicación de instancia de Cloud SQL en la misma región que tu servicio de Cloud Run para obtener una mejor latencia, evitar algunos costos de red y reducir los riesgos de fallas entre regiones.
De forma predeterminada, Cloud SQL asigna una dirección IP pública a una instancia nueva. También puedes asignar una dirección IP privada. Para obtener más información sobre las opciones de conectividad de ambos, consulta la página Descripción general de conexión.
Configura el entorno estándar de App Engine
Los pasos que debes seguir para configurar el entorno estándar de App Engine dependen del tipo de dirección IP que asignaste a tu instancia de Cloud SQL.IP pública (predeterminada)
El entorno estándar de App Engine admite la conexión a Cloud SQL para SQL Server a través de una IP pública mediante los conectores de Go, Java y Python.
Para configurar el entorno estándar de App Engine a fin de habilitar las conexiones a una instancia de Cloud SQL mediante una IP pública, sigue estos pasos:- Asegúrate de que la instancia creada anteriormente tenga una dirección IP pública. Puedes verificarlo en la página Descripción general de tu instancia en la consola de Google Cloud. Si necesitas agregar una, consulta la página Configura IP públicas para obtener instrucciones.
- Obtén el INSTANCE_CONNECTION_NAME de tu instancia. Puedes encontrarlo en la página Descripción general de la instancia en la consola de Google Cloud o mediante la ejecución del siguiente comando:
gcloud sql instances describe [INSTANCE_NAME]
. - Asegúrate de que la cuenta de servicio que usa tu app para autenticar llamadas a Cloud SQL tenga los roles y permisos de Cloud SQL adecuados.
- La cuenta de servicio para tu servicio necesita una de las siguientes funciones de IAM:
Cloud SQL Client
(recomendado)Cloud SQL Editor
Cloud SQL Admin
cloudsql.instances.connect
cloudsql.instances.get
De forma predeterminada, tu app autorizará las 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 de autorización pertenece a un proyecto distinto que la instancia de Cloud SQL, se deberán agregar los permisos de IAM y de la API de Administrador de Cloud SQL para ambos proyectos.
- La cuenta de servicio para tu servicio necesita una de las siguientes funciones de IAM:
IP privada
Si la cuenta de servicio de autorización pertenece a un proyecto distinto al que contiene la instancia de Cloud SQL, haz lo siguiente:
- En ambos proyectos, habilita la API de Cloud SQL Admin.
- Para la cuenta de servicio del proyecto que contiene la instancia de Cloud SQL, agrega los permisos de IAM.
- Asegúrate de que la instancia de Cloud SQL que creaste antes tenga una dirección IP privada. Si necesitas agregar una, consulta Configura IP privadas para obtener instrucciones.
- Crea un conector de Acceso a VPC sin servidores en la misma red de VPC en la que se encuentra tu instancia de Cloud SQL. Ten en cuenta las siguientes condiciones:
- A menos que uses la 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 servidores admite la comunicación con las redes de VPC conectadas con Cloud VPN y el intercambio de tráfico entre redes de VPC.
- El Acceso a VPC sin servidores no es compatible con las redes heredadas.
- Configura el entorno estándar de App Engine para usar el conector.
- Conéctate mediante la dirección IP privada y el puerto
1433
de tu instancia.
Conectar 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 encriptación y conexiones mediante los conectores de Cloud SQL.
Conéctate con conectores de Cloud SQL
Los conectores de Cloud SQL son bibliotecas que proporcionan encriptación y autorización basada en IAM cuando se conectan a una instancia de Cloud SQL.
Python
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
Java
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
Nota:
- CLOUD_SQL_CONNECTION_NAME debe representarse como <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- Consulta los requisitos de la versión de fábrica de los sockets de JDBC para el archivo pom.xml aquí.
Go
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
IP privada
En el caso de las rutas de IP privadas, tu aplicación se conecta directamente a tu instancia a través de una red de VPC. En este método, se usa TCP para conectarse directamente a la instancia de Cloud SQL sin usar el proxy de autenticación de Cloud SQL.
Conéctate con TCP
Conéctate con la dirección IP privada de tu instancia de Cloud SQL como host y puerto 1433
.
Python
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
Java
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
Nota:
- CLOUD_SQL_CONNECTION_NAME debe representarse como <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- Con el argumento ipTypes=PRIVATE, se forzará a SocketFactory a la conexión con la IP privada asociada de una instancia
- Consulta los requisitos de la versión de fábrica de los sockets de JDBC para el archivo pom.xml aquí.
Node.js
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
Go
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
C#
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
Ruby
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
PHP
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
Prácticas recomendadas y más información
Puedes usar el Proxy de Cloud SQL Auth cuando pruebes tu aplicación de forma local. Consulta la guía de inicio rápido para usar el Proxy de Cloud SQL Auth a fin de obtener instrucciones detalladas.
Grupos de conexiones
Es posible que las conexiones a bases de datos subyacentes se interrumpan debido al mismo servidor de la base de datos o a la infraestructura subyacente. Para mitigar este problema, te recomendamos que uses una biblioteca cliente que admita grupos de conexiones y reconexiones automáticas.
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 en una instancia. En el caso de las apps en 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. A medida que aumenta la escala, puede aumentar el total de conexiones por implementación. Si quieres obtener más información, consulta la sección Elementos de escalamiento.
Puedes limitar la cantidad máxima de conexiones de cada instancia mediante un grupo de conexiones. Para obtener ejemplos más detallados sobre cómo limitar la cantidad de conexiones, consulta la página Administra conexiones de bases de datos.
Las aplicaciones de App Engine están sujetas a los límites de tiempo de las solicitudes según el uso y el entorno. Para obtener más información, consulta cómo se administran las instancias en entornos estándar y flexibles del entorno estándar de App Engine.
Límites de cuota de la API
App Engine proporciona un mecanismo que se conecta mediante el proxy de autenticación de Cloud SQL, que usa la API de Cloud SQL Admin. Los límites de cuota de la API se aplican al proxy de Cloud SQL Auth. Cuando se inicia la API de Cloud SQL Admin, usa una cuota de dos y un promedio de dos por hora después. La cuota predeterminada es de 180 por minuto, por usuario. Las aplicaciones de App Engine también están sujetas a las cuotas y los límites adicionales que se describen en la página Cuotas de App Engine.