GSP234

概要
このハンズオンラボでは、Terraform で Cloud SQL インスタンスを作成し、Cloud SQL Proxy を設定して、MySQL クライアントとの接続をテストする方法について学びます。
目標
このラボでは、次の作業を行います。
- Cloud SQL インスタンスを作成する
- Cloud SQL Proxy をインストールする
- Cloud Shell を使用して MySQL クライアントとの接続をテストする
設定
[ラボを開始] ボタンをクリックする前に
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
- ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。
左側の [ラボの詳細] ペインには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
-
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] ペインでもユーザー名を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] ペインでもパスワードを確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
-
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
-
ウィンドウで次の操作を行います。
- Cloud Shell 情報ウィンドウで操作を進めます。
- Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、 が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
- [承認] をクリックします。
出力:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注: Google Cloud における gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
Cloud SQL
Cloud SQL は、Google Cloud 上のリレーショナル データベースの設定、維持、運用、管理を簡単にできるようにするフルマネージド データベース サービスです。MySQL または PostgreSQL で利用できます。
タスク 1. 必要なファイルをダウンロードする
- 以下のコマンドを使ってディレクトリを作成し、必要な Terraform スクリプトを Cloud Storage バケットから取得します。
mkdir sql-with-terraform
cd sql-with-terraform
gsutil cp -r gs://spls/gsp234/gsp234.zip .
- ダウンロードしたコンテンツを展開します。
unzip gsp234.zip
タスク 2. コードを理解する
cat main.tf
出力例:
...
resource "google_sql_database_instance" "master" {
name = "example-mysql-${random_id.name.hex}"
project = var.project
region = var.region
database_version = var.database_version
master_instance_name = var.master_instance_name
settings {
tier = var.tier
activation_policy = var.activation_policy
authorized_gae_applications = var.authorized_gae_applications
disk_autoresize = var.disk_autoresize
dynamic "backup_configuration" {
for_each = [var.backup_configuration]
content {
binary_log_enabled = lookup(backup_configuration.value, "binary_log_enabled", null)
enabled = lookup(backup_configuration.value, "enabled", null)
start_time = lookup(backup_configuration.value, "start_time", null)
}
}
dynamic "ip_configuration" {
for_each = [var.ip_configuration]
content {
ipv4_enabled = lookup(ip_configuration.value, "ipv4_enabled", true)
private_network = lookup(ip_configuration.value, "private_network", null)
require_ssl = lookup(ip_configuration.value, "require_ssl", null)
dynamic "authorized_networks" {
for_each = lookup(ip_configuration.value, "authorized_networks", [])
content {
expiration_time = lookup(authorized_networks.value, "expiration_time", null)
name = lookup(authorized_networks.value, "name", null)
value = lookup(authorized_networks.value, "value", null)
}
}
}
}
...
次に、このラボに割り当てられたプロジェクト ID とリージョンを使用するように、variables.tf
ファイルを更新します。
- Cloud Shell で [エディタを開く] をクリックします。
-
variables.tf
を開き、project
と region
の変数の値を次のように変更します。
完了したら変更を保存します。
タスク 3. Terraform を実行する
terraform init
コマンドを使用して、Terraform 構成ファイルを含む作業ディレクトリを初期化します。
このコマンドは、いくつかの初期化ステップを実行して、作業ディレクトリを使用できるように準備します。このコマンドは、いつでも何度でも安全に実行できます。実行すると、作業ディレクトリに構成の変更が反映されます。
-
terraform init
を実行します。
terraform init
terraform plan
コマンドを使用して実行プランを作成します。このコマンドは省略可能ですが、実行することをおすすめします。このコマンドを実行すると、明示的に無効にしない限り更新が行われ、構成ファイルに指定されている目的の状態を実現するために必要なアクションが特定されます。
これは、一連の変更に対する実行プランが想定どおりに行われるかどうかを、実際のリソースや状態に変更を加えることなく確認するのに便利です。たとえば、変更をバージョン管理に commit する前に terraform plan
を実行すると、予想どおりに機能するかどうかを事前に確認できます。
-
terraform plan
を実行します。
terraform plan -out=tfplan
オプションの -out
引数を使用すると、生成されたプランをファイルに保存できます。保存したファイルは、後で terraform apply
を使用して実行できます。
terraform apply
コマンドを使用して、構成を目的の状態にするために必要な変更を適用します。terraform plan
を実行した場合は、実行プランによって生成された一連の定義済みアクションを適用できます。
- 作成した Terraform プランを適用します。
terraform apply tfplan
処理が完了するまで、少し時間がかかります。完了すると、次のような出力が表示されます。
Apply complete! Resources: 5 added, 0 changed, 0 destroyed.
The state of your infrastructure has been saved to the path
below. This state is required to modify and destroy your
infrastructure, so keep it safe. To inspect the complete state
use the `terraform show` command.
State path: terraform.tfstate
Outputs:
generated_user_password =
instance_address = 35.232.204.44
instance_address_time_to_retire =
instance_name = example-mysql-6808
self_link = https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_ID]/instances/example-mysql-6808
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。
Terraform スクリプトを使用して Cloud SQL インスタンスを作成します。
タスク 4. Cloud SQL Proxy
プロキシの機能
Cloud SQL Proxy を使用すると、IP アドレスの許可リストへの登録や、SSL の構成を行わなくても、Cloud SQL の第 2 世代インスタンスに安全にアクセスできます。
Cloud SQL Proxy を使用して Cloud SQL インスタンスにアクセスする利点は以下のとおりです。
-
安全な接続: プロキシは、TLS 1.2 と 128 ビット AES 暗号を使用して、データベースとの間で送受信されるトラフィックを自動的に暗号化します。クライアントとサーバーの ID の確認には、SSL 証明書が使用されます。
-
簡単な接続管理: プロキシが Cloud SQL との認証を処理するので、静的な IP アドレスを提供する必要がなくなります。
注: Cloud SQL に App Engine のスタンダード環境またはフレキシブル環境から接続する場合は、プロキシを使用したり SSL を構成したりする必要はありません。これらの接続では、「組み込み」のプロキシ実装が自動的に使用されます。
Cloud SQL Proxy の仕組み
Cloud SQL Proxy は、プロキシと呼ばれるローカル クライアントをローカル環境で実行することによって機能します。アプリケーションは、データベースで使用されている標準のプロトコルを介してプロキシと通信します。プロキシは、セキュアなトンネルを使用して、サーバー上で実行されているコンパニオン プロセスと通信します。
次の図は、プロキシが Cloud SQL に接続する方法を示しています。

タスク 5. Cloud SQL Proxy をインストールする
- プロキシをダウンロードします。
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
- プロキシを実行可能にします。
chmod +x cloud_sql_proxy
プロキシは、環境の任意の場所にインストールできます。プロキシ バイナリの場所が、アプリケーションから受信するデータをリッスンする場所に影響することはありません。
プロキシの起動オプション
プロキシを起動するときに、次の情報をプロキシに提供します。
- 接続先の Cloud SQL インスタンス
- Cloud SQL へ送信するためにアプリケーションから受信するデータをリッスンする場所
- Cloud SQL に対するアプリケーションの認証に使用する認証情報を取得できる場所
指定したプロキシ スタートアップ オプションによって、TCP ポートと Unix ソケットのどちらでリッスンするのかが決まります。Unix ソケットでリッスンする場合は、選択した場所(通常は /cloudsql/
ディレクトリ)にソケットが作成されます。TCP の場合、プロキシはデフォルトで localhost
でリッスンします。
タスク 6. データベースへの接続をテストする
- まず、Cloud SQL インスタンスに対して Cloud SQL Proxy を実行します。
export GOOGLE_PROJECT=$(gcloud config get-value project)
MYSQL_DB_NAME=$(terraform output -json | jq -r '.instance_name.value')
MYSQL_CONN_NAME="${GOOGLE_PROJECT}:{{{project_0.default_region|REGION}}}:${MYSQL_DB_NAME}"
- 次のコマンドを実行します。
./cloud_sql_proxy -instances=${MYSQL_CONN_NAME}=tcp:3306
次に、プラス記号(+)のアイコンをクリックして新しい Cloud Shell タブを開きます。このシェルを使用して Cloud SQL Proxy に接続します。
-
sql-with-terraform
ディレクトリに移動します。
cd ~/sql-with-terraform
- 生成された MYSQL のパスワードを取得します。
echo MYSQL_PASSWORD=$(terraform output -json | jq -r '.generated_user_password.value')
- MySQL への接続をテストします。
mysql -udefault -p --host 127.0.0.1 default
-
プロンプトが表示されたら、上の出力で確認した MYSQL_PASSWORD
の値を入力し、Enter キーを押します。
-
MYSQL のコマンドラインにログインできるはずです。Ctrl+D キーを押して MYSQL を終了します。
最初の Cloud Shell タブに戻ると、Cloud SQL Proxy に対する接続のログが表示されています。
タスク 7. 理解度チェック
今回のラボで学習した内容の理解を深めていただくため、以下の多肢選択式問題を用意しました。正解を目指して頑張ってください。
お疲れさまでした
このラボでは、Terraform で Cloud SQL インスタンスを作成し、Cloud SQL Proxy を設定しました。その後、MySQL クライアントを使用して、Cloud SQL インスタンスと MySQL クライアントとの接続をテストしました。
次のステップと詳細情報
Terraform を使用して Google Cloud プロジェクトを管理する方法について読む
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 11 月 6 日
ラボの最終テスト日: 2024 年 11 月 6 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。