Cloud SQL for MySQL の使用

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

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 API を有効にします。

    APIを有効にする

  3. gcloud ツールでアプリをデプロイする場合は、Cloud SDK をダウンロードしてインストールし、初期化する必要があります。
    SDK をダウンロード
  4. .NET Core SDK、LTS バージョンをインストールします。
  5. Visual Studio を使用している場合、.NET コア アプリケーションをビルドして実行するには .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=1.2.3.4",

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

var connectionString = new MySqlConnectionStringBuilder(
    Configuration["CloudSql:ConnectionString"])
{
    SslMode = MySqlSslMode.Required,
    CertificateFile =
        Configuration["CloudSql:CertificateFile"]
};
if (string.IsNullOrEmpty(connectionString.Database))
    connectionString.Database = "visitors";
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\netcoreapp1.0\publish\app.yaml
  3. 次のコマンドを実行してブラウザを起動し、http://[YOUR_PROJECT_ID].appspot.com でアプリを表示します。
    gcloud app browse
このページは役立ちましたか?評価をお願いいたします。

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

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