Cloud Functions から Cloud SQL for MySQL に接続する

Google Cloud コンソールとクライアント アプリケーションを使用して、MySQL インスタンスに接続された Cloud Functions にサンプルアプリをデプロイする方法を学習します。

すべてのステップを適切なタイミングで完了した場合、通常、このクイックスタートで作成されるリソースにかかる費用は 1 ドル(USD)未満です。

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  6. Cloud Functions で Cloud SQL サンプルアプリを実行するために必要な Cloud APIs を有効にします。

    コンソール

    [API を有効にする] をクリックして、このクイックスタートで必要な API を有効にします。

    API を有効にする

    これにより、次の API が有効になります。

    • Cloud Functions API
    • Cloud SQL Admin API
    • Cloud Run Admin API
    • Cloud Build API
    • Artifact Registry API
    • Eventarc API
    • Compute Engine API
    • Service Networking API
    • Cloud Logging API

    gcloud

    次のボタンをクリックして Cloud Shell を開きます。これにより、ブラウザから Google Cloud リソースにコマンドラインで直接アクセスできます。Cloud Shell を使用して、このクイックスタートで紹介する gcloud コマンドを実行できます。

    Cloud Shell を開く

    Cloud Shell を使用して次の gcloud コマンドを実行します。

    gcloud services enable cloudfunctions.googleapis.com sqladmin.googleapis.com run.googleapis.com cloudbuild.googleapis.com artifactregistry.googleapis.com eventarc.googleapis.com compute.googleapis.com servicenetworking.googleapis.com pubsub.googleapis.com logging.googleapis.com

    このコマンドにより、次の API が有効になります。

    • Cloud Functions API
    • Cloud SQL Admin API
    • Cloud Run API
    • Cloud Build API
    • Artifact Registry API
    • Eventarc API
    • Compute Engine API
    • Service Networking API
    • Cloud Logging API
  7. ユーザーに、Cloud Functions 起動元 IAM ロールを追加します。

    ロールを追加する

Cloud SQL を設定する

Cloud SQL インスタンスを作成する

データベースの作成

コンソール

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. [quickstart-instance] を選択します。
  3. SQL ナビゲーション メニューから [データベース] を選択します。
  4. [データベースを作成] をクリックします。
    1. [データベースの作成] ダイアログ ボックスの [データベース名] フィールドに「quickstart-db」と入力します。文字セットと照合の値はそのままにします。
    2. [作成] をクリックします。

gcloud

gcloud sql databases create コマンドを実行してデータベースを作成します。

gcloud sql databases create quickstart-db --instance=quickstart-instance

ユーザーを作成する

コンソール

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. SQL ナビゲーション メニューから [ユーザー] を選択します。
  4. [ユーザー アカウントを追加] をクリックします。
    • quickstart-instance の [ユーザー アカウントを追加] ページで、次の情報を追加します。
      • [ユーザー名] フィールドに「quickstart-user」と入力します。
      • [パスワード] フィールドに、データベース ユーザーのパスワードを指定します。このクイックスタートの後半で使用するので、メモしておいてください。
  5. [追加] をクリックします。

gcloud

次のコマンドを実行する前に、次のように置き換えます。

  1. DB_PASS はデータベース ユーザーのパスワードに置き換えます。このクイックスタートの後半で使用するので、メモしておいてください。

gcloud sql users create コマンドを実行してリソースを作成します。

gcloud sql users create quickstart-user \
--instance=quickstart-instance \
--password=DB_PASS

Cloud SQL のユーザー名の長さの上限は、オンプレミス MySQL と同じで、MySQL 8.0 では 32 文字、それ以前のバージョンでは 16 文字です。

Cloud Functions サービス アカウントを構成する

Cloud Functions で使用するサービス アカウントが、Cloud SQL に接続する権限を持つ Cloud SQL Client ロールを持つように構成します。

コンソール

  1. Google Cloud コンソールの [IAM] ページに移動します。

    [IAM] に移動

  2. Compute Engine のデフォルトのサービス アカウントという名前のサービス アカウントの鉛筆アイコンをクリックします。
  3. [別のロールを追加] をクリックします。
  4. Cloud SQL クライアントという名前のロールを追加します。
  5. [保存] をクリックします。

gcloud

  1. 次の gcloud コマンドを実行して、プロジェクトのサービス アカウントのリストを取得します。
    gcloud iam service-accounts list
  2. Compute Engine サービス アカウントメールアドレスをコピーします。
  3. 次のコマンドを実行して、Cloud SQL クライアントのロールを Compute Engine サービス アカウントに追加します。
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/cloudsql.client"

関数を作成する

  1. Google Cloud コンソールで、[Cloud Functions] ページに移動します。

    Cloud Functions に移動

  2. [関数を作成] をクリックします。
  3. [環境] で [第 2 世代] を選択します。
  4. [関数名] フィールドに「quickstart-function」と入力します。
  5. [認証] リージョンで、[未認証の呼び出しを許可する] を選択します。
  6. [次へ] をクリックします。
  7. [ランタイム] メニューから、次のいずれかの言語を選択します。
  8. 言語 バージョン番号
    Go 1.20
    Java 17
    Node.js 18
    Python 3.10
  9. [ソースコード] メニューで、[インライン エディタ] が選択されていることを確認します。このステップでは、エディタで指定されているデフォルト関数を使用します。

関数をデプロイする

  1. Cloud Functions のページの下部にある [デプロイ] をクリックします。Google Cloud コンソールから、関数の詳細ページにリダイレクトします。
  2. 関数のデプロイが完了後、[URL] リンクをクリックすると、Hello, World! というメッセージがウェブブラウザに表示されます。

Cloud SQL サンプルアプリを関数としてデプロイする

Cloud SQL サンプルアプリを Cloud Functions の関数として構成し、デプロイします。まず、Cloud Shell を使用してサンプルアプリの構成とビルドを行います。次に、Cloud Functions を使用してサンプルアプリをデプロイします。

パブリック IP / プライベート IP のどちらを使用して Cloud SQL for MySQL インスタンスを作成するかに基づき、アプリの構成、ビルド、デプロイを行う方法が 2 つあります。

Cloud SQL サンプルアプリを構成する

サンプルアプリをデプロイする

サンプルを Cloud Functions にデプロイする手順は、Cloud SQL インスタンスに割り当てられた IP アドレスの種類によって異なります。

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の操作を行います。

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. quickstart-instance インスタンスを選択して [インスタンスの詳細] ページを開きます。
  3. ページ上部にあるアイコンバーで、[削除] をクリックします。
  4. [インスタンスの削除] ダイアログ ボックスで「quickstart-instance」と入力し、[削除] をクリックしてインスタンスを削除します。
  5. Google Cloud コンソールで、[Cloud Functions] ページに移動します。

    Cloud Functions に移動

  6. quickstart-function サービス名の横にあるチェックボックスをオンにします。
  7. [Cloud Functions] ページの上部にある [削除] をクリックします。

省略可能なクリーンアップ手順

Compute Engine サービス アカウントに割り当てた Cloud SQL クライアントのロールを使用しない場合は、削除できます。

  1. Google Cloud Console の [IAM] ページに移動します。

    [IAM] に移動

  2. Compute Engine のデフォルトのサービス アカウントという名前の IAM アカウントの編集アイコン(鉛筆の形)をクリックします。
  3. Cloud SQL クライアントのロールを削除します。
  4. [保存] をクリックします。

このクイックスタートで有効にした API を使用しない場合は、無効にすることができます。

  • このクイックスタートで有効にした API:
    • Compute Engine API
    • Cloud SQL Admin API
    • Cloud Run API
    • Container Registry API
    • Cloud Build API
  1. Google Cloud Console の [API] ページに移動します。

    [API] に移動

  2. 無効にする API を選択し、[API を無効にする] ボタンをクリックします。

次のステップ

必要に応じて、Cloud SQL インスタンスの作成で詳細をご確認ください。

Cloud SQL インスタンスの MySQL ユーザーデータベースの作成についても学習できます。

料金の詳細については、Cloud SQL for MySQL の料金をご覧ください。

以下の詳細を確認してください。

また、他の Google Cloud アプリケーションから Cloud SQL インスタンスへの接続についても確認できます。