Nesta página, você encontra informações e exemplos para se conectar a uma instância do Cloud SQL a partir de um serviço em execução no ambiente flexível do App Engine.
O Cloud SQL é um serviço de banco de dados totalmente gerenciado que ajuda a configurar, manter, gerenciar e administrar seus bancos de dados relacionais na nuvem.
O App Engine é uma plataforma sem servidor totalmente gerenciada para desenvolver e hospedar aplicativos da Web em escala. É possível escolher entre várias linguagens, frameworks e bibliotecas conhecidos para desenvolver seus apps e, em seguida, permitir que o App Engine provisione os servidores e escalone as instâncias de app com base na demanda.
Configurar uma instância do Cloud SQL
- Ative a API Cloud SQL Admin no projeto do Google Cloud 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 da instância do Cloud SQL na mesma região do serviço do Cloud Run para melhorar a latência, evitar alguns custos de rede e reduzir
os riscos de falha 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 mais informações sobre as opções de conectividade de ambos, consulte a página Visão geral da conexão.
Configurar o ambiente flexível do App Engine
As etapas para configurar o ambiente flexível do App Engine dependem do tipo de endereço IP atribuído à instância do Cloud SQL.IP público (padrão)
Para configurar o ambiente flexível do App Engine para ativar conexões com uma instância do Cloud SQL:
- Verifique se a instância criada acima tem um endereço IP público. Você pode verificar isso na página Visão geral da sua instância no Console do Google Cloud. Se precisar adicionar um, consulte a página Como configurar o IP público para ver instruções.
- Receba o INSTANCE_CONNECTION_NAME da instância. Isso pode ser encontrado na página Visão geral da instância no console do Google Cloud
ou executando o seguinte comando:
gcloud sql instances describe [INSTANCE_NAME]
. - Verifique se a conta de serviço usada pelo aplicativo para autenticar chamadas para o Cloud SQL tem os papéis e permissões apropriados do Cloud SQL.
- A conta de serviço do seu serviço precisa de um dos seguintes papéis do IAM:
Cloud SQL Client
(recomendável)Cloud SQL Editor
Cloud SQL Admin
cloudsql.instances.connect
cloudsql.instances.get
Por padrão, o aplicativo autorizará suas conexões usando a conta de serviço do ambiente flexível do App Engine. A 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 da API Cloud SQL Admin e do IAM precisarão ser adicionadas aos dois projetos.
- A conta de serviço do seu serviço precisa de um dos seguintes papéis do IAM:
- Atualize o arquivo
app.yaml
do seu projeto com a opção que funcionar melhor. É possível usar uma lista de instâncias separada por vírgulas para especificar várias opções de uma só vez.Como ativar um soquete de domínio Unix
Para ativar um soquete de domínio Unix, adicione uma das seguintes opções ao arquivo
app.yaml
do projeto, dependendo de se você está se conectando a uma ou várias instâncias:beta_settings: cloud_sql_instances: INSTANCE_CONNECTION_NAME
beta_settings: cloud_sql_instances: INSTANCE_CONNECTION_NAME,INSTANCE_CONNECTION_NAME_2,...
Como ativar uma porta TCP
Para ativar uma porta TCP local, adicione uma das seguintes opções ao arquivoapp.yaml
do projeto, dependendo de se você está se conectando a uma ou várias instâncias:beta_settings: cloud_sql_instances: INSTANCE_CONNECTION_NAME=tcp:PORT
beta_settings: cloud_sql_instances: INSTANCE_CONNECTION_NAME_1=tcp:PORT_1,INSTANCE_CONNECTION_NAME_2=tcp:PORT_2,...
IP privado
Para se conectar à instância do Cloud SQL por um IP privado, a implantação do ambiente flexível do App Engine precisa estar na mesma rede VPC que a instância do Cloud SQL. Consulte a documentação de configuração em Configurações de rede para ver instruções sobre como especificar uma rede VPC na implantação.
Depois de implantado, seu aplicativo poderá se conectar diretamente por meio de um
endereço IP privado e da porta 5432
da instância.
Conecte-se ao Cloud SQL
Depois de configurar o ambiente flexível do App Engine, conecte-se à instância do Cloud SQL.
IP público (padrão)
Para caminhos de IP público, o ambiente flexível do App Engine fornece criptografia e estabelece conexões usando o proxy de autenticação do Cloud SQL de três maneiras:
- Com soquetes TCP
- Com soquetes Unix
- Com um conector do Cloud SQL
IP particular
Conectar com TCP
Conecte-se usando o endereço IP privado da sua instância do Cloud SQL como o host e a porta 5432
.
Python
Para conferir esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
Java
Para conferir esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
Observação:
- CLOUD_SQL_CONNECTION_NAME precisa ser representado como <MEU-PROJETO>:<REGIÃO-DA-INSTÂNCIA>:<NOME-DA-INSTÂNCIA>
- O uso do argumento ipTypes=PRIVATE forçará o SocketFactory a se conectar ao IP privado associado de uma instância
- Consulte os requisitos de versão de fábrica do soquete JDBC para o arquivo pom.xml aqui.
Node.js
Para conferir esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
Go
Para conferir esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
C#
Para conferir esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
Ruby
Para conferir esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
PHP
Para conferir esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
Práticas recomendadas e outras informações
Use o proxy do Cloud SQL Auth ao testar seu aplicativo localmente. Consulte o guia de início rápido para o uso do proxy de autenticação do Cloud SQL e confira instruções detalhadas.
Pools de conexões
As conexões aos bancos de dados subjacentes podem ser descartadas pelo próprio servidor de banco de dados ou pela infraestrutura subjacente. Para atenuar isso, recomendamos que você use uma biblioteca de cliente que ofereça suporte a pools de conexão e à reconexão automática.
Limites de conexão
Cada instância do App Engine executada em um ambiente padrão não pode ter mais de 100 conexões simultâneas com uma instância. Nos apps em PHP 5.5, o limite é de 60 conexões simultâneas. Esse limite é aplicado por instância do aplicativo. Isso significa que cada instância do aplicativo do App Engine pode ter muitas conexões com o banco de dados e, à medida que ela cresce, o número total de conexões por implantação pode aumentar. Para mais informações, consulte os Elementos de escalonamento.
É possível limitar o número máximo de conexões por instância usando um pool de conexões. Para exemplos mais detalhados sobre como limitar o número de conexões, consulte a página Como gerenciar 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 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 que se conecta usando o proxy do Cloud SQL Auth, que usa a API Cloud SQL Admin. Os limites de cota da API se aplicam ao proxy do Cloud SQL Auth. Quando a API Cloud SQL Admin é iniciada, ela usa uma cota de dois e, depois, uma média de duas por hora. A cota padrão é de 180 por minuto por usuário. Os aplicativos do App Engine também estão sujeitos a outras cotas e limites, conforme descrito na página Cotas do App Engine.