Cloud Run Job はリスニングポートを持たず、外部からのインバウンド接続を受け付けることができません。 この制約はバッチ処理や CI ジョブといったワンショットなタスクでは問題になりませんが、Job 内でブラウザのリモート表示や映像ストリーミングのような双方向通信が必要な場面では課題が生じます。直感的な解決策として Job の中でも HTTP サーバを立ち上げるという発想が浮かぶかもしれませんが、Cloud Run Job のコンテナには外部からアクセスできるエンドポイント(URL)が割り当てられないため、ポートをバインドしてもブラウザからそのポートに到達できません。そこで Job 側から専用の中継サーバへアウトバウンド接続を確立させ、中継サーバがブラウザとの通信を橋渡しするアーキテクチャ(以後 Relay パターンと呼ぶ)を取ります。今回のブログでは、Job 内で動作するブラウザの画面をリモートストリーミングするユースケース(一時的に仮想ブラウザを起動して完了後は破棄したい)を例に、Relay パターンで Cloud Run Job の WebSocket 双方向通信を実現する方法について紹介したいと思います。
- Published on


