Cloud Functions のイベント ドリブン関数のスケジュールを設定する


このチュートリアルでは、Cloud Scheduler を使用して、Pub/Sub トピックをターゲットに設定し、Cloud Functions のイベント ドリブン関数をトリガーする方法について説明します。Pub/Sub トピックのメッセージや Cloud Storage バケットの変更など、Google Cloud プロジェクト内のイベントに応答して関数を直接トリガーする場合は、イベント ドリブン関数を使用します。

関数の HTTP エンドポイントをターゲットにして、HTTP 関数をスケジュールすることもできます。関数で URL エンドポイントを使用し、Webhook などの HTTP リクエストに応答する必要がある場合は、HTTP 関数を使用します。詳細については、Cloud Functions の関数のタイプをご覧ください。

Cloud Functions の関数の実行のスケジューリングは、Cloud Scheduler の一般的なユースケースです。このチュートリアルの内容は次のとおりです。

  1. Pub/Sub トピックをサブスクライブする単純な Cloud Functions の関数を作成する。
  2. Pub/Sub トピックにメッセージを公開する Cloud Scheduler ジョブを作成する。
  3. Cloud Scheduler ジョブを実行する。
  4. Cloud Functions の関数が Cloud Scheduler ジョブによってトリガーされたことを確認する。

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

始める前に

  1. 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.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc API を有効にします。

    API を有効にする

  5. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. 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.

    4. Click Create and continue.
    5. 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.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  6. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  7. Google Cloud プロジェクトで課金が有効になっていることを確認します

  8. Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc API を有効にします。

    API を有効にする

  9. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. 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.

    4. Click Create and continue.
    5. 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.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  10. Cloud Functions(第 2 世代)では、基盤となる Cloud Run サービスを管理することで呼び出し権限を使用できるため、Cloud Run 起動元ロールを付与する必要があります。

  11. デフォルトでは、Cloud Functions はランタイム サービス アカウントに自動的に作成されたデフォルトの Compute Engine サービス アカウントを使用します。このサービス アカウントを使用して、このチュートリアルを試すことができます。ただし、組織のポリシーの構成によっては、デフォルトのサービス アカウントにプロジェクトの編集者のロールが自動的に付与されない場合があります。その場合、次のロールをサービス アカウントに付与する必要があります。
    1. Artifact Registry 書き込み(roles/artifactregistry.writer
    2. ログ書き込み(roles/logging.logWriter
    3. Storage オブジェクト閲覧者(roles/storage.objectViewer

Cloud Functions のイベント ドリブン関数を作成する

Google Cloud プロジェクト内のイベント(この場合は Pub/Sub トピックに公開されたメッセージ)に応答して直接トリガーされるイベント ドリブン関数を作成します。

  1. Google Cloud コンソールで、[Cloud Functions] ページに移動します。

    Cloud Functions に移動

  2. [関数を作成] をクリックします。

  3. [基本] セクションで、次の操作を行います。

    1. [環境] リストで [第 2 世代] を選択します。
    2. 関数の名前を入力します。
    3. [リージョン] リストでリージョンを選択します。
  4. [トリガー] セクションで、次の操作を行います。

    1. [トリガーのタイプ] リストで [Cloud Pub/Sub] を選択します。
    2. [Cloud Pub/Sub トピック] リストで、既存のトピックを選択するか、新しいトピックを作成するには [トピックを作成する] をクリックします。トピックの名前は、次のステップで必要になるためメモしておきます。
    3. [その他のオプション] をクリックします。

      [Eventarc トリガー] パネルが開きます。

  5. [Eventarc トリガー] パネルで、次の操作を行います。

    1. Pub/Sub サービスに、関数の呼び出しに必要な ID トークンの作成を許可するように求められたら、[付与] をクリックします。
    2. [サービス アカウント] リストで、先ほど作成したサービス アカウントを選択します。
    3. 他の値はデフォルトを使用します。
    4. [トリガーを保存] をクリックします。

      [Eventarc トリガー] パネルが閉じます。

  6. その他のデフォルト値はそのままにして、[次へ] をクリックします。

  7. デフォルトのランタイム言語とサンプルコードは変更しないでください。このコードではクラウド サービスを使用しないため、追加の権限を有効にする必要はありません。[デプロイ] をクリックします。

Cloud Scheduler ジョブを作成する

Pub/Sub ターゲットを使用して Cloud Scheduler ジョブを作成します。

  1. Google Cloud コンソールで、[Cloud Scheduler] ページに移動します。

    Cloud Scheduler に移動

  2. [ジョブを作成] をクリックします。

  3. ジョブの名前を入力します。

  4. [リージョン] リストでリージョンを選択します。

  5. ジョブの頻度を unix-cron 形式で指定します。

    30 16 * * 7
    

    詳細については、cron ジョブの形式とタイムゾーンをご覧ください。

  6. [タイムゾーン] リストで、タイムゾーンを選択します。

  7. [続行] をクリックします。

  8. [ターゲット タイプ] リストで、Pub/Sub を選択します。

  9. 先ほど作成した Pub/Sub トピックを選択します。

  10. [メッセージ本文] フィールドに、Pub/Sub ターゲット トピックに送信する文字列を入力します。例: 「Hello world!」

  11. [作成] をクリックします。

日曜日の 16:30 に Pub/Sub トピックにメッセージを送信する cron ジョブが作成されました。Cloud Functions の関数は、このトピックにサブスクライブされています。

Cloud Scheduler ジョブを実行する

これで、作成したジョブを実行できるようになりました。

  1. Google Cloud コンソールで、[Cloud Scheduler] ページに移動します。

    Cloud Scheduler に移動

  2. 作成したジョブのチェックボックスをオンにして、[強制実行] をクリックします。

    初めて呼び出すときは、プロジェクトで作成された最初のジョブの構成と実行に数分かかることがあります。

  3. ジョブが実行されると、[最後の実行のステータス] に Success が表示されます。

Cloud Functions で結果を確認する

Cloud Functions の関数が cron ジョブによって正常にトリガーされ、実行されていることを確認できます。

  1. Google Cloud コンソールで、[Cloud Functions] ページに移動します。

    Cloud Functions に移動

  2. ファンクション名をクリックします。

    [関数の詳細] ページが開き、[呼び出し回数/秒] グラフに関数の最初の呼び出しが表示されます。

  3. [Logs] タブをクリックします。

    Hello, YOUR_STRING! のようなログエントリが表示されます。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトの削除

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

チュートリアル リソースの削除

  1. Google Cloud コンソールで、[Cloud Scheduler] ページに移動します。

    Cloud Scheduler に移動

  2. ジョブの横のチェックボックスを選択します。

  3. [ 削除] をクリックして、削除を確定します。

  4. Google Cloud コンソールで、[Pub/Sub] ページに移動します。

    [Pub/Sub] に移動

  5. トピックの横にあるチェックボックスをオンにします。

  6. [ 削除] をクリックして、削除を確定します。

  7. Google Cloud コンソールで、[Cloud Functions] ページに移動します。

    Cloud Functions に移動

  8. ファンクションの横にあるチェックボックスをオンにします。

  9. [ 削除] をクリックして、削除を確定します。

  10. Google Cloud コンソールで、[サービス アカウント] ページに移動します。

    [サービス アカウント] に移動

  11. 作成したサービス アカウントの横にあるチェックボックスをオンにします。

  12. [ 削除] をクリックして、削除を確定します。

次のステップ