はじめに
今までCloud RunにWebアプリをデプロイして、動作確認をするとき、毎回「未認証の呼び出しを許可」にして、確認し終えたら「認証が必要」に切り替えていました。
Cloud Run プロキシを使用する方法があったので、試してみました。
今までの確認方法
Cloud Runにデプロイしたら、基本的に認証方法が「認証が必要」になると思います。
デプロイしたアプリを開くことができます。
ただこの方法ですと、「未認証の呼び出しを許可」にしている期間は誰でもアクセス可能になってしまいセキュリティ上あまりよろしくないです。
Cloud Run プロキシを使用する方法
Cloud Runサービスをローカルホストにプロキシ経由でアクセスすることができるようになります。
Cloud Shellで以下のコマンドを実行します。
gcloud run services proxy {サービス名} --port=8080
実行するとリージョン選択になるので、番号を入力します。
Please enter numeric choice or text value (must exactly match list item):
プロキシが実行状態になります。
Proxying to Cloud Run service [サービス名] in project [プロジェクトID] region [asia-northeast1]
http://127.0.0.1:8080 proxies to https://サービス名-an.a.run.app
Cloud Shellの「ポート8080でプレビュー」を押します。
Cloud Runのプロキシを使用することで、認証をかけたまま動作確認することが可能になります。
おわりに
Cloud Runのプロキシを使用して、認証ありのまま動作確認することができました。
Cloud Runは結構使用頻度が高いサービスなので、テストする際には有用な方法なのかなと思います。
参考
以下に参考として、WSLにgcloud CLIをインストールする方法やArtifact RegistryへのPush方法を記載しています。
Artifact RegistryへのPush
リポジトリの作成
ターゲットとなるリポジトリをArtifact Registry上に作成する。
gcloud CLIのインストール(WSL)
gcloud CLIインストール済みの方はスキップしてください。
gcloud CLIのインストール方法(WSL)
以下のコマンドを実行して、Google Cloud SDK のリポジトリをシステムに追加します。
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
リポジトリを追加したら、以下のコマンドでパッケージリストを更新します。
sudo apt-get update
最後に、google-cloud-cli
をインストールします。
sudo apt-get install google-cloud-cli
gcloud CLI 認証ヘルパー
gcloud CLI 認証情報ヘルパーは、プロジェクト リソースに安全で短期間のアクセス権を付与するものです。
ユーザー認証情報により認証を構成するコマンドを実行します。
gcloud auth login
認証ヘルパー構成に追加するリポジトリホスト名を追加します。
gcloud auth configure-docker HOSTNAME-LIST
asia-northeast1
の場合は、以下のようにします。
gcloud auth configure-docker asia-northeast1-docker.pkg.dev
Dockerイメージの作成
前回Fletで簡易アプリ作成で作成したDockerイメージを使用します。
その際にイメージ名を以下のような形式にする必要があります。
LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE
Pushする
以下コマンドでArtifact RegistryにPushします。
docker push LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/IMAGE
Cloud Runへデプロイ
Artifact RegistryにPushしたコンテナイメージを指定して、ポートを8550
にしてデプロイする。
ポートは、Fletで簡易アプリ作成で指定したポートを使用する。