Cloud SQL for MySQL の使用

このページでは、App Engine アプリケーションから Cloud SQL for MySQL 第 2 世代インスタンスに接続する方法を説明します。また、Cloud SQL で読み取りや書き込みを行う方法も説明します。Cloud SQL は Google のクラウドで使われている SQL データベースの 1 つです。

Cloud SQL の詳細については、Cloud SQL のドキュメントをご覧ください。Cloud SQL の料金と上限については、Cloud SQL の料金ページをご覧ください。App Engine アプリケーションには、App Engine の割り当ても適用されます。

始める前に

  1. GCP Console で GCP プロジェクトを作成または選択します。そのプロジェクトに App Engine アプリケーションが含まれていること、そして課金が有効になっていることを確認してください。
    App Engine に移動

    プロジェクトに App Engine アプリケーションがすでに存在し、課金が有効な場合、ダッシュボードが開きます。それ以外の場合には、プロンプトに従ってリージョンを選択し、課金を有効にします。

  2. Cloud SQL必要な を有効にします。

    を有効にする

  3. gcloud ツールを使用してアプリをデプロイする場合は、Cloud SDK をダウンロードしてインストールし、初期化する必要があります。
    SDK をダウンロード
  4. .NET Core SDK、LTS バージョンをインストールします。
  5. Visual Studio を使用している場合、.NET Core アプリケーションをビルドして実行するには .NET Core ツールをインストールする必要があります。
  6. Visual Studio を使用している場合は、App Engine に簡単にデプロイできるように、Google Cloud Tools for Visual Studio をインストールします。

Cloud SQL インスタンスの構成

Cloud SQL インスタンスを作成して構成するには:

  1. Cloud SQL 第 2 世代インスタンスを作成します。
  2. Cloud SQL インスタンスのデフォルト ユーザーのパスワードをまだ設定していない場合は、ここで設定します。
    gcloud sql users set-password root --host=% --instance [INSTANCE_NAME] --password [PASSWORD]
    
  3. 接続にデフォルトのユーザーを使用しない場合は、ユーザーを作成します。

Cloud SQL インスタンスへの SSL アクセスを構成する

  1. 手順に沿ってクライアント証明書を作成し、SSL を要求します

  2. [インスタンスの詳細] ページで、[アクセス制御] > [承認] の順にクリックします。

  3. [+ ネットワークを追加] をクリックします。

  4. 名前に all を入力します。

  5. ネットワークに 0.0.0.0/0 を入力します。

  6. [完了] をクリックして、[保存] をクリックします。

  7. 手順 1 で作成した証明書ファイルから client.pfx ファイルを生成するには、コマンドラインで次のように入力します。

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

    openssl がインストールされているマシンがない場合は、Cloud SDK を使用します。

  8. 作成した client.pfxdotnet-docs-samples\appengine\flexible\CloudSql プロジェクトの client.pfx ファイルを置き換えます。

接続文字列の設定とライブラリの追加

ローカルテストの接続用にローカル環境を設定します。

たとえば、このサンプルコードの場合、appsettings.json ファイルに接続文字列を追加します。

接続文字列には、ユーザー、パスワード、IP アドレスが含まれます。

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

接続文字列を使用して接続を作成します。

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);

サンプルコードの実行

次のサンプルは、訪問情報を Cloud SQL に書き込み、次に最新の 10 件の訪問を読み取って返します。
// 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);
}

テストとデプロイ

Visual Studio

アプリケーションをローカルでテストするには:

  1. Visual Studio で dotnet-docs-samples\appengine\flexible\AppEngineFlex.sln を開きます。
  2. F5 キーを押します。

アプリケーションをデプロイするには:

  1. ソリューション エクスプローラーで [CloudSql] を右クリックして、[Publish CloudSql to Google Cloud...] を選択します。
  2. [App Engine Flex] をクリックします。
  3. [Publish] をクリックします。

コマンドライン

アプリケーションをローカルでテストするには:

  1. dotnet-docs-samples\appengine\flexible\ ディレクトリから次のコマンドを実行します。
    dotnet restore
    dotnet run
  2. ウェブブラウザで http://localhost:5000/ に移動します。
  3. ターミナル ウィンドウで Ctrl+C キーを押してウェブサーバーを終了します。

アプリケーションをデプロイするには:

  1. dotnet-docs-samples\appengine\flexible\ ディレクトリに移動します。
  2. 次のコマンドを実行します。
    dotnet restore
    dotnet publish
    gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml
  3. 次のコマンドを実行してブラウザを起動し、http://[YOUR_PROJECT_ID].appspot.com にアクセスしてアプリを表示します。
    gcloud app browse

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

.NET の App Engine フレキシブル環境に関するドキュメント