このシンプルなチュートリアルでは、Cloud Pub/Sub トリガーを用いて Cloud Functions のイベント ドリブン関数の作成、デプロイ、トリガーを行う方法について説明します。
Pub/Sub を初めて使用する場合、詳細については Pub/Sub のドキュメント、特にトピックとサブスクリプションの管理をご覧ください。Cloud Functions での Pub/Sub トピックとサブスクリプションの使用に関する概要については、Google Cloud Pub/Sub トリガーをご覧ください。
Pub/Sub 自体を使用したコードサンプルについては、Google Cloud のサンプル ブラウザをご覧ください。
目標
- Cloud Functions のイベント ドリブン関数を作成してデプロイする。
- Pub/Sub トピックにメッセージを公開して関数をトリガーする。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
- Cloud Functions
- Cloud Build
- Pub/Sub
- Artifact Registry
- Eventarc
- Cloud Logging
詳細については、Cloud Functions の料金をご覧ください。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Logging, and Pub/Sub APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Logging, and Pub/Sub APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 開発環境を準備します。
Node.js
Python
Go
Java
C#
Ruby
PHP
gcloud CLI がすでにインストールされている場合は、次のコマンドを実行して更新します。
gcloud components update
前提条件
Pub/Sub トピックを作成します。
gcloud pubsub topics create YOUR_TOPIC_NAME
これは、関数をデプロイする前に行う必須のステップです。Cloud Functions(第 2 世代)では、関数をデプロイするときに Pub/Sub トピックが自動的に作成されません。
アプリケーションの準備
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
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 形式のサンプルをダウンロードしてファイルを抽出してもかまいません。
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
また、zip 形式のサンプルをダウンロードしてファイルを抽出してもかまいません。
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
また、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。
PHP
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
または、zip 形式のサンプルをダウンロードし、ファイルを抽出してもかまいません。
Pub/Sub にアクセスするための Cloud Functions サンプルコードがあるディレクトリに移動します。
Node.js
cd nodejs-docs-samples/functions/v2/helloPubSub/
Python
cd python-docs-samples/functions/v2/pubsub/
Go
cd golang-samples/functions/functionsv2/hellopubsub/
Java
cd java-docs-samples/functions/v2/pubsub/
C#
cd dotnet-docs-samples/functions/helloworld/HelloPubSub/
Ruby
cd ruby-docs-samples/functions/helloworld/pubsub/
PHP
cd php-docs-samples/functions/helloworld_pubsub/
サンプルコードを見てみましょう。
Node.js
Python
Go
Java
C#
Ruby
PHP
関数のデプロイ
Pub/Sub トリガーを使用して関数をデプロイするには、サンプルコード(Java の場合は pom.xml
ファイル)を含むディレクトリで次のコマンドを実行します。
Node.js
gcloud functions deploy nodejs-pubsub-function \ --gen2 \ --runtime=nodejs20 \ --region=REGION
\ --source=. \ --entry-point=helloPubSub \
--trigger-topic=YOUR_TOPIC_NAME
サポートされている Node.js バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Python
gcloud functions deploy python-pubsub-function \ --gen2 \ --runtime=python312 \ --region=REGION
\ --source=. \ --entry-point=subscribe \
--trigger-topic=YOUR_TOPIC_NAME
サポートされている Python バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Go
gcloud functions deploy go-pubsub-function \ --gen2 \ --runtime=go121 \ --region=REGION
\ --source=. \ --entry-point=HelloPubSub \
--trigger-topic=YOUR_TOPIC_NAME
サポートされている Go バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Java
gcloud functions deploy java-pubsub-function \ --gen2 \ --runtime=java17 \ --region=REGION
\ --source=. \ --entry-point=functions.SubscribeToTopic \ --memory=512MB \
--trigger-topic=YOUR_TOPIC_NAME
サポートされている Java バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
C#
gcloud functions deploy csharp-pubsub-function \ --gen2 \ --runtime=dotnet6 \ --region=REGION
\ --source=. \ --entry-point=HelloPubSub.Function \
--trigger-topic=YOUR_TOPIC_NAME
サポートされている .NET バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
Ruby
gcloud functions deploy ruby-pubsub-function \ --gen2 \ --runtime=ruby32 \ --region=REGION
\ --source=. \ --entry-point=hello_pubsub \
--trigger-topic=YOUR_TOPIC_NAME
サポートされている Ruby バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
PHP
gcloud functions deploy php-pubsub-function \ --gen2 \ --runtime=php82 \ --region=REGION
\ --source=. \ --entry-point=helloworldPubsub \
--trigger-topic=YOUR_TOPIC_NAME
サポートされている PHP バージョンのランタイム ID を指定して関数を実行するには、--runtime
フラグを使用します。
ここで、YOUR_TOPIC_NAME
は関数の登録先となる Pub/Sub トピックの名前です。
deploy
コマンドを実行する前に、Google Cloud コンソールまたは gcloud
コマンドライン ツールを使用して、トピックを作成する必要があります。Cloud Functions(第 1 世代)とは異なり、Cloud Functions(第 2 世代)では、Pub/Sub トリガーを使用して関数をデプロイするときに、Pub/Sub トピックが自動的に作成されません。
関数のトリガー
Pub/Sub 関数をテストするには:
トピックにメッセージをパブリッシュします。
gcloud pubsub topics publish my-topic --message="Friend"
関数のログを読み、結果を確認します。
gcloud functions logs read \ --gen2 \ --region=REGION \ --limit=5 \ FUNCTION_NAME
次のように置き換えます。
- REGION は、関数をデプロイした Google Cloud リージョンの名前です(例:
us-west1
)。 - FUNCTION_NAME は、デプロイ時に関数に指定した名前です(たとえば、このチュートリアルの Node.js 関数は関数名
nodejs-pubsub-function
でデプロイされます)。
ログの出力に、新しい「Friend」メッセージが含まれているはずです。
- REGION は、関数をデプロイした Google Cloud リージョンの名前です(例:
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- 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.
Cloud Functions の関数の削除
Cloud Functions を削除しても、Cloud Storage に保存されたリソースは削除されません。
このチュートリアルで作成した Cloud Functions の関数を削除するには、次のコマンドを実行します。
Node.js
gcloud functions delete nodejs-pubsub-function --gen2 --region REGION
Python
gcloud functions delete python-pubsub-function --gen2 --region REGION
Go
gcloud functions delete go-pubsub-function --gen2 --region REGION
Java
gcloud functions delete java-pubsub-function --gen2 --region REGION
C#
gcloud functions delete csharp-pubsub-function --gen2 --region REGION
Ruby
gcloud functions delete ruby-pubsub-function --gen2 --region REGION
PHP
gcloud functions delete php-pubsub-function --gen2 --region REGION
Google Cloud Console から Cloud Functions を削除することもできます。