このチュートリアルでは、Pub/Sub を使用してイベントを受信する未認証の Cloud Run サービスをデプロイする方法について説明します。
目標
このチュートリアルの内容は次のとおりです。
イベント レシーバ サービスを Cloud Run にデプロイする。
イベント トリガーを作成する。
Pub/Sub トピックにメッセージを公開してイベントを生成し、Cloud Run ログでメッセージを確認する。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Google Cloud プロジェクトの課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc API を有効にします。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Google Cloud プロジェクトの課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc API を有効にします。
- Google Cloud CLI をインストールして初期化します。
- gcloud コンポーネントを更新します。
gcloud components update
- 自分のアカウントでログインします。
gcloud auth login
- このチュートリアルで使用する構成変数を設定します。
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 サービスをデプロイします。
サンプル イベント レシーバ サービスをデプロイするには:
リポジトリのクローンを作成します。
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 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。
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/
コンテナをビルドして、Cloud Build にアップロードします。
gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/events-pubsub
コンテナ イメージを 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 トリガーを作成するには:
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
というトリガーが作成されます。トリガーが正常に作成されたことを確認します。
gcloud eventarc triggers list --location=us-central1
Pub/Sub トピックを検索して、環境変数として設定します。
export RUN_TOPIC=$(gcloud eventarc triggers describe events-pubsub-trigger \ --format='value(transport.pubsub.topic)')
Pub/Sub トピックにメッセージを送信してイベントを生成します。
gcloud pubsub topics publish $RUN_TOPIC --message "Runner"
イベントが Cloud Run サービスに送信され、イベント メッセージがログに記録されます。
イベント メッセージを表示するには、Cloud Run のサービスログに移動します。
- Google Cloud コンソールに移動します。
helloworld-events-pubsub-tutorial
サービスをクリックします。[ログ] タブを選択します。
ログが表示されるまで少し時間がかかることがあります。すぐに表示されない場合は、しばらくしてからもう一度確認してください。
「Hello Runner!」というメッセージを見つけます。
クリーンアップ
このチュートリアル用に新規プロジェクトを作成した場合は、そのプロジェクトを削除します。既存のプロジェクトを使用し、このチュートリアルで変更を加えずに残す場合は、チュートリアル用に作成したリソースを削除します。
プロジェクトの削除
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- Google Cloud コンソールで、[リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
チュートリアル リソースの削除
このチュートリアルでデプロイした Cloud Run サービスを削除します。
gcloud run services delete SERVICE_NAME
SERVICE_NAME
は、選択したサービス名です。Cloud Run サービスは Google Cloud コンソールから削除することもできます。
チュートリアルの設定時に追加した gcloud CLI のデフォルト構成を削除します。
例:
gcloud config unset run/region
または
gcloud config unset project
このチュートリアルで作成した他の Google Cloud リソースを削除します。
- Eventarc トリガーを削除します。
gcloud eventarc triggers delete TRIGGER_NAME
TRIGGER_NAME
は実際のトリガー名に置き換えます。
gcr.io/PROJECT_ID/events-pubsub
という名前のコンテナ イメージを Container Registry から削除します。
- Eventarc トリガーを削除します。