Cloud Run から Cloud SQL for MySQL に接続する
Google Cloud コンソールとクライアント アプリケーションを使用して、MySQL インスタンスに接続された Cloud Run にサンプルアプリをデプロイする方法を学習します。
すべてのステップを適切なタイミングで完了した場合、通常、このクイックスタートで作成されるリソースにかかる費用は 1 ドル(USD)未満です。
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、「ガイドを表示」をクリックしてください。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- このクイックスタートを完了するために必要な権限があることを確認します。
-
Cloud Run で Cloud SQL サンプルアプリを実行するために必要な Cloud APIs を有効にします。
Console
[API を有効にする] をクリックして、このクイックスタートで必要な API を有効にします。
これにより、次の API が有効になります。
- Compute Engine API
- Cloud SQL Admin API
- Cloud Run API
- Container Registry API
- Cloud Build API
- Service Networking API
gcloud
次のボタンをクリックして Cloud Shell を開きます。これにより、ブラウザから Google Cloud リソースにコマンドラインで直接アクセスできます。Cloud Shell を使用することで、このクイックスタートで紹介する
gcloudコマンドを実行できます。Cloud Shell を使用して次の
gcloudコマンドを実行します。gcloud services enable compute.googleapis.com sqladmin.googleapis.com run.googleapis.com \ containerregistry.googleapis.com cloudbuild.googleapis.com servicenetworking.googleapis.com
このコマンドにより、次の API が有効になります。
- Compute Engine API
- Cloud SQL Admin API
- Cloud Run API
- Container Registry API
- Cloud Build API
- Service Networking API
必要なロール
MySQL インスタンスに接続された Cloud Run にサンプルアプリをデプロイするために必要な権限を取得するには、使用するプロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
インスタンス、データベース、ユーザーの作成または削除: Cloud SQL 管理者ロール(
roles/cloudsql.admin)。 -
IAM サービス アカウントの作成または削除: サービス アカウント管理者ロール(
roles/iam.serviceAccountAdmin)。 -
接続を作成する:
-
Service Networking 管理者 (
roles/servicenetworking.networksAdmin)) -
Service Usage 管理者(
roles/serviceusage.serviceUsageAdmin)。
-
Service Networking 管理者 (
- オブジェクトとそのメタデータを表示する: Storage オブジェクト閲覧者(roles/storage.objectViewer)
- プロジェクトのポリシーを管理する権限を付与します。Project IAM 管理者(roles/resourcemanager.projectIamAdmin)。
- すべての Cloud Run リソースに対する読み取りと書き込みのアクセス権: Cloud Run デベロッパー(roles/run.developer)。
- Cloud Run ソースでデプロイされたリソースのデプロイと管理: Cloud Run ソース デベロッパー(roles/run.sourceDeveloper)。
- 一般公開を許可するには: Cloud Run 管理者(roles/run.admin)。
- サービス アカウントとしてオペレーションを実行する: サービス アカウント ユーザー(roles/iam.serviceAccountUser)。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
Cloud SQL の設定
Cloud SQL インスタンスを作成する
データベースの作成
データベースを作成する手順は次のとおりです。
コンソール
-
Google Cloud コンソールで、Cloud SQL の [インスタンス] ページに移動します。
- [
quickstart-instance] を選択します。 - SQL ナビゲーション メニューから [データベース] を選択します。
- [データベースを作成] をクリックします。
- [データベースの作成] ダイアログ ボックスの [データベース名] フィールドに「
quickstart-db」と入力します。文字セットと照合の値はそのままにします。 - [作成] をクリックします。
gcloud
gcloud
sql databases create コマンドを実行してデータベースを作成します。
gcloud sql databases create quickstart-db --instance=quickstart-instance
ユーザーを作成する
ユーザーを作成する手順は次のとおりです。
コンソール
-
Google Cloud コンソールで、Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- SQL ナビゲーション メニューから [ユーザー] を選択します。
- [ユーザー アカウントを追加] をクリックします。
- [ユーザー アカウントをインスタンス instance_name に追加] ページで、次の情報を追加します。
- ユーザー名:
quickstart-userに設定します。 - パスワード: データベース ユーザーのパスワードを指定します。 このクイックスタートの後半で使用するので、メモしておいてください。
- [ホスト名] セクションのデフォルト値は [すべてのホストを許可] です。つまり、ユーザーは任意の IP アドレスから接続できます。
必要に応じて、[IP アドレスまたはアドレス範囲でホストを制限する] を選択し、[ホスト] セクションに IP アドレスまたはアドレス範囲を入力します。これで、ユーザーは指定した IP アドレスからのみ接続できます。
- ユーザー名:
- [追加] をクリックします。
gcloud
次のコマンドを実行する前に、次のように置き換えます。
- PASSWORD はデータベース ユーザーのパスワードに置き換えます。このクイックスタートの後半で使用するので、メモしておいてください。
gcloud sql users create コマンドを実行してリソースを作成します。
gcloud sql users create quickstart-user \ --instance=quickstart-instance \ --password=PASSWORD
ユーザー名の長さの上限は、Cloud SQL とオンプレミス MySQL で同じです。MySQL 8.0 以降では 32 文字、それより前のバージョンでは 16 文字です。
サンプルアプリを Cloud Run にデプロイする
Cloud Run サービス アカウントを構成する
コンソール
-
Google Cloud コンソールで、[IAM サービス アカウント] ページに移動します。
- サービス アカウントの横にある [アクション] メニューをクリックし、[アクセスを管理] をクリックします。
- [別のロールを追加] をクリックし、[ロール] プルダウンで [Cloud SQL クライアント](
roles/cloudsql.client)を見つけて選択します。 - [別のロールを追加] をクリックし、[ロール] プルダウンで [ストレージ オブジェクト閲覧者](
roles/storage.ObjectViewer)を見つけて選択します。 - [保存] をクリックします。
gcloud
-
次の
gcloudコマンドを実行して、プロジェクトのサービス アカウントのリストを取得します。gcloud iam service-accounts list
- Compute Engine のデフォルト サービス アカウントのメールアドレスをコピーします。
- 次のコマンドを実行して、Cloud SQL クライアントのロールを Compute Engine のデフォルト サービス アカウントに追加します。
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/cloudsql.client"
- 次のコマンドを実行して、Storage オブジェクト閲覧者のロールを Compute Engine のデフォルト サービス アカウントに追加します。
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/storage.ObjectViewer"
Cloud SQL サンプルアプリを構成する
Cloud SQL インスタンス、データベース、クライアント権限を持つサービス アカウントを使用して、Cloud SQL インスタンスに接続するようにサンプル アプリケーションを構成できるようになりました。
サンプルアプリをデプロイする
サンプルを Cloud Run にデプロイする手順は、Cloud SQL インスタンスに割り当てられた IP アドレスのタイプによって異なります。
イメージの接続方法は、設定されている環境変数によって異なります。
- TCP を使用して接続するには、
INSTANCE_HOST環境変数の値を設定します。この接続方法は、環境変数として構成された証明書とポートを尊重します。 - Unix ソケットを使用して接続するには、
INSTANCE_UNIX_SOCKET環境変数の値を設定します。INSTANCE_HOST環境変数の値は設定しないでください。Unix ソケットは Java でネイティブにサポートされていません。アプリケーションが Java で記述されている場合は、Cloud SQL Java コネクタを使用する必要があります。
- Cloud SQL 言語コネクタのいずれかを使用して接続するには、
INSTANCE_CONNECTION_NAME環境変数とDB_IAM_HOST環境変数の値を設定します。次の環境変数の値は設定しないでください。
INSTANCE_HOSTINSTANCE_UNIX_SOCKETDB_PORTDB_ROOT_CERTDB_CERTDB_KEY
3307で Cloud SQL への接続を確立しているためです。
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、次の手順を実施します。
-
Google Cloud コンソールで、Cloud SQL の [インスタンス] ページに移動します。
quickstart-instanceインスタンスを選択して [インスタンスの詳細] ページを開きます。- ページ上部にあるアイコンバーで、[削除] をクリックします。
- [インスタンスの削除] ダイアログ ボックスで「
quickstart-instance」と入力し、[削除] をクリックしてインスタンスを削除します。 -
Google Cloud コンソールで、[Cloud Run] ページに移動します。
quickstart-serviceサービス名の横にあるチェックボックスをオンにします。- [Cloud Run] ページの上部にある [削除] をクリックします。
省略可能なクリーンアップ手順
Compute Engine サービス アカウントに割り当てた Cloud SQL クライアントのロールを使用しない場合は、削除できます。
-
Google Cloud コンソールで、[サービス アカウント] ページに移動します。
- Compute Engine のデフォルトのサービス アカウントという名前の IAM アカウントの編集アイコン(鉛筆の形)をクリックします。
- Cloud SQL クライアントのロールを削除します。
- [保存] をクリックします。
このクイックスタートで有効にした API を使用しない場合は、無効にすることができます。
- このクイックスタートで有効にした API:
- Compute Engine API
- Cloud SQL Admin API
- Cloud Run API
- Container Registry API
- Cloud Build API
Google Cloud コンソールで、[API] ページに移動します。
無効にする API を選択し、[API を無効にする] ボタンをクリックします。
次のステップ
必要に応じて、Cloud SQL インスタンスの作成で詳細をご確認ください。Cloud SQL インスタンスの MySQL ユーザーとデータベースの作成についても学習できます。
料金の詳細については、Cloud SQL for MySQL の料金をご覧ください。
以下の詳細を確認してください。
また、他の Google Cloud アプリケーションから Cloud SQL インスタンスへの接続についても確認できます。

