Esta página contém informações e exemplos para estabelecer ligação 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 base de dados totalmente gerido que ajuda na configuração, manutenção, gestão e administração das suas bases de dados relacionais na nuvem.
O App Engine é uma plataforma sem servidor totalmente gerida para desenvolver e alojar apps Web em grande escala. Pode escolher entre várias linguagens, bibliotecas e frameworks populares para desenvolver as suas apps e, em seguida, deixar que o App Engine se encarregue do aprovisionamento de servidores e do dimensionamento das suas instâncias de apps com base na procura.
Configure uma instância do Cloud SQL
- Ative a API Cloud SQL Admin no Google Cloud projeto a partir do qual está a estabelecer ligação, se ainda não o tiver feito:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Crie uma instância do Cloud SQL
para MySQL. Recomendamos que escolha uma
localização da instância do Cloud SQL na mesma região que o seu serviço do Cloud Run para ter uma melhor latência, evitar alguns custos de rede e reduzir os riscos de falhas entre regiões.
Por predefinição, o Cloud SQL atribui um endereço IP público a uma nova instância. Também tem a opção de atribuir um endereço IP privado. Para mais informações sobre as opções de conetividade para ambos, consulte a página Vista geral da ligação.
- Quando cria a instância, pode escolher a
hierarquia do certificado do servidor (AC) para a instância e, em seguida, configurar a hierarquia
como a
serverCaMode
para a instância. Tem de selecionar a opção de AC por instância (GOOGLE_MANAGED_INTERNAL_CA
) como o modo de AC do servidor para instâncias às quais quer estabelecer ligação a partir de aplicações Web do ambiente padrão do App Engine.
Configure o ambiente padrão do App Engine
Os passos para configurar o ambiente padrão do App Engine dependem do tipo de endereço IP que atribuiu à sua instância do Cloud SQL.IP público (predefinição)
Para configurar o ambiente padrão do App Engine para ativar ligações a uma instância do Cloud SQL através do IP público:
- Certifique-se de que a instância tem um endereço IP público. Pode verificar esta situação na página Vista geral da sua instância na Google Cloud consola. Se precisar de adicionar um, consulte a página de configuração do IP público para ver instruções.
- Obtenha o INSTANCE_CONNECTION_NAME para a sua instância. Pode encontrar
este valor na página Vista geral da sua instância na
Google Cloud consola 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 a sua app está a usar para autenticar chamadas para o Cloud SQL tem a
Cloud SQL Client
função do IAM.Para obter instruções detalhadas sobre como adicionar funções do IAM a uma conta de serviço, consulte o artigo Conceder funções a contas de serviço.
Por predefinição, a sua app autoriza as ligações através de 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, tem de adicionar a API Admin do Cloud SQL e as autorizações de IAM para ambos os projetos.
IP privado
Se a conta de serviço de autorização pertencer a um projeto diferente do que contém a instância do Cloud SQL, faça o seguinte:
- Em ambos os projetos, ative a API Admin do Cloud SQL.
- Para a conta de serviço no projeto que contém a instância do Cloud SQL, adicione as autorizações IAM.
- Certifique-se de que a instância do Cloud SQL criada anteriormente tem um endereço IP privado. Se precisar de adicionar um, consulte as instruções em Configurar IP privado.
- Crie um conetor de acesso a VPC sem servidor na mesma rede VPC que a sua instância do Cloud SQL. Tenha em atenção as seguintes condições:
- A menos que esteja a usar a VPC partilhada, o conector tem de estar no mesmo projeto e região que o recurso que o usa, mas pode enviar tráfego para recursos em regiões diferentes.
- O Acesso a VPC sem servidor suporta a comunicação com redes VPC ligadas através do Cloud VPN e do intercâmbio de redes VPC.
- O acesso a VPC sem servidor não suporta redes antigas.
- Configure o ambiente padrão do App Engine para usar o conetor.
- Estabeleça ligação através do endereço IP privado e da porta da sua instância
3306
.
Estabeleça ligação ao Cloud SQL
Depois de configurar o ambiente padrão do App Engine, pode estabelecer ligação à sua instância do Cloud SQL.
IP público (predefinição)
Para caminhos de IP públicos, o ambiente padrão do App Engine fornece encriptação e estabelece ligação através do proxy Auth do Cloud SQL de duas formas:
- Através de entradas Unix
- Usando um conetor do Cloud SQL
IP privado
Para caminhos de IP privado, a sua aplicação liga-se diretamente à sua instância através de uma rede VPC. Este método usa o TCP para se ligar diretamente à instância do Cloud SQL sem usar o proxy Auth do Cloud SQL.
Estabeleça ligação com TCP
Estabeleça ligação através do endereço IP privado da sua instância do Cloud SQL como anfitrião e porta 3306
.
Python
Para ver este fragmento no contexto de uma app Web, consulte o ficheiro README no GitHub.
Java
Para ver este fragmento no contexto de uma app Web, consulte o LEIA-ME no GitHub.
Nota:
- INSTANCE_CONNECTION_NAME deve ser representado como <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- A utilização do argumento ipTypes=PRIVATE força o SocketFactory a estabelecer ligação com o IP privado associado de uma instância
- Consulte os requisitos da versão da fábrica de sockets JDBC para o ficheiro pom.xml.
Node.js
Para ver este fragmento no contexto de uma app Web, consulte o ficheiro README no GitHub.
Ir
Para ver este fragmento no contexto de uma app Web, consulte o ficheiro README no GitHub.
C#
Para ver este fragmento no contexto de uma app Web, consulte o ficheiro README no GitHub.
Ruby
Para ver este fragmento no contexto de uma app Web, consulte o ficheiro README no GitHub.
PHP
Para ver este fragmento no contexto de uma app Web, consulte o ficheiro README no GitHub.
Práticas recomendadas e outras informações
Pode usar o proxy Auth do Cloud SQL quando testar a sua aplicação localmente. Consulte o início rápido para usar o proxy Auth do Cloud SQL para ver instruções detalhadas.
Conjuntos de ligações
As ligações às bases de dados subjacentes podem ser interrompidas pelo próprio servidor da base de dados ou pela infraestrutura subjacente. Para mitigar esta situação, recomendamos que use uma biblioteca de cliente que suporte pools de ligações e a religação automática.
Limites de ligação
Cada instância do App Engine em execução num ambiente padrão não pode ter mais de 100 ligações simultâneas a uma instância. Para apps PHP 5.5, o limite é de 60 ligações simultâneas. Este limite aplica-se por instância da aplicação. Isto significa que cada instância da aplicação do App Engine pode ter esse número de ligações à base de dados e, à medida que é dimensionada, o número total de ligações por implementação pode aumentar. Para mais informações, consulte o artigo Dimensionar elementos.
Pode limitar o número máximo de ligações usadas por instância através de um conjunto de ligações. Para ver exemplos mais detalhados sobre como limitar o número de associações, consulte a página Gerir associações de bases de dados.
As aplicações do App Engine estão sujeitas a limites de tempo de solicitação, consoante a utilização e o ambiente. Para mais informações, veja como as instâncias são geridas no ambiente padrão do App Engine padrão e flexível.
Limites de quota da API
O App Engine fornece um mecanismo que se liga através do proxy Auth do Cloud SQL, que usa a API Admin do Cloud SQL. Os limites de quota da API aplicam-se ao proxy Auth do Cloud SQL. Quando a API Cloud SQL Admin é iniciada, usa uma quota de dois e, posteriormente, uma média de dois por hora. A quota predefinida é de 180 por minuto por utilizador. As aplicações do App Engine também estão sujeitas a quotas e limites adicionais, conforme abordado na página Quotas do App Engine.