Conectar-se pelo App Engine

Nesta página, fornecemos informações e exemplos sobre como se conectar a uma instância do Cloud SQL a partir de um aplicativo do App Engine.

Configurar o Cloud SQL e o App Engine

Para saber mais sobre o processo de configuração de uma instância do Cloud SQL ou de um aplicativo do Google App Engine, siga estas instruções:

  • Identifique o nome da conexão para a instância do Cloud SQL. Esta é uma string exclusiva para cada instância, no formato <PROJECT_ID>:<REGION>:<INSTANCE_ID>. Ela aparece em Nome da conexão da instância, na página Detalhes da instância, ou em connectionName quando se usa o comando gcloud sql instances describe <INSTANCE_ID>.

  • Se você estiver usando a linguagem de programação Java, ative a API Admin do Cloud SQL.

    Ativar a a API

É recomendável que o aplicativo use o pool de conexões para conseguir melhor desempenho e tempos de resposta mais rápidos. Para ver exemplos específicos de pools de conexões, consulte Gerenciar conexões de banco de dados.

Conectar o ambiente padrão do App Engine ao Cloud SQL

No ambiente padrão do App Engine há um soquete de domínio Unix para conexão com instâncias do Cloud SQL. Essas conexões são autorizadas automaticamente usando a conta de serviço padrão do App Engine.

O soquete pode ser encontrado em /cloudsql/INSTANCE_CONNECTION_NAME e usado diretamente pelo aplicativo. Veja abaixo alguns exemplos de uso.

Python

# The SQLAlchemy engine will help manage interactions, including automatically
# managing a pool of connections to your database
db = sqlalchemy.create_engine(
    # Equivalent URL:
    # mysql+pymysql://<db_user>:<db_pass>@/<db_name>?unix_socket=/cloudsql/<cloud_sql_instance_name>
    sqlalchemy.engine.url.URL(
        drivername='mysql+pymysql',
        username=db_user,
        password=db_pass,
        database=db_name,
        query={
            'unix_socket': '/cloudsql/{}'.format(cloud_sql_instance_name)
        }
    ),
    # ... Specify additional properties here.
    # ...
)
Para ver o snippet acima no contexto de um aplicativo, o projeto todo está disponível aqui.

Java

// The configuration object specifies behaviors for the connection pool.
HikariConfig config = new HikariConfig();

// Configure which instance and what database user to connect with.
config.setJdbcUrl(String.format("jdbc:mysql:///%s", DB_NAME));
config.setUsername(DB_USER); // e.g. "root", "postgres"
config.setPassword(DB_PASS); // e.g. "my-password"

// For Java users, the Cloud SQL JDBC Socket Factory can provide authenticated connections.
// See https://github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory for details.
config.addDataSourceProperty("socketFactory", "com.google.cloud.sql.mysql.SocketFactory");
config.addDataSourceProperty("cloudSqlInstance", CLOUD_SQL_INSTANCE_NAME);
config.addDataSourceProperty("useSSL", "false");

// ... Specify additional connection properties here.

// ...

// Initialize the connection pool using the configuration object.
DataSource pool = new HikariDataSource(config);
Para que você possa ver o snippet acima no contexto de um aplicativo, todo o projeto está disponível aqui.

Conectar o ambiente flexível do App Engine ao Cloud SQL

No ambiente flexível do App Engine, há opções de conexão segura para instâncias do Cloud SQL usando um soquete de domínio Unix ou uma conexão TCP.

Soquete de domínio Unix

Para habilitar o soquete Unix fornecido, adicione o seguinte ao app.yaml do projeto:
beta_settings:
  cloud_sql_instances: <INSTANCE_CONNECTION_NAME> 
O aplicativo pode se conectar à instância do Cloud SQL usando o soquete do Unix localizado em /cloudsql/<INSTANCE_CONNECTION_NAME>.
Ao se conectar a várias instâncias do Cloud SQL, use uma lista, separada por vírgulas, de nomes de conexão da instância. Cada instância listada criará um soquete diferente, derivado do nome da conexão da instância.

Conexão TCP

Para ativar a porta TCP fornecida, adicione o seguinte ao app.yaml do seu projeto:
beta_settings:
  cloud_sql_instances: <INSTANCE_CONNECTION_NAME>=tcp:<TCP_PORT>
Seu aplicativo pode se conectar à instância do Cloud SQL usando a porta TCP escutando em 127.0.0.1:<TCP_PORT>.
Quando você se conectar a várias instâncias do Cloud SQL, use uma lista, separada por vírgulas, de nomes de conexão de instâncias. Cada instância precisa usar uma porta local diferente.

Mais informações

App Engine e Cloud SQL em projetos diferentes

Para aplicativos do App Engine e instâncias do Cloud SQL em projetos diferentes, você precisa conceder à conta de serviço padrão do appengine ( [PROJECT-ID]@appspot.gserviceaccount.com ) uma das seguintes funções do IAM :

  • Cloud SQL Client
  • Cloud SQL Editor
  • Cloud SQL Admin

Para receber instruções detalhadas sobre como adicionar funções do IAM a uma conta de serviço, consulte Conceder funções a contas de serviço.

Práticas recomendadas

Ao se conectar ao Cloud SQL usando o App Engine, lembre-se das seguintes práticas recomendadas:

  • O App Engine consegue criar automaticamente mais instâncias quando a carga aumenta. Se o número de instâncias do App Engine aumentar além do que a instância do Cloud SQL suporta, a instância do Cloud SQL não conseguirá atender à demanda. É possível evitar esse problema limitando o número máximo de instâncias do App Engine. Para ver mais informações, consulte Elementos de dimensionamento.

  • Conexões de banco de dados consomem recursos. O aplicativo deve usar as práticas recomendadas para gerenciamento de conexão para reduzir o número de conexões necessárias. Para o ambiente padrão do App Engine, há um limite rígido no número de conexões que uma instância do App Engine pode abrir para o Cloud SQL.

Conectar o ambiente padrão do App Engine à primeira geração do Cloud SQL

As instâncias de primeira geração do Cloud SQL só aceitam conexões do ambiente padrão do App Engine e necessitam de autorização. Siga as etapas abaixo para conceder autorização.

Console

  1. Acesse a página "Instâncias do Cloud SQL" no Console do Google Cloud Platform.

    Acessar a página "Instâncias do Cloud SQL"

  2. Clique no nome da instância para abrir a respectiva página Detalhes da instância.
  3. Selecione a guia Conexões.
  4. Na seção Aplicativos padrão autorizados do App Engine, clique em Adicionar código do projeto e insira o código do projeto relativo ao aplicativo que você quer autorizar.
  5. Clique em Concluído para sair do modo de edição.
  6. Clique em Salvar para atualizar a instância.

gcloud

  1. Liste os projetos autorizados do App Engine da instância.
    gcloud sql instances describe [INSTANCE_NAME]
    
  2. Use o comando sql instances patch para fornecer o código do projeto de todos os aplicativos que podem acessar essa instância. Use vírgulas para separar vários códigos.
    gcloud sql instances patch [INSTANCE_NAME] --authorized-gae-apps [GAE_APP_PROJECT_ID]
    

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Cloud SQL para MySQL