【ITニュース解説】Part-43: How to Configure Cloud Run Jobs, Cloud Scheduler to trigger Screenshot job in GCP
2025年09月08日に「Dev.to」が公開したITニュース「Part-43: How to Configure Cloud Run Jobs, Cloud Scheduler to trigger Screenshot job in GCP」について初心者にもわかりやすく解説しています。
ITニュース概要
GCPのCloud Run JobsとCloud Schedulerを連携させる方法を解説。コンテナ化されたタスクをジョブとして実行し、指定したWebページのスクリーンショットを自動で取得してCloud Storageに保存する手順を、コマンドライン操作を交えて紹介する。(118文字)
ITニュース解説
システム開発では、Webサービスのように常時稼働するプログラムだけでなく、特定のタイミングで一度だけ実行したい処理や、決まったスケジュールで定期的に実行したい処理が数多く存在する。例えば、夜間にデータを集計するバッチ処理や、定期的に外部の情報を取得するタスクなどがそれに当たる。Google Cloud Platform(GCP)では、こうしたニーズに応えるためのサーバーレスサービスとして「Cloud Run Jobs」と「Cloud Scheduler」が提供されている。これらのサービスを連携させることで、指定したウェブサイトのスクリーンショットを自動で定期的に撮影し、クラウド上のストレージに保存する仕組みを構築することが可能である。この一連の流れを通して、サーバーレス環境でのタスク実行と自動化の基本を理解することができる。
まず、中核となるCloud Run Jobsについて説明する。これは、サーバーの構築や管理を一切意識することなく、コンテナ化されたプログラムを実行するためのサービスである。コンテナとは、アプリケーションとその実行に必要なライブラリや設定を一つにまとめたパッケージであり、どこでも同じように動作することが保証されている。Cloud Run Jobsは、このコンテナを実行し、中に含まれるプログラムの処理が完了すると自動的に停止する。常時リクエストを待ち受けるWebサーバーとは異なり、タスクが完了すればリソースを消費しなくなるため、バッチ処理や一時的な計算タスクに非常に適している。基本的な使い方としては、まず実行したいプログラムを含んだコンテナイメージを用意し、GCPコンソールからジョブを作成する。ジョブ作成時にコンテナイメージを指定し、実行ボタンを押すだけで、GCPが裏側で必要なリソースを確保し、タスクを実行してくれる。実行ログも確認できるため、処理が正しく行われたかを簡単に把握できる。
次に、より実践的な例として、ウェブサイトのスクリーンショットを撮影し、その画像をGCPのオブジェクトストレージサービスである「Cloud Storage」に保存するジョブを構築する。このジョブは、Cloud Run Jobsのコンテナ内からCloud Storageという別のGCPサービスにアクセスしてファイルを書き込む必要があるため、適切な権限管理が不可欠となる。ここで重要な役割を果たすのが「IAM(Identity and Access Management)サービスアカウント」である。サービスアカウントは、人間ではなく、プログラムやアプリケーションに紐づけるための特殊なアカウントであり、GCPリソースに対する操作権限を細かく制御するために使用される。今回のケースでは、まずスクリーンショット撮影ジョブ専用のサービスアカウントを作成する。そして、そのサービスアカウントに対して、「Cloud Storageにファイルを書き込む権限」を付与する。これにより、このサービスアカウントを割り当てられたCloud Run Jobは、許可された範囲でのみCloud Storageへのアクセスが可能となり、セキュリティを確保した上でサービス間連携を実現できる。
GCPの各種リソースは、Webブラウザ上のGUIコンソールから操作できるだけでなく、「gcloud」というコマンドラインツール(CLI)を使っても操作できる。CLIを利用することで、一連の操作をスクリプトとして記述し、作業の自動化や再現性の確保が容易になる。スクリーンショット撮影ジョブの作成も、gcloud run jobs create というコマンドで実行可能である。このコマンドでは、使用するコンテナイメージ、コンテナに渡す引数(今回はスクリーンショットを撮る対象のURL)、コンテナ内で使用する環境変数(保存先のCloud Storageバケット名など)、そして先ほど作成した権限付きのサービスアカウントといった、ジョブの動作に必要な詳細な設定をすべて指定できる。ジョブ作成後は、gcloud run jobs execute コマンドでジョブを手動実行できる。実行が完了すると、Cloud Storageバケット内に指定したウェブサイトのスクリーンショット画像が保存されていることを確認できる。このように、CLIを活用することで、複雑な設定を持つジョブも効率的に管理することが可能となる。
これまでの手順で、必要な時に手動でスクリーンショットを撮るジョブは完成したが、最終目標はこれを完全に自動化することである。そのために利用するのが「Cloud Scheduler」だ。Cloud Schedulerは、指定したスケジュールに基づいて様々な処理のきっかけ(トリガー)を生成する、フルマネージドのcronサービスである。Cloud Run Jobsと連携させることで、「毎日午前3時にこのジョブを実行する」「10分ごとにこのジョブを起動する」といった定期実行を簡単に設定できる。設定はGCPコンソールから行い、トリガーの作成画面で対象のCloud Run Jobを選択し、実行頻度を「cron式」と呼ばれる形式(例: */5 * * * * で5分ごと)で指定するだけである。この設定が完了すると、あとはCloud Schedulerが指定した時刻に自動でCloud Run Jobを起動してくれるため、人の手を介さずにタスクが定期的に実行される仕組みが完成する。しばらく時間を置いた後、Cloud Storageを確認すれば、スケジュール通りに新しいスクリーンショットが追加され続けていることがわかるだろう。
以上のように、Cloud Run Jobsはサーバーレスでバッチ処理やタスクを実行するための強力なサービスであり、IAMサービスアカウントを介して他のGCPサービスと安全に連携させることができる。さらに、Cloud Schedulerと組み合わせることで、これらのタスクを完全に自動化し、定期実行の仕組みを容易に構築できる。今回解説したスクリーンショット撮影ジョブは一例に過ぎないが、この技術の組み合わせは、データの定期的なバックアップ、レポートの自動生成、システムのヘルスチェックなど、システム開発における多岐にわたる自動化の場面で応用できる非常に重要な考え方である。これらのサービスを使いこなすことは、効率的で信頼性の高いシステムを構築するための第一歩となる。