Como usar o Cloud SQL para PostgreSQL

Nesta página, você aprende a se conectar a uma instância do Cloud SQL para PostgreSQL de um aplicativo do App Engine e a fazer leituras e gravações no Cloud SQL. O Cloud SQL é um banco de dados SQL que reside na nuvem do Google.

Para saber mais informações, consulte a documentação do Cloud SQL. Para saber mais informações sobre preços e limites do Cloud SQL, consulte a página de preços do Cloud SQL. Os aplicativos do App Engine também estão sujeitos às cotas do App Engine.

Antes de começar

  1. Crie ou selecione um projeto do GCP no Console do GCP, verifique se ele inclui um aplicativo do App Engine e se o faturamento está ativado:
    Acessar o App Engine

    O Painel será aberto se houver um aplicativo do App Engine no projeto e se o faturamento estiver ativado. Caso contrário, siga as instruções para escolher uma região e ativar o faturamento.

  2. Ativar Cloud SQL API.

    Ativar a API

  3. Para implantar seu aplicativo com a ferramenta gcloud, é preciso fazer o download, instalar e inicializar o SDK do Cloud:
    Fazer o download do SDK
  4. Instale o SDK do .NET Core, versão LTS.
  5. Se você estiver usando o Visual Studio para criar e executar aplicativos do .NET Core, será preciso instalar as ferramentas do .NET Core.
  6. Se você estiver usando o Visual Studio, instale o Google Cloud Tools for Visual Studio para facilitar a implantação no App Engine.

Como configurar a instância do Cloud SQL

Para criar e configurar uma instância do Cloud SQL, siga estas etapas:

  1. Crie uma instância do Cloud SQL para PostgreSQL.
  2. Defina a senha do usuário padrão na instância do Cloud SQL, se ainda não fez isso:
    gcloud sql users set-password postgres no-host --instance [INSTANCE_NAME] --password [PASSWORD]
    
  3. Se você não quiser usar o usuário padrão para se conectar, crie um usuário.

Configurar o acesso SSL à instância do Cloud SQL

  1. Siga as instruções para criar um certificado de cliente e exigir o SSL.

  2. Na página "Detalhes da instância", clique em Controles de acesso > Autorização.

  3. Clique em + Adicionar rede.

  4. Insira all como nome.

  5. Insira 0.0.0.0/0 para a rede.

  6. Clique em Concluído e em Salvar.

  7. Para gerar um arquivo client.pfx dos arquivos de certificado que você criou na etapa 1, insira na linha de comando:

    openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -certfile server-ca.pem -out client.pfx
    

    Se você não tiver uma máquina com openssl instalado, use o SDK do Cloud.

  8. Substitua o arquivo client.pfx no projeto dotnet-docs-samples\appengine\flexible\CloudSql pelo que você criou.

Como configurar a string de conexão e adicionar uma biblioteca

Configure o ambiente local para oferecer suporte a conexões de testes locais.

Por exemplo, para a amostra de código fornecida, adicione a string de conexão ao arquivo appsettings.json.

A string de conexão inclui o usuário, a senha e o endereço IP:

"ConnectionString": "Uid=aspnetuser;Pwd=;Host=cloudsql;Database=visitors"

A string de conexão é usada para criar a conexão:

var connectionString = new NpgsqlConnectionStringBuilder(
    Configuration["CloudSql:ConnectionString"])
{
    // Connecting to a local proxy that does not support ssl.
    SslMode = SslMode.Disable
};
NpgsqlConnection connection =
    new NpgsqlConnection(connectionString.ConnectionString);

Como executar o código de amostra

A amostra abaixo grava as informações de visitas no Cloud SQL e depois as lê e retorna as últimas 10 visitas:
// Insert a visit into the database:
using (var insertVisitCommand = _connection.CreateCommand())
{
    insertVisitCommand.CommandText =
        @"INSERT INTO visits (user_ip) values (@user_ip)";
    var userIp = insertVisitCommand.CreateParameter();
    userIp.ParameterName = "@user_ip";
    userIp.DbType = DbType.String;
    userIp.Value =
        FormatAddress(HttpContext.Connection.RemoteIpAddress);
    insertVisitCommand.Parameters.Add(userIp);
    await insertVisitCommand.ExecuteNonQueryAsync();
}

// Look up the last 10 visits.
using (var lookupCommand = _connection.CreateCommand())
{
    lookupCommand.CommandText = @"
        SELECT * FROM visits
        ORDER BY time_stamp DESC LIMIT 10";
    List<string> lines = new List<string>();
    var reader = await lookupCommand.ExecuteReaderAsync();
    HomeModel model = new HomeModel() {
        VisitorLog = new List<VisitorLogEntry>()
    };
    while (await reader.ReadAsync()) {
        model.VisitorLog.Add(new VisitorLogEntry() {
            IpAddress = reader.GetString(1),
            TimeStamp = reader.GetDateTime(0)
        });
    }
    return View(model);
}

Testar e implantar

Visual Studio

Para testar seu aplicativo localmente:

  1. No Visual Studio, abra dotnet-docs-samples\appengine\flexible\AppEngineFlex.sln.
  2. Pressione F5.

Para implantar o aplicativo:

  1. No "Solution Explorer", clique com o botão direito do mouse em CloudSql e selecione Publish CloudSql to Google Cloud...
  2. Clique em App Engine Flex.
  3. Clique em Publish.

Linha de comando

Para testar seu aplicativo localmente:

  1. Execute os seguintes comandos no diretório dotnet-docs-samples\appengine\flexible\:
    dotnet restore
    dotnet run
  2. No navegador da Web, acesse http://localhost:5000/
  3. Na janela do terminal, pressione Ctrl+C para sair do servidor da Web.

Para implantar o aplicativo:

  1. Navegue até o diretório dotnet-docs-samples\appengine\flexible\.
  2. Execute os seguintes comandos:
    dotnet restore
    dotnet publish
    gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml
  3. Inicie o navegador e execute o comando a seguir para visualizar o aplicativo em http://[YOUR_PROJECT_ID].appspot.com:
    gcloud app browse

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

Enviar comentários sobre…

Ambiente flexível do App Engine para documentos .NET