Nesta página, você verá informações e exemplos de como se conectar a uma instância do Cloud SQL usando um serviço em execução no Cloud Functions.
Para ver instruções passo a passo de como executar um aplicativo da Web de amostra do Cloud Functions conectado ao Cloud SQL, veja a guia de início rápido para se conectar usando o Cloud Functions.
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 Cloud Functions é uma solução de computação leve para desenvolvedores. Ele cria funções autônomas com uma finalidade única que respondem a eventos do Cloud sem a necessidade de gerenciar um servidor ou um ambiente de execução.
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:
- Criar uma instância do Cloud SQL for SQL Server. 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 Cloud Functions
As etapas para configurar o Cloud Functions dependem do tipo de endereço IP atribuído à instância do Cloud SQL.IP público (padrão)
O Cloud Functions oferece suporte à conexão com o Cloud SQL para SQL Server por IP público usando os conectores Go, Java e Python.
Para configurar o Cloud Functions para ativar conexões a uma instância do Cloud SQL:- Confirme se a instância criada acima tem um endereço IP público. Confirme essa informação na página Visão geral da instância no Console do Google Cloud. Se você precisar adicionar um endereço IP público, consulte Configurar IP público.
- Consiga o INSTANCE_CONNECTION_NAME da instância. Esse valor está
disponível:
- Na página Visão geral da instância, no Console do Google Cloud
- Ao executar o seguinte comando:
gcloud sql instances describe [INSTANCE_NAME]
-
Configure a conta de serviço para a função. Se a conta de serviço que autorizará pertencer a um projeto diferente da
instância do Cloud SQL, ative a API Cloud SQL Admin e
adicione as permissões de IAM listadas acima em ambos os projetos. Confirme se a
conta de serviço tem os
papéis e permissões
adequados para se conectar ao Cloud SQL.
- Para se conectar ao Cloud SQL, a conta de serviço precisa de um dos
papéis do IAM a seguir:
Cloud SQL Client
(recomendável)Cloud SQL Editor
Cloud SQL Admin
cloudsql.instances.connect
cloudsql.instances.get
- Para se conectar ao Cloud SQL, a conta de serviço precisa de um dos
papéis do IAM a seguir:
- Se você estiver usando
Cloud Functions (2a geração) e não Cloud Functions (1a geração), os
itens a seguir são obrigatórios (consulte também
Configurar o Cloud Run ):
- Inicialmente implante sua função.
Quando você começa a criar uma função do Cloud no Console do Google Cloud, o serviço subjacente do Cloud Run ainda não foi criado. Não é possível configurar uma conexão do Cloud SQL até que esse serviço seja criado (implantando a função do Cloud). - No console do Google Cloud, no canto superior direito da página Detalhes da função, em Tecnologia do Cloud Run, clique no link para acessar or serviço subjacente do Cloud Run.
- Na página Detalhes do serviço do Cloud Run, selecione a guia Editar e implantar uma nova revisão.
- Siga as
etapas padrão
(como no caso de qualquer alteração de configuração) para definir uma nova configuração para uma conexão do Cloud SQL.
Isso cria uma nova revisão do Cloud Run. As revisões subsequentes receberão automaticamente essa conexão do Cloud SQL, a menos que você a altere explicitamente.
- Inicialmente implante sua função.
IP particular
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 isto:
- Nos dois projetos, ative a API Cloud SQL Admin.
- Na conta de serviço no projeto que contém a instância do Cloud SQL, adicione as permissões do IAM.
- Verifique se a instância do Cloud SQL criada anteriormente tem um endereço IP particular. Se você precisar adicionar um, consulte Configurar IP particular para ver 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 a VPC compartilhada, é necessário que um conector esteja no mesmo projeto e na mesma região do recurso que o utiliza, mas ele pode enviar tráfego para recursos em regiões diferentes.
- O acesso VPC sem servidor é compatível com a comunicação com redes VPC conectadas usando o Cloud VPN e o peering de rede VPC.
- O acesso VPC sem servidor não é compatível com redes legadas.
- Configure o Cloud Functions para usar o conector.
- Conecte-se usando o endereço IP particular e a porta
1433
da instância.
Conecte-se ao Cloud SQL
Depois de configurar o Cloud Functions, conecte-se à instância do Cloud SQL.
IP público (padrão)
Para caminhos de IP público, o Cloud Functions fornece criptografia e conexões usando os conectores do Cloud SQL.
Conectar-se com conectores do Cloud SQL
Os conectores do Cloud SQL são bibliotecas específicas de linguagens que fornecem autorização com base em IAM e criptografia ao se conectar a uma instância do Cloud SQL.
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>
- Consulte os requisitos de versão de fábrica do soquete JDBC para o arquivo pom.xml aqui.
Go
Para conferir esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
IP particular
Para caminhos IP particulares, o aplicativo se conecta diretamente à instância por uma rede VPC. Esse método usa TCP para a conexão direta com a instância do Cloud SQL sem usar o proxy de autenticação do Cloud SQL.
Conectar com TCP
Conecte-se usando o endereço IP privado da sua instância do Cloud SQL como o host e a porta 1433
.
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.
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 com bancos de dados subjacentes podem ser descartadas pelo próprio servidor de banco de dados ou pela infraestrutura subjacente ao Cloud Functions. Recomendamos o uso de uma biblioteca de cliente compatível com pools de conexão que reconectam automaticamente conexões de cliente corrompidas. Além disso, recomendamos o uso de um pool de conexão de escopo global. Com ele, é mais provável que sua função reutilize a mesma conexão para as próximas invocações da função e feche a conexão de maneira natural quando a instância for removida (reduzida automaticamente). Para exemplos mais detalhados sobre como usar pools de conexão, consulte Como gerenciar conexões de banco de dados.Limites de conexão
O Cloud SQL impõe um limite máximo de conexões simultâneas, e esse limite pode variar dependendo do mecanismo de banco de dados escolhido (consulte a página "Cotas e limites" do Cloud SQL). É recomendável usar uma conexão com o Cloud Functions, mas é importante definir o número máximo de conexões como 1.Sempre que possível, inicialize um pool de conexões apenas para funções que precisem de acesso ao banco de dados. Alguns pools de conexões criam conexões preventivamente, que podem consumir recursos excessivos e contar nos limites de conexão. Por esse motivo, recomendamos usar a Inicialização lenta para atrasar a criação de um pool de conexões até ser necessário e incluir somente o pool em funções em que ele é usado.
Para exemplos mais detalhados sobre como limitar o número de conexões de bancos de dados, consulte Como gerenciar conexões de bancos de dados.
Limites de cota da API
O Cloud Functions 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. A cota da API Cloud SQL Admin usada é aproximadamente duas vezes o número de instâncias do Cloud SQL configuradas vezes o número total de funções implantadas. É possível definir o número máximo de invocações simultâneas para modificar a cota esperada da API consumida. O Cloud Functions também impõe limites de taxa ao número de chamadas de API permitidas a cada 100 segundos.
A seguir
- Saiba mais sobre o Cloud Functions.
- Saiba mais sobre como implantar Cloud Functions.
- Saiba mais sobre como especificar gatilhos para o Cloud Functions.
- Saiba mais sobre como configurar o Cloud Functions.