Cloud Functions のスケジュールを設定する

このチュートリアルでは、Cloud Scheduler と Pub/Sub を使用して Cloud Function をトリガーする方法を説明します。Cloud ファンクションの実行のスケジュールは、Cloud Scheduler の一般的なユースケースです。このチュートリアルでは、次のことを行います。

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

準備

このチュートリアルは、Cloud Scheduler のクイックスタートを完了していることを前提としています。次のツールとリソースを利用できる必要があります。

  • 課金を有効にした Google Cloud プロジェクト

  • プロジェクトで有効になっている Cloud Scheduler API および Pub/Sub API。 Cloud Functions API は、チュートリアルの中で有効にします。

費用

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

  • Cloud Functions
  • Pub/Sub
  • Cloud Scheduler

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

トリガーを使用して Cloud Functions の関数を作成する

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

    Cloud Functions に移動

  2. プロンプトが表示されたら、[API を有効にする] をクリックします。

  3. [ファンクションを作成] をクリックします。API を有効にするよう求めるメッセージが表示されたら、[有効にする] をクリックして API を有効にします。

  4. [基本] セクションで、第 2 世代の環境を選択し、ファンクションの名前を入力して、リージョンを選択します。

  5. [トリガー] セクションの [トリガーのタイプ] で、[Cloud Pub/Sub] を選択して [その他のオプション] をクリックします。[Eventarc トリガー] パネルが開きます。[必要な API を有効にする] よう求めるプロンプトが表示されたら、[有効にする] をクリックします。

  6. [Eventarc トリガー] パネルで、最初のいくつかのフィールドが次のように入力されていることを確認し、必要に応じて入力します。

    • トリガーのタイプ: Google ソース
    • イベント プロバイダ: Cloud Pub/Sub
    • イベント: google.cloud.pubsub.topic.v1.messagePublished
  7. [Cloud Pub/Sub トピックを選択してください] フィールドで、既存のトピックを選択するか、[トピックを作成] をクリックして新しいトピックを作成します。関数はこのトピックをサブスクライブします。トピックの名前は、後で必要になるためメモしておきます。

    • プロンプトが表示されたら [付与] をクリックし、Pub/Sub サービスが関数の呼び出しに必要な ID トークンを作成できるようにします。
  8. [サービス アカウント] フィールドで [新しいサービス アカウントを作成] をクリックします。

    1. サービス アカウントの名前を入力して、[作成] をクリックします。 Eventarc はこのサービス アカウントを使用して、Pub/Sub サービスから ID トークンを使用してファクションを呼び出します。

    2. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[Cloud Run 起動元] ロールを選択します。これにより、サービス アカウントに第 2 世代のファクションを呼び出す権限が付与されます。

    3. [完了] をクリックします。

  9. [失敗時に再試行する] はオフのままにします。[トリガーを保存] をクリックします。

  10. [ランタイム、ビルド、接続、セキュリティの設定] セクションを開いて、[ランタイム] タブを選択します。

  11. [サービス アカウント] フィールドの [ランタイム サービス アカウント] で、[作成] をクリックします。サービス アカウント作成フローが新しいタブで開きます。このサービス アカウントは、Cloud ファンクションの実行時における ID です。

    1. サービス アカウントの名前を入力します。
    2. [作成して続行] をクリックします。
    3. [完了] をクリックします。

    Google Cloud コンソールの [サービス アカウント] ページにリダイレクトされます。 このタブを閉じてください。

  12. 関数の作成ページの [サービス アカウント] フィールドに戻り、[更新] をクリックして、先ほど作成したサービス アカウントを選択します。

  13. [Next] をクリックします。必要な API を有効にするよう求めるプロンプトが表示されたら、[有効にする] をクリックします。

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

Cloud Scheduler ジョブを作成する

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

    Cloud Scheduler に移動

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

  3. ジョブの名前を入力し、ジョブを実行するリージョンを選択して、必要に応じて説明を追加します。

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

    30 16 * * 7
    

    詳細については、cron ジョブ スケジュールの構成をご覧ください。

  5. タイムゾーンを選択します。

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

  7. [実行内容を構成する] セクションで、ターゲット タイプとして [Pub/Sub] を選択します。

  8. Pub/Sub トピックを選択します。

  9. [メッセージ] に、ターゲットに送信する短いペイロード文字列を追加します。

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

日曜日の 16:30 に Pub/Sub トピックにメッセージを送信する cron ジョブができました。Cloud ファンクションは、このトピックにサブスクライブされています。

ジョブを実行する

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

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

    Cloud Scheduler に移動

  2. 作成したジョブを選択します。

  3. [強制実行] をクリックします。

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

  4. [最後の実行のステータス] の列を確認します。ジョブが実行されると、この列に「成功」と表示されます。

これで完了です。コンソールを使用して、Pub/Sub にメッセージを送信する cron ジョブの実行結果を確認しました。次に、Cloud ファンクションが実際に実行されたことを確認する方法を学びます。

Cloud Functions で結果を確認する

Cloud ファンクションが cron ジョブによって正常にトリガーされたことを確認するには:

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

    Cloud Functions に移動

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

  3. [ファンクションの詳細] ページが開きます。 [呼び出し回数/秒] グラフには、関数の最初の呼び出しが表示されます。呼び出しの詳細を表示するには、[ログ] をクリックします。

これで完了です。ファンクションが実行されたことが確認できました。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにする手順は次のとおりです。

Cloud Scheduler ジョブの削除

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

    [スケジューラ] に移動

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

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

Pub/Sub トピックの削除

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

    [Pub/Sub] に移動

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

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

Cloud Functions の関数を削除する

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

    Cloud Functions に移動

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

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

サービス アカウントを削除する

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

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

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

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

API を無効にする

このチュートリアルの手順に沿って API(Eventarc、Cloud Functions、Pub/Sub API など)を有効にした場合は、無効にします。API を無効にすると、プロジェクトの API へのアクセスに影響するため、プロジェクト内の他のリソースで API を使用している場合は、API を無効にしないでください。

  1. Google Cloud コンソールで、[API とサービス] ページに移動します。

    [API とサービス] に移動

  2. 無効にする API をクリックします。API を説明するページが表示されます。

  3. [API を無効にする] をクリックします。

プロジェクトの削除

このチュートリアル用にプロジェクトを作成した場合は、そのプロジェクトを削除できます。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。