Cloud Run Jobs
Published 2022/12/15はじめまして、Arganoの渡部(@nabeix)です。 Arganoの技術ブログ第一弾としてGCPのCloud Run Jobsの機能と、実運用する際のちょっとしたポイントを解説したいと思います。 ※ 記事執筆時点でpre-GAEとして公開している機能を含みます Cloud Run Jobs とは Cloud Run JobsとはGCPのコンテナ実行サービスであるCloud Runのジョブ実行環境です。 Cloud RunはWebサーバの実行環境のみでしたが、このCloud Run Jobsの登場によりバックグラウンドでのタスク処理を行う仕組みを気軽に構築できるようになりました。 定期実行を行う場合はCloud Schedulerを用いてスケジューリングします。 ジョブの実行時間は最大1時間となっており、この点を考慮したロジック実装が必要となります、 1時間以上掛かるジョブの実行が必要な場合は以下の方法を検討してみても良いと思います。 1時間以上の処理を実行する方法 1回のジョブ実行時間を1時間以内に収めつつ、自身のジョブを再帰的に呼び出すことで結果として1時間以上のタスク処理を実現しました。 ジョブを呼び出しはWeb APIによって行います。 エンドポイントは以下の形式のものが割り当てられており、POSTメソッドを用いてコールします。 https://{region}-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/{project-name}/jobs/{job-name}:run 参照: ジョブを実行する このときあ、アクセストークンが必要ですが、このトークンはメタデータサーバから取得します。 メタデータサーバとは、GCEやCloud Run内部から利用できるGCPプロジェクトの各種認証情報を取得できるサーバです。 以下のようにリクエストを送ることで、アクセストークンを取得できます。 function getToken() { $tokenUrl = 'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token'; $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_URL => $tokenUrl, CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'Metadata-Flavor: Google'], CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, )); $res = curl_exec($ch); curl_close($ch); $decoded = json_decode($res); return $decoded->access_token; } 取得したトークンを利用してジョブのエンドポイントにPOSTリクエストを送ることで、ジョブを再実行することができます。
Continue reading ↦