Pub/Sub を使用して Cloud ファンクションをトリガーする

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

  • Pub/Sub トピックをサブスクライブする単純な Cloud Functions の関数を作成する。
  • その関数をトリガーする Pub/Sub トピックを作成する。
  • Pub/Sub トリガーを呼び出す Cloud Scheduler ジョブを作成する。
  • Cloud Scheduler ジョブを実行する。
  • 正常終了を確認する。

始める前に

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

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

  • App Engine がサポートされているロケーションのいずれかに配置されている App Engine アプリ。

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

費用

このチュートリアルでは、以下を含む Cloud Platform の有料コンポーネントを使用します。

  • Google Cloud Functions
  • Google Cloud Pub/Sub
  • Google Cloud Scheduler

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。

新しい Cloud Platform ユーザーは無料トライアルをご利用いただけます。

Cloud ファンクションを作成する:

  1. コンソールで [Cloud Functions] ページにアクセスします。

    [Cloud Functions] ページに移動

  2. [API を有効にする] ボタンをクリックします。

  3. [関数の作成] ボタンをクリックします。

    画像

  4. 関数の名前を指定します。メモリの割り当て量は、デフォルトをそのまま使用します。

  5. [トリガー] プルダウンから [Cloud Pub/Sub] を選択します。

  6. プルダウンから既存のトピックを選択するか、[新しいトピックを作成] ポップアップを使用して新しいトピックを作成します。これで、関数がトピックにサブスクライブされます。 トピックの名前は、後で必要になるためメモしておきます。

  7. サンプルの index.js および package.json コードを含めて、その他はすべてデフォルトをそのまま使用します。

  8. [作成] をクリック

Cloud Scheduler ジョブを作成する

  1. コンソールで [Cloud Scheduler] ページにアクセスします。

    [Cloud Scheduler] ページに移動

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

  3. 必要に応じて、ジョブを実行するリージョンを選択します。

  4. ジョブに名前を指定し、必要に応じて説明を追加します。

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

    * * * * *
    

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

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

  7. [ターゲット] プルダウンから [Pub/Sub] を選択します。

  8. [トピック] に、上で選択したトピック名を入力します。

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

  10. [作成] をクリック

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

次に、作成したジョブを実行してみましょう。

ジョブを実行する

  1. [Cloud Scheduler] コンソール ページを開きます。

    [Cloud Scheduler] ページに移動

  2. [今すぐ実行] ボタンをクリックします。

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

  3. [結果] 列を見ます。

    画像

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

Cloud Functions で結果を確認する:

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

  1. コンソールで [Cloud Functions] ページにアクセスします。

    [Cloud Functions] ページに移動

  2. 関数名をクリックします。

    画像

  3. [関数の詳細] ページが開きます。呼び出しを確認します。

    画像

    これで、関数が実行されたことが確認できました。

  4. [ログを表示] をクリックします。

    画像

  5. 呼び出しの詳細が表示されます。

    画像

クリーンアップ

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

Cloud Scheduler ジョブの削除

  1. Cloud Console の [Cloud Scheduler] ページに移動します。

    [Scheduler] ページに移動

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

  3. ページの上部にある [削除] ボタンをクリックして、削除操作を確定します。

Pub/Sub トピックの削除

  1. Cloud Console の [Cloud Pub/Sub] ページに移動します。

    [Pub/Sub] ページに移動

  2. トピックの横のチェックボックスをクリックします。

  3. ページの上部にある [削除] をクリックして、削除操作を確定します。

Cloud Functions ファンクションの削除

  1. Cloud Console の [Cloud Functions] ページに移動します。

    [Cloud Functions] ページに移動

  2. 関数の横のチェックボックスをクリックします。

  3. ページの上部にある [削除] ボタンをクリックして、削除操作を確定します。

プロジェクトの削除

このチュートリアルのためだけにプロジェクトを作成した場合は、以下を実行します。

  1. Cloud Console で [リソースの管理] ページに移動します。

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

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