Usa Cloud SQL para MySQL

En esta página se muestra cómo conectarse a una instancia de Cloud SQL para MySQL de segunda generación desde una aplicación de App Engine y cómo leer y escribir en Cloud SQL, que es una base de datos de SQL que existe en la nube de Google.

Para obtener más información sobre Cloud SQL, consulta la Documentación de Cloud SQL. Para obtener información sobre los precios y límites de Cloud SQL, consulta la página de Precios de Cloud SQL. Las aplicaciones de App Engine también están sujetas a las cuotas de App Engine.

Antes de comenzar

  1. Crea o selecciona un proyecto de GCP en la GCP Console y asegúrate de que incluya una aplicación de App Engine y de que la facturación se encuentre habilitada:
    Ir a App Engine

    El panel se abrirá si ya existe una aplicación de App Engine en tu proyecto y si la facturación está habilitada. De lo contrario, sigue las instrucciones para seleccionar una región y habilitar la facturación.

  2. Habilita las Cloud SQL API necesarias.

    Habilita las API

  3. Para implementar la aplicación con la herramienta gcloud debes descargar, instalar y luego inicializar el SDK de Cloud:
    Descarga el SDK
  4. Instala el SDK de .NET Core, versión LTS.
  5. Si utilizas Visual Studio para crear y ejecutar aplicaciones .NET, debes instalar las herramientas de .NET Core.
  6. Si utilizas Visual Studio, instala Google Cloud Tools for Visual Studio para implementar App Engine de manera más fácil.

Cómo configurar la instancia de Cloud SQL

Para crear y configurar una instancia de Cloud SQL, debes hacer lo siguiente:

  1. Crea una instancia de Cloud SQL de segunda generación.
  2. Si aún no lo hiciste, establece la contraseña para el usuario predeterminado en tu instancia de Cloud SQL.
    gcloud sql users set-password root --host=% --instance [INSTANCE_NAME] --password [PASSWORD]
    
  3. Si no deseas utilizar el usuario predeterminado para conectarte, crea un usuario.

Cómo configurar el acceso SSL a la instancia de Cloud SQL

  1. Sigue las instrucciones para crear un certificado de cliente y solicitar SSL.

  2. Dirígete a la página de detalles de la instancia, haz clic en Controles de acceso > Autorización.

  3. Haz clic en + Agregar red.

  4. Ingresa all en el nombre.

  5. Ingresa 0.0.0.0/0 en la red.

  6. Haz clic en Listo y, luego, en Guardar.

  7. Para generar un archivo client.pfx a partir de los archivos de certificado creados en el paso 1, ingresa en la línea de comandos:

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

    Si no tienes openssl instalado, utiliza el SDK de Cloud.

  8. Reemplaza el archivo client.pfx del proyecto dotnet-docs-samples\appengine\flexible\CloudSql con el archivo client.pfx que creaste.

Cómo configurar el string de conexión y agregar una biblioteca

Configura el entorno local a fin de que sea compatible con conexiones para realizar pruebas locales.

Por ejemplo, para la muestra de código proporcionada, agrega el string de conexión al archivo appsettings.json .

El string de conexión incluye el usuario, la contraseña y la dirección IP.

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

Este string se utiliza para crear la conexión:

var connectionString = new MySqlConnectionStringBuilder(
    Configuration["CloudSql:ConnectionString"])
{
    // Connecting to a local proxy that does not support ssl.
    SslMode = MySqlSslMode.None,
};
DbConnection connection =
    new MySqlConnection(connectionString.ConnectionString);

Cómo ejecutar el código de muestra

El siguiente ejemplo escribe la información de visitas en Cloud SQL y, luego, lee y muestra las últimas diez 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);
}

Cómo realizar pruebas y llevar a cabo la implementación

Visual Studio

Para realizar pruebas en tu aplicación de manera local, sigue estos pasos:

  1. En Visual Studio, abre dotnet-docs-samples\appengine\flexible\AppEngineFlex.sln.
  2. Presiona F5.

Para implementar tu aplicación, sigue estos pasos:

  1. En el Explorador de soluciones, haz clic con el botón derecho en Cloud SQL, y selecciona Publicar Cloud SQL en Google Cloud…
  2. Haz clic en App Engine Flex.
  3. Haz clic en Publicar.

Línea de comandos

Para realizar pruebas en tu aplicación de manera local, sigue estos pasos:

  1. Ejecuta los siguientes comandos desde el directorio dotnet-docs-samples\appengine\flexible\:
    dotnet restore
    dotnet run
  2. En tu navegador web, ve a http://localhost:5000/
  3. En la ventana de la terminal, presiona Ctrl + C para salir del servidor web.

Para implementar tu aplicación, sigue estos pasos:

  1. Navega al directorio dotnet-docs-samples\appengine\flexible\.
  2. Ejecuta los siguientes comandos:
    dotnet restore
    dotnet publish
    gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml
  3. Inicia tu navegador para ver la aplicación en http://[YOUR_PROJECT_ID].appspot.com y ejecuta el siguiente comando:
    gcloud app browse

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno flexible de App Engine para documentos .NET