Pub/Sub イベントの受信


このチュートリアルでは、Pub/Sub を使用してイベントを受信する未認証の Cloud Run サービスをデプロイする方法について説明します。

目標

このチュートリアルの内容は次のとおりです。

  1. イベント レシーバ サービスを Cloud Run にデプロイする。

  2. イベント トリガーを作成する。

  3. Pub/Sub トピックにメッセージを公開してイベントを生成し、Cloud Run ログでメッセージを確認する。

費用

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

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

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

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

  3. Google Cloud プロジェクトの課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

  4. Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc API を有効にします。

    API を有効にする

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

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

  6. Google Cloud プロジェクトの課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

  7. Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc API を有効にします。

    API を有効にする

  8. Google Cloud CLI をインストールして初期化します。
  9. gcloud コンポーネントを更新します。
    gcloud components update
  10. 自分のアカウントでログインします。
    gcloud auth login
  11. このチュートリアルで使用する構成変数を設定します。
    gcloud config set project PROJECT_ID
    gcloud config set run/region us-central1
    gcloud config set run/platform managed
    gcloud config set eventarc/location us-central1
    
    ここで、PROJECT_ID は Google Cloud プロジェクト ID です。

イベント レシーバを Cloud Run へデプロイする

イベントを受信してロギングする Cloud Run サービスをデプロイします。

サンプル イベント レシーバ サービスをデプロイするには:

  1. リポジトリのクローンを作成します。

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

    Ruby

    git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

    C#

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git

    または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。

  2. Cloud Run のサンプルコードが含まれているディレクトリに移動します。

    Node.js

    cd nodejs-docs-samples/eventarc/pubsub/

    Python

    cd python-docs-samples/eventarc/pubsub/

    Go

    cd golang-samples/eventarc/pubsub/

    Java

    cd java-docs-samples/eventarc/pubsub/

    Ruby

    cd ruby-docs-samples/eventarc/pubsub/

    C#

    cd dotnet-docs-samples/eventarc/pubsub/
  3. コンテナをビルドして、Cloud Build にアップロードします。

    gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/events-pubsub
    
  4. コンテナ イメージを Cloud Run にデプロイします。

    gcloud run deploy helloworld-events-pubsub-tutorial \
        --image gcr.io/$(gcloud config get-value project)/events-pubsub \
        --allow-unauthenticated
    

サービス URL が表示されたら、デプロイは完了しています。

Eventarc トリガーを作成する

イベント トリガーによりメッセージが Pub/Sub トピックに公開されると、Cloud Run にデプロイされたイベント レシーバ サービスにメッセージが送信されます。

Eventarc Pub/Sub トリガーを作成するには:

  1. Pub/Sub メッセージをリッスンするトリガーを作成します。

    新しい Pub/Sub トピック

    gcloud eventarc triggers create events-pubsub-trigger \
      --destination-run-service=helloworld-events-pubsub-tutorial \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
    

    これにより、新しい Pub/Sub トピックと events-pubsub-trigger というトリガーが作成されます。

    既存の Pub/Sub トピック

    gcloud eventarc triggers create events-pubsub-trigger \
      --destination-run-service=helloworld-events-pubsub-tutorial \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME
    

    次のように置き換えます。

    • PROJECT_ID はユーザーの Google Cloud プロジェクト ID です。
    • TOPIC_NAME は、既存の Pub/Sub トピックの名前です。

    これにより、既存の Pub/Sub トピックに events-pubsub-trigger というトリガーが作成されます。

  2. トリガーが正常に作成されたことを確認します。

    gcloud eventarc triggers list --location=us-central1
    
  3. Pub/Sub トピックを検索して、環境変数として設定します。

    export RUN_TOPIC=$(gcloud eventarc triggers describe events-pubsub-trigger \
        --format='value(transport.pubsub.topic)')
    
  4. Pub/Sub トピックにメッセージを送信してイベントを生成します。

    gcloud pubsub topics publish $RUN_TOPIC --message "Runner"
    

    イベントが Cloud Run サービスに送信され、イベント メッセージがログに記録されます。

  5. イベント メッセージを表示するには、Cloud Run のサービスログに移動します。

    1. Google Cloud コンソールに移動します。
    2. helloworld-events-pubsub-tutorial サービスをクリックします。
    3. [ログ] タブを選択します。

      ログが表示されるまで少し時間がかかることがあります。すぐに表示されない場合は、しばらくしてからもう一度確認してください。

  6. 「Hello Runner!」というメッセージを見つけます。

クリーンアップ

このチュートリアル用に新規プロジェクトを作成した場合は、そのプロジェクトを削除します。既存のプロジェクトを使用し、このチュートリアルで変更を加えずに残す場合は、チュートリアル用に作成したリソースを削除します。

プロジェクトの削除

課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには:

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

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

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

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

  1. このチュートリアルでデプロイした Cloud Run サービスを削除します。

    gcloud run services delete SERVICE_NAME

    SERVICE_NAME は、選択したサービス名です。

    Cloud Run サービスは Google Cloud コンソールから削除することもできます。

  2. チュートリアルの設定時に追加した gcloud CLI のデフォルト構成を削除します。

    例:

    gcloud config unset run/region

    または

    gcloud config unset project

  3. このチュートリアルで作成した他の Google Cloud リソースを削除します。

    • Eventarc トリガーを削除します。
      gcloud eventarc triggers delete TRIGGER_NAME
      
      TRIGGER_NAME は実際のトリガー名に置き換えます。

次のステップ