1. 概要
このラボでは、Cloud Run ジョブを使用して AlloyDB データベースを作成します。プライベート サービス アクセスとサーバーレス VPC アクセスを構成して、プライベート IP を使用して Cloud Run ジョブと AlloyDB データベース間の接続を有効にします。
学習内容
このラボでは、次の方法について学びます。
- AlloyDB クラスタとインスタンスを設定する
- Cloud Run ジョブをデプロイして AlloyDB データベースを作成する
2. 設定と要件
Cloud プロジェクトのセットアップ
- Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。



- プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。この設定はいつでも変更できます。
- プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は
PROJECT_IDと識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。 - なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
- 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクト全体を削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。
環境設定
検索バーの右にあるアイコンをクリックして、Cloud Shell をアクティブにします。

サービス API を有効にするには、次のコマンドをコピーしてターミナルに貼り付け、Enter キーを押します。
gcloud services enable \
alloydb.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com \
vpcaccess.googleapis.com \
compute.googleapis.com \
servicenetworking.googleapis.com \
--quiet
環境変数を設定します。
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
export DB_DATABASE=test
export DB_USER=postgres
export DB_PASSWORD=password123
export REGION=us-central1
export CLUSTER=test-cluster
export INSTANCE=test-instance
export VPC_CONNECTOR=vpcconnector
3. AlloyDB クラスタの設定と作成
設定に必要な権限を設定します。これにより、Cloud Run ジョブが AlloyDB データベースに接続できるようになります。
gcloud projects add-iam-policy-binding $PROJECT_NAME \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/alloydb.client"
プライベート サービス アクセスを構成する
プライベート サービス アクセスは、お客様の VPC ネットワークと、基盤となる Google Cloud の VPC ネットワーク(AlloyDB リソース(クラスタとインスタンス)が存在するネットワーク)との間の VPC ピアリング接続として実装されます。プライベート接続を使用すると、VPC ネットワーク内のリソースは、アクセスする AlloyDB リソースと内部 IP アドレスを使用して排他的に通信できます。VPC ネットワーク内のリソースは、AlloyDB リソースにアクセスするためにインターネット アクセスや外部 IP アドレスを必要としません。
AlloyDB と同じクラウド プロジェクトにある VPC ネットワークにプライベート サービス アクセス構成を作成するには、次の 2 つの操作を行います。
VPC ネットワークに割り振られた IP アドレス範囲を作成します。
gcloud compute addresses create google-managed-services-default \
--global \
--purpose=VPC_PEERING \
--prefix-length=20 \
--network=projects/$PROJECT_ID/global/networks/default
VPC ネットワークと基盤となる Google Cloud VPC ネットワークの間にプライベート接続を作成します。このステップには約 2 分かかります。
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=google-managed-services-default \
--network=default \
--project=$PROJECT_ID
AlloyDB クラスタを作成します。
gcloud beta alloydb clusters create $CLUSTER \
--password=$DB_PASSWORD \
--network=default \
--region=$REGION \
--project=$PROJECT_NAME
gcloud beta alloydb clusters describe $CLUSTER --region=$REGION
AlloyDB インスタンスを作成します。このステップには約 10 分かかります。
gcloud beta alloydb instances create $INSTANCE \
--cluster=$CLUSTER \
--region=$REGION \
--instance-type=PRIMARY \
--cpu-count=2 \
--project=$PROJECT_NAME
gcloud beta alloydb instances describe $INSTANCE \
--cluster=$CLUSTER \
--region $REGION
Cloud コンソールで作成したクラスタを確認します。

データベースの IP アドレスを変数に保存します。」」
export DB_HOST=$(gcloud beta alloydb instances describe $INSTANCE \
--cluster=$CLUSTER \
--region=$REGION \
--format=json | jq \
--raw-output ".ipAddress")
echo "DB_HOST=$DB_HOST"
4. Cloud Run Job のコードを確認する
AlloyDB データベースの作成方法は複数あります。1 つは、Compute Engine VM を作成し、psql クライアントをインストールしてから、インスタンスに接続してデータベースを作成する方法です。このアプローチについて詳しくは、こちらをご覧ください。
このラボでは、Cloud Run ジョブを使用して新しい AlloyDB データベースを作成します。
以下のファイルをご確認ください。
- Dockerfile - 必要な依存関係(postgresql-client)をインストールします
- script.sh - コマンドライン ユーティリティを使用してデータベースを作成します
Cloud Shell で、新しいフォルダを作成します。
mkdir ~/alloy-db-cloud-run-job
cd ~/alloy-db-cloud-run-job
新しいファイル Dockerfile を作成します。
cat > Dockerfile <<EOF
FROM ubuntu:latest
RUN apt-get update && apt-get install -y postgresql-client && apt-get clean
COPY script.sh /
RUN chmod +x /script.sh
CMD ["/script.sh"]
ENTRYPOINT ["/bin/bash"]
EOF
次の内容の新しいファイル script.sh を作成します。
echo "Connecting to $DB_HOST"
createdb -h $DB_HOST -p 5432 $PGDB
echo "Created $PGDB database"
psql -h $DB_HOST -l
script.sh の権限を変更します。
chmod +x script.sh
5. Cloud Run ジョブをデプロイする
サーバーレス VPC アクセスを構成します。これにより、Cloud Run ジョブは内部/プライベート IP を使用して AlloyDB クラスタと通信できます。このステップには約 2 分かかります。
gcloud compute networks vpc-access connectors create ${VPC_CONNECTOR} \
--region=${REGION} \
--range=10.8.0.0/28
コンテナ イメージを保存する Artifact Registry リポジトリを作成します。
gcloud artifacts repositories create db-job-repository \
--repository-format=docker \
--location=$REGION
コンテナ イメージをビルドして Artifact Registry に公開します。
gcloud builds submit -t $REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest
Cloud Run ジョブをデプロイします。
gcloud beta run jobs create db-job \
--image=$REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest \
--set-env-vars DB_HOST=$DB_HOST \
--set-env-vars PGUSER=$DB_USER \
--set-env-vars PGPASSWORD=$DB_PASSWORD \
--set-env-vars PGDB=$DB_DATABASE \
--vpc-connector $VPC_CONNECTOR \
--region $REGION
ジョブの作成に使用されたフラグを確認します。
--vpc-connector - Cloud Run ジョブは VPC コネクタを使用して AlloyDB プライベート IP アドレスにアクセスします。
Cloud コンソールで作成したジョブを確認します。

Cloud Run ジョブを実行して test データベースを作成します。
gcloud beta run jobs execute db-job --region $REGION
Cloud Console で Cloud Run ジョブのログを確認します。

6. 完了
お疲れさまでした。これでこの Codelab は終了です。
学習した内容
- AlloyDB クラスタとインスタンスを作成する方法
- Cloud Run ジョブを使用して AlloyDB データベースを作成する方法
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。