このシンプルなチュートリアルでは、Pub/Sub トリガーを使用して Cloud Run functions イベント ドリブン関数を作成、デプロイ、トリガーする方法について説明します。
Pub/Sub を初めて使用する場合、詳細については Pub/Sub のドキュメント、特にトピックとサブスクリプションの管理をご覧ください。Cloud Run functions での Pub/Sub トピックとサブスクリプションの使用に関する概要については、Pub/Sub トリガーをご覧ください。
目標
- Cloud Run functions のイベント ドリブン関数を作成してデプロイする。
- Pub/Sub トピックにメッセージを公開して関数をトリガーする。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
- Cloud Run functions
- Pub/Sub
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions and Cloud Pub/Sub APIs.
-
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まずフェデレーション ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions and Cloud Pub/Sub APIs.
-
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まずフェデレーション ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init
-
開発環境を準備します。
Node.js
Python
Go
Java
Ruby
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
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 形式のサンプルをダウンロードしてファイルを抽出してもかまいません。
Pub/Sub にアクセスするための Cloud Run functions サンプルコードがあるディレクトリに移動します。
Node.js
cd nodejs-docs-samples/functions/helloworld/
Python
cd python-docs-samples/functions/helloworld/
Go
cd golang-samples/functions/helloworld/
Java
cd java-docs-samples/functions/helloworld/hello-pubsub/
Ruby
cd ruby-docs-samples/functions/helloworld/pubsub/
サンプルコードを見てみましょう。
Node.js
Python
Go
Java
Ruby
メッセージを Pub/Sub トピックに公開します。この例では、メッセージは関数が挨拶に含める名前です。
gcloud pubsub topics publish
YOUR_TOPIC_NAME
--messageYOUR_NAME
YOUR_TOPIC_NAME
を Pub/Sub トピックの名前に置き換え、YOUR_NAME
を任意の文字列に置き換えます。実行した内容が完了していることをログで確認します。
gcloud functions logs read --limit 50
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
gcloud CLI がすでにインストールされている場合は、次のコマンドを実行して更新します。
gcloud components update
アプリケーションの準備
関数のデプロイ
Pub/Sub トリガーを使用して関数をデプロイするには、サンプルコード(Java の場合は pom.xml
ファイル)を含むディレクトリで次のコマンドを実行します。
Node.js
gcloud functions deploy helloPubSub \ --runtime nodejs20 \
--trigger-topic YOUR_TOPIC_NAME
サポートされている Node.js バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Python
gcloud functions deploy hello_pubsub \ --runtime python312 \
--trigger-topic YOUR_TOPIC_NAME
サポートされている Python バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Go
gcloud functions deploy HelloPubSub \ --runtime go121 \
--trigger-topic YOUR_TOPIC_NAME
サポートされている Go バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Java
gcloud functions deploy java-pubsub-function \ --entry-point functions.HelloPubSub \ --runtime java17 \ --memory 512MB \
--trigger-topic YOUR_TOPIC_NAME
サポートされている Java バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Ruby
gcloud functions deploy hello_pubsub --runtime ruby33 \
--trigger-topic YOUR_TOPIC_NAME
サポートされている Ruby バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
ここで、YOUR_TOPIC_NAME
は関数の登録先となる Pub/Sub トピックの名前です。
YOUR_TOPIC_NAME
がまだ存在しない場合、このコマンドにより作成されます。Google Cloud コンソールまたは次の gcloud
コマンドを使用して、deploy
コマンドを実行する前にトピックを作成することもできます。
gcloud pubsub topics create YOUR_TOPIC_NAME
関数のトリガー
関数内からメッセージを Pub/Sub トピックに公開することもできます。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
課金されないようにする最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
関数の削除
Cloud Run functions を削除しても、Cloud Storage に保存されたリソースは削除されません。
このチュートリアルで作成した関数を削除するには、次のコマンドを実行します。
Node.js
gcloud functions delete helloPubSub
Python
gcloud functions delete hello_pubsub
Go
gcloud functions delete HelloPubSub
Java
gcloud functions delete java-pubsub-function
Ruby
gcloud functions delete hello_pubsub
Cloud Run functions の関数は Google Cloud コンソールで削除することもできます。