Cloud Run 関数から Cloud SQL for PostgreSQL に接続する

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

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

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

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

    コンソール

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

    API を有効にする

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

    • Cloud Run 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 Run 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 Run 関数起動元の 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. [ユーザー アカウントを追加] をクリックします。
  5. quickstart-instance の [ユーザー アカウントを追加] ページで、次の情報を追加します。
    • [ユーザー名] フィールドに「quickstart-user」と入力します。
    • [パスワード] フィールドに、データベース ユーザーのパスワードを指定します。このクイックスタートの後半で使用するので、メモしておいてください。
  6. [追加] をクリックします。

gcloud

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

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

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

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

ユーザー名の長さの上限は、オンプレミス PostgreSQL の場合と同じです。

Cloud Run 関数のサービス アカウントを構成する

Cloud Run 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 Run 関数のページに移動します。

    Cloud Run 関数に移動

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

関数をデプロイする

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

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

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

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

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

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

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

クリーンアップ

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

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

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

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

    Cloud Run 関数に移動

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

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

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

  1. Google Cloud コンソールの [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 コンソールの [API] ページに移動します。

    [API] に移動

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

次のステップ

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

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

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

以下の詳細を確認する

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