このチュートリアルでは、Cloud Scheduler を使用して、HTTP エンドポイントをターゲットにすることにより、HTTP Cloud Run 関数をトリガーする方法について説明します。関数で URL エンドポイントを使用し、Webhook などの HTTP リクエストに応答する必要がある場合は、HTTP 関数を使用します。
また、Pub/Sub トピックのメッセージや Cloud Storage バケットの変更など、Google Cloud プロジェクト内のイベントに応答して関数を直接トリガーする必要がある場合は、イベント ドリブン関数をスケジュールできます。詳細については、Cloud Run 関数のタイプをご覧ください。
Cloud Run 関数の実行のスケジューリングは、Cloud Scheduler の一般的なユースケースです。このチュートリアルの内容は次のとおりです。
- シンプルな HTTP Cloud Run 関数を作成する。
- Cloud Scheduler ジョブを作成する。
- Cloud Scheduler ジョブを実行する。
- Cloud Run 関数が Cloud Scheduler ジョブによってトリガーされたことを確認する。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Cloud Run > Cloud Run Invoker role to the service account.
To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.
- Click Continue.
-
Click Done to finish creating the service account.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Cloud Run > Cloud Run Invoker role to the service account.
To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.
- Click Continue.
-
Click Done to finish creating the service account.
-
- デフォルトでは、Cloud Run 関数は、ランタイム サービス アカウントに自動的に作成されたデフォルトの Compute Engine サービス アカウントを使用します。このサービス アカウントを使用して、このチュートリアルを試すことができます。ただし、組織のポリシーの構成によっては、デフォルトのサービス アカウントにプロジェクトの編集者のロールが自動的に付与されない場合があります。その場合、次のロールをサービス アカウントに付与する必要があります。
- Artifact Registry 書き込み(
roles/artifactregistry.writer
) - ログ書き込み(
roles/logging.logWriter
) - Storage オブジェクト閲覧者(
roles/storage.objectViewer
)
- Artifact Registry 書き込み(
Cloud Run 関数(第 2 世代)では、基盤となる Cloud Run サービスを管理することで呼び出し権限を使用できるため、Cloud Run 起動元ロールを付与する必要があります。
HTTP Cloud Run 関数を作成する
Cloud Scheduler によってトリガーされる HTTP 関数を作成します。
Google Cloud コンソールで、[Cloud Run 関数] ページに移動します。
[関数を作成] をクリックします。
[基本] セクションで、次の操作を行います。
- [環境] リストで [第 2 世代] を選択します。
- 関数の名前を入力します。
- [リージョン] リストでリージョンを選択します。
[トリガー] セクションで、次の操作を行います。
- [トリガーのタイプ] リストで、[HTTPS] を選択します。
認証のために、[Require authentication] を選択します。
詳細については、呼び出しを認証する(第 2 世代)をご覧ください。
その他のデフォルト値はそのままにして、[次へ] をクリックします。
デフォルトのランタイム言語とサンプルコードは変更しないでください。このコードではクラウド サービスを使用しないため、追加の権限を有効にする必要はありません。[デプロイ] をクリックします。
関数が正常にデプロイされたら、[トリガー] タブをクリックします。
関数の HTTP URL をコピーします。
Cloud Scheduler ジョブを作成する
HTTP を使用してアクションをトリガーする Cloud Scheduler ジョブを作成します。
Google Cloud コンソールで、[Cloud Scheduler] ページに移動します。
[ジョブを作成] をクリックします。
ジョブの名前を入力します。
[リージョン] リストでリージョンを選択します。
ジョブの頻度を unix-cron 形式で指定します。
30 16 * * 7
詳細については、cron ジョブの形式とタイムゾーンをご覧ください。
[タイムゾーン] リストで、タイムゾーンを選択します。
[続行] をクリックします。
[ターゲット タイプ] リストで、HTTP を選択します。
[URL] フィールドに、先ほどコピーした関数の HTTP URL を入力します。
[Auth ヘッダー] リストで、[OIDC トークンを追加] を選択します。
[サービス アカウント] リストで、先ほど作成したサービス アカウントを選択します。
[オーディエンス] フィールドに、先ほどコピーした関数の HTTP URL を入力します。
[作成] をクリックします。
日曜日の 16:30 に Cloud Run 関数を実行する 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://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME
のようなログエントリが表示されます。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトを削除
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
チュートリアル リソースの削除
Google Cloud コンソールで、[Cloud Scheduler] ページに移動します。
ジョブの横のチェックボックスを選択します。
[
削除] をクリックして、削除を確定します。Google Cloud コンソールで、[Cloud Run 関数] ページに移動します。
ファンクションの横にあるチェックボックスをオンにします。
[
削除] をクリックして、削除を確定します。Google Cloud コンソールで、[サービス アカウント] ページに移動します。
作成したサービス アカウントの横にあるチェックボックスをオンにします。
[
削除] をクリックして、削除を確定します。