このチュートリアルでは、Cloud Scheduler を使用して、Pub/Sub トピックをターゲットに設定し、Cloud Run のイベント ドリブン関数をトリガーする方法について説明します。Pub/Sub トピックのメッセージや Cloud Storage バケットの変更など、Google Cloud プロジェクト内のイベントに応答して関数を直接トリガーする場合は、イベント ドリブン関数を使用します。
関数の HTTP エンドポイントをターゲットにして、HTTP 関数をスケジュールすることもできます。関数で URL エンドポイントを使用し、Webhook などの HTTP リクエストに応答する必要がある場合は、HTTP 関数を使用します。詳細については、Cloud Run 関数のタイプをご覧ください。
Cloud Run 関数の実行のスケジューリングは、Cloud Scheduler の一般的なユースケースです。このチュートリアルの内容は次のとおりです。
- Pub/Sub トピックをサブスクライブする単純な Cloud Run 関数を作成する。
- Pub/Sub トピックにメッセージを公開する 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, Eventarc 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, Eventarc 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 起動元ロールを付与する必要があります。
Cloud Run のイベント ドリブン関数を作成する
Google Cloud プロジェクト内のイベント(この場合は Pub/Sub トピックに公開されたメッセージ)に応答して直接トリガーされるイベント ドリブン関数を作成します。
Google Cloud コンソールで、[Cloud Run 関数] ページに移動します。
[関数を作成] をクリックします。
[基本] セクションで、次の操作を行います。
- [環境] リストで [第 2 世代] を選択します。
- 関数の名前を入力します。
- [リージョン] リストでリージョンを選択します。
[トリガー] セクションで、次の操作を行います。
- [トリガーのタイプ] リストで [Cloud Pub/Sub] を選択します。
- [Cloud Pub/Sub トピック] リストで、既存のトピックを選択するか、新しいトピックを作成するには [トピックを作成する] をクリックします。トピックの名前は、次のステップで必要になるためメモしておきます。
[その他のオプション] をクリックします。
[Eventarc トリガー] パネルが開きます。
[Eventarc トリガー] パネルで、次の操作を行います。
- Pub/Sub サービスに、関数の呼び出しに必要な ID トークンの作成を許可するように求められたら、[付与] をクリックします。
- [サービス アカウント] リストで、先ほど作成したサービス アカウントを選択します。
- 他の値はデフォルトを使用します。
[トリガーを保存] をクリックします。
[Eventarc トリガー] パネルが閉じます。
その他のデフォルト値はそのままにして、[次へ] をクリックします。
デフォルトのランタイム言語とサンプルコードは変更しないでください。このコードではクラウド サービスを使用しないため、追加の権限を有効にする必要はありません。[デプロイ] をクリックします。
Cloud Scheduler ジョブを作成する
Pub/Sub ターゲットを使用して Cloud Scheduler ジョブを作成します。
Google Cloud コンソールで、[Cloud Scheduler] ページに移動します。
[ジョブを作成] をクリックします。
ジョブの名前を入力します。
[リージョン] リストでリージョンを選択します。
ジョブの頻度を unix-cron 形式で指定します。
30 16 * * 7
詳細については、cron ジョブの形式とタイムゾーンをご覧ください。
[タイムゾーン] リストで、タイムゾーンを選択します。
[続行] をクリックします。
[ターゲット タイプ] リストで、Pub/Sub を選択します。
先ほど作成した Pub/Sub トピックを選択します。
[メッセージ本文] フィールドに、Pub/Sub ターゲット トピックに送信する文字列を入力します。例: 「Hello world!」
[作成] をクリックします。
日曜日の 16:30 に Pub/Sub トピックにメッセージを送信する cron ジョブが作成されました。Cloud Run 関数は、このトピックにサブスクライブされています。
Cloud Scheduler ジョブを実行する
これで、作成したジョブを実行できるようになりました。
Google Cloud コンソールで、[Cloud Scheduler] ページに移動します。
作成したジョブのチェックボックスをオンにして、[強制実行] をクリックします。
初めて呼び出すときは、プロジェクトで作成された最初のジョブの構成と実行に数分かかることがあります。
ジョブが実行されると、[最後の実行のステータス] に
Success
が表示されます。
Cloud Run 関数で結果を確認する
Cloud Run 関数が cron ジョブによって正常にトリガーされ、実行されていることを確認できます。
Google Cloud コンソールで、[Cloud Run 関数] ページに移動します。
ファンクション名をクリックします。
[関数の詳細] ページが開き、[呼び出し回数/秒] グラフに関数の最初の呼び出しが表示されます。
[Logs] タブをクリックします。
Hello, YOUR_STRING!
のようなログエントリが表示されます。
クリーンアップ
このチュートリアルで使用したリソースについて、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 コンソールで、[Pub/Sub] ページに移動します。
トピックの横にあるチェックボックスをオンにします。
[
削除] をクリックして、削除を確定します。Google Cloud コンソールで、[Cloud Run 関数] ページに移動します。
ファンクションの横にあるチェックボックスをオンにします。
[
削除] をクリックして、削除を確定します。Google Cloud コンソールで、[サービス アカウント] ページに移動します。
作成したサービス アカウントの横にあるチェックボックスをオンにします。
[
削除] をクリックして、削除を確定します。