このチュートリアルでは、Cloud Scheduler で HTTP エンドポイントをターゲットにして、HTTP Cloud Run 関数をスケジュールする方法について説明します。関数で URL エンドポイントを使用し、Webhook などの HTTP リクエストに応答する必要がある場合は、HTTP 関数を使用します。
または、CloudEvents 関数を作成した場合は、Eventarc イベント トリガーを使用して、プロジェクト内のイベントに応答するように関数をスケジュール設定します。Eventarc は、Pub/Sub トピックのメッセージ、Cloud Storage バケットの変更などをトリガーできます。詳細については、Cloud Run 関数のタイプをご覧ください。
Cloud Run 関数の実行のスケジューリングは、Cloud Scheduler の一般的なユースケースです。このチュートリアルの内容は次のとおりです。
HTTP Cloud Run 関数を作成する
Cloud Scheduler によってトリガーされる HTTP 関数を作成します。
Google Cloud コンソールで、[Cloud Run] ページに移動します。
[関数を作成] をクリックします。
[構成] セクションで、次の操作を行います。
- [サービス名] フィールドに、関数の名前を入力します。
- [リージョン] リストでリージョンを選択します。
- デフォルトのランタイム言語は変更しないでください。
認証のために、[Require authentication] を選択します。
ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、限定公開サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。
詳細については、呼び出しの認証をご覧ください。
その他のデフォルト値はそのままにして、[作成] をクリックします。
関数の HTTP URL をコピーします。
Terraform を使用して Cloud Run functions をデプロイする方法など、詳細については、Cloud Run functions の関数をデプロイするをご覧ください。
Cloud Scheduler ジョブを作成する
HTTP を使用してアクションをトリガーする Cloud Scheduler ジョブを作成します。
Google Cloud コンソールで [Cloud Scheduler] ページに移動します。
[ジョブを作成] をクリックします。
ジョブの名前を入力します。
[リージョン] リストでリージョンを選択します。
ジョブの頻度を unix-cron 形式で指定します。
30 16 * * 7
詳細については、cron ジョブの形式とタイムゾーンをご覧ください。
[タイムゾーン] リストで、タイムゾーンを選択します。
[続行] をクリックします。
[ターゲット タイプ] リストで、[HTTP] を選択します。
[URL] フィールドに、先ほどコピーした関数の HTTP URL を入力します。
[Auth ヘッダー] リストで、[OIDC トークンを追加] を選択します。
[サービス アカウント] リストで、以前に作成したサービス アカウントを選択します。
[Audience] フィールドに、先ほどコピーした関数の HTTP URL を入力します。
[作成] をクリックします。
日曜日の 16:30 に Cloud Run functions の関数を実行する cron ジョブが作成されました。
Cloud Scheduler ジョブを実行する
作成したジョブを実行できるようになりました。
Google Cloud コンソールで、[Cloud Scheduler] ページに移動します。
作成したジョブのチェックボックスをオンにして、[強制実行] をクリックします。
初めて呼び出すときは、プロジェクトで作成された最初のジョブの構成と実行に数分かかることがあります。
ジョブの実行後、[最後の実行のステータス] に
Success
が表示されます。
Cloud Run 関数で結果を確認する
Cloud Run 関数が cron ジョブによって正常にトリガーされ、実行されていることを確認できます。
Google Cloud コンソールで、[Cloud Run] ページに移動します。
[サービスをフィルタ > デプロイタイプ > 関数] を選択します。これにより、サービスリストがフィルタされ、関数のみが表示されます。
ファンクション名をクリックします。
[サービスの詳細] ページが開き、サービス指標が表示されます。
[Logs] タブをクリックします。
次のようなログエントリが表示されます。
POST 200 146 B 5 ms Google-Cloud-Scheduler https://FUNCTION_NAME