【Cloud Run】固定IPアドレスを使って、AWS RDSインスタンスに接続する

cloudrun_service AWS
cloudrun_service

概要

固定IPアドレスを使って、GCPのCloud Runから、AWSのRDSインスタンスへ接続する必要があったので、その作業ログを記載します。

設定が必要なサービスは下記です。

  • Cloud NAT
  • Cloud Routor
  • IPアドレス
  • サブネット(VPCネットワーク)
  • サーバーレスVPCアクセス
  • Cloud Run

作業

事前準備

gitにCloud Runで起動できるテンプレートをあげていますので、こちらをcloneしてください。

その後手順に従って、環境を作成してください。

GitHub - yoshi8100/cloudrun_to_rds: Cloud RunのサービスからAWSのRDSへの接続確認用テンプレート
Cloud RunのサービスからAWSのRDSへの接続確認用テンプレート. Contribute to yoshi8100/cloudrun_to_rds development by creating an account on GitHub.

サブネットを作成

サーバーレス VPC アクセス コネクタ用の VPC にサブネットを作成します。

今回は特にVPCを作らなくて良いので、defaultを使います。

$ gcloud compute networks subnets create sabnet-name \
--range=172.16.0.0/28 \
--network=default \
--region=asia-northeast1

この時、サブネットのIPのレンジは、xxx.xx.x.x/28である必要があるので注意です。

もし、サブネットを作成し間違えた場合、こちらのコマンドでサブネットを削除してください。

$ gcloud compute networks subnets delete sabnet-name --region=asia-northeast1

IPアドレスを予約

固定するIPアドレスを予約します。

「外部静的IPアドレスを予約」をクリックします。

詳細の設定は、下記のように設定していきます。

サーバーレス VPC アクセス コネクタを作成

先ほど作成したサブネットワークを使って、サーバーレス VPC アクセス コネクタを作成します。

$ gcloud compute networks vpc-access connectors create vpc-connector \
  --region=asia-northeast1 \
  --subnet-project=my-blog \
  --subnet=sabnet-name

上記コマンドを実行したら、このようなコネクタが作成されたら次に進みます。

Cloud Routorを作成

この後、Cloud NATで繋げる予定のCloud Routorを作成していきます。

カスタム範囲のIPアドレスで、先ほど作成したIPアドレスをカスタムルートに追加してください。

Cloud NATを作成

先ほど作成したCloud Routorを使って、Cloud NATゲートウェイを作成します。

Container Resitoryにイメージをビルド

githubからcloneしたリポジトリを使って、Container Resitoryにビルドしていきます。

まずは、ローカルに落としたcloud_run_rdsリポジトリをCloud Shellを使って、GCP上にアップロードします。

その後、下記コマンドを叩いて許可を承認し、操作するプロジェクトを設定します。

$ gcloud auth login

$ gcloud config set project [PROJECT_ID]

こちらのコマンドで現在のディレクトリにある Dockerfile を使用してイメージをビルドします。

$ docker build -t cloud_run_rds:latest .

Cloud Run サービスをデプロイ

VPC コネクタを使用してすべての下り(外向き)トラフィックをルーティングする Cloud Run サービスをデプロイまたは更新します。

$ gcloud run deploy cloudrun-rds \
   --image=gcr.io/cloudrun-rds/{ソースコードをアップロードしたContainerResistoryのid} \
   --vpc-connector=vpc-connector
   --vpc-egress=all-traffic

接続確認

Cloud Run サービスをこのように作成されていたら、成功です。

接続確認は、URLをクリックしてページ遷移をして成功のメッセージが表示されるかを確認します。

今回のソースでは、Successfully connected to the database.と表示されればOKです。

まとめ

いかがでしたでしょうか。

今回は、Cloud Runを使ってAWSのRDSインスタンスに接続してみました。

外部サービスとの接続には、ネットワーク周りの知識が必要になってきます。

この辺りは地道に学んでいきましょう。

また良いTipsを見つけたら共有していこうと思います!

コメント

タイトルとURLをコピーしました