Esta página contém informações e exemplos para conectar-se a uma instância do Cloud SQL a partir de um serviço em execução no ambiente padrão do App Engine.
O Cloud SQL é um serviço de banco de dados totalmente gerenciado que ajuda você a configurar, manter, gerenciar e administrar seus bancos de dados relacionais na nuvem.
O App Engine é uma plataforma totalmente gerenciada e sem servidor para desenvolver e hospedar aplicativos web em escala. Você pode escolher entre diversas linguagens, bibliotecas e frameworks populares para desenvolver seus aplicativos e deixar que o App Engine se encarregue do provisionamento de servidores e do escalonamento das instâncias do seu aplicativo conforme a demanda.
Configurar uma instância do Cloud SQL
- Habilite a API de administração do Cloud SQL no Google Cloud projeto do qual você está se conectando, caso ainda não tenha feito isso:
- Crie uma instância do Cloud SQL para PostgreSQL . Recomendamos que você escolha um local de instância do Cloud SQL na mesma região do seu serviço Cloud Run para obter melhor latência, evitar custos de rede e reduzir os riscos de falhas entre regiões.
Por padrão, o Cloud SQL atribui um endereço IP público a uma nova instância. Você também tem a opção de atribuir um endereço IP privado. Para obter mais informações sobre as opções de conectividade para ambos, consulte a página "Visão geral da conexão" .
Configurar o ambiente padrão do App Engine
As etapas para configurar o ambiente padrão do App Engine dependem do tipo de endereço IP que você atribuiu à sua instância do Cloud SQL.IP público (padrão)
Para configurar o ambiente padrão do App Engine para permitir conexões com uma instância do Cloud SQL usando IP público:
- Certifique-se de que a instância tenha um endereço IP público. Você pode verificar isso na página Visão geral da sua instância no Google Cloud console . Se precisar adicionar um, consulte a página Configurando IP público para obter instruções.
- Obtenha o INSTANCE_CONNECTION_NAME para sua instância. Você pode encontrar esse valor na página Visão Geral da sua instância no Google Cloud console ou executando o seguinte comando
gcloud sql instances describe
: Substitua INSTANCE_NAME pelo nome da sua instância do Cloud SQL.gcloud sql instances describe INSTANCE_NAME
Substitua a variável INSTANCE_NAME pelo nome da sua instância. Certifique-se de que a conta de serviço que seu aplicativo está usando para autenticar chamadas para o Cloud SQL tenha a função IAM
Cloud SQL Client
.Para obter instruções detalhadas sobre como adicionar funções do IAM a uma conta de serviço, consulte Concessão de funções a contas de serviço .
Por padrão, seu aplicativo autorizará suas conexões usando uma conta de serviço do App Engine . A identidade da conta de serviço está no formato PROJECT_ID @appspot.gserviceaccount.com
.
Se a conta de serviço de autorização pertencer a um projeto diferente da instância do Cloud SQL, as permissões de API de administração e IAM do Cloud SQL precisarão ser adicionadas para ambos os projetos.
IP privado
Se a conta de serviço de autorização pertencer a um projeto diferente daquele que contém a instância do Cloud SQL, faça o seguinte:
- Em ambos os projetos, ative a API de administração do Cloud SQL.
- Para a conta de serviço no projeto que contém a instância do Cloud SQL, adicione as permissões do IAM .
- Certifique-se de que a instância do Cloud SQL criada anteriormente tenha um endereço IP privado. Se precisar adicionar um, consulte Configurar IP privado para obter instruções.
- Crie um conector de acesso VPC sem servidor na mesma rede VPC da sua instância do Cloud SQL. Observe as seguintes condições:
- A menos que você esteja usando uma VPC compartilhada , seu conector deve estar no mesmo projeto e região que o recurso que o utiliza, mas pode enviar tráfego para recursos em regiões diferentes.
- O acesso VPC sem servidor oferece suporte à comunicação com redes VPC conectadas usando Cloud VPN e VPC Network Peering .
- O acesso VPC sem servidor não oferece suporte a redes legadas .
- Configure o ambiente padrão do App Engine para usar o conector.
- Conecte-se usando o endereço IP privado da sua instância e a porta
5432
.
Conectar ao Cloud SQL
Depois de configurar o ambiente padrão do App Engine, você pode se conectar à sua instância do Cloud SQL.
IP público (padrão)
Para caminhos de IP públicos, o ambiente padrão do App Engine fornece criptografia e se conecta usando o Cloud SQL Auth Proxy de duas maneiras:
- Através de soquetes Unix
- Usando um conector Cloud SQL
IP privado
Para caminhos IP privados, seu aplicativo se conecta diretamente à sua instância por meio de uma rede VPC. Este método usa TCP para se conectar diretamente à instância do Cloud SQL sem usar o Proxy de Autenticação do Cloud SQL.
Conecte-se com TCP
Conecte-se usando o endereço IP privado da sua instância do Cloud SQL como host e a porta 5432
.
Pitão
Para ver este snippet no contexto de um aplicativo web, veja o README no GitHub .
Java
Para ver este snippet no contexto de um aplicativo web, veja o README no GitHub .
Observação:
- CLOUD_SQL_CONNECTION_NAME deve ser representado como <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- Usar o argumento ipTypes=PRIVATE forçará o SocketFactory a se conectar com o IP privado associado de uma instância
- Veja os requisitos de versão do factory de soquete JDBC para o arquivo pom.xml aqui .
Node.js
Para ver este snippet no contexto de um aplicativo web, veja o README no GitHub .
Ir
Para ver este snippet no contexto de um aplicativo web, veja o README no GitHub .
C#
Para ver este snippet no contexto de um aplicativo web, veja o README no GitHub .
Rubi
Para ver este snippet no contexto de um aplicativo web, veja o README no GitHub .
PHP
Para ver este snippet no contexto de um aplicativo web, veja o README no GitHub .
Melhores práticas e outras informações
Você pode usar o Cloud SQL Auth Proxy ao testar seu aplicativo localmente. Consulte o guia de início rápido sobre como usar o Cloud SQL Auth Proxy para obter instruções detalhadas.
Pools de conexão
As conexões com os bancos de dados subjacentes podem ser interrompidas, seja pelo próprio servidor de banco de dados ou pela infraestrutura subjacente. Para atenuar esse problema, recomendamos o uso de uma biblioteca cliente compatível com pools de conexões e reconexão automática.
Limites de conexão
Cada instância do App Engine em execução em um ambiente padrão não pode ter mais de 100 conexões simultâneas com uma instância. Para aplicativos PHP 5.5, o limite é de 60 conexões simultâneas . Esse limite se aplica por instância do aplicativo. Isso significa que cada instância do aplicativo App Engine pode ter essa quantidade de conexões com o banco de dados e, à medida que ele é escalonado, o número total de conexões por implantação pode aumentar. Para obter mais informações, consulte Elementos de escalonamento .
Você pode limitar o número máximo de conexões usadas por instância usando um pool de conexões. Para obter exemplos mais detalhados sobre como limitar o número de conexões, consulte a página Gerenciando conexões de banco de dados .
Os aplicativos do App Engine estão sujeitos a limites de tempo de solicitação, dependendo do uso e do ambiente. Para obter mais informações, veja como as instâncias são gerenciadas nos ambientes padrão e flexível do App Engine.
Limites de cota da API
O App Engine fornece um mecanismo de conexão usando o Cloud SQL Auth Proxy, que utiliza a Cloud SQL Admin API. Os limites de cota da API se aplicam ao Cloud SQL Auth Proxy. Quando a Cloud SQL Admin API é iniciada, ela usa uma cota de dois usuários e uma média de dois usuários por hora posteriormente. A cota padrão é de 180 usuários por minuto por usuário. Os aplicativos do App Engine também estão sujeitos a cotas e limites adicionais, conforme discutido na página Cotas do App Engine .