このシンプルなチュートリアルでは、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
- Pub/Sub
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Cloud Functions and Cloud Pub/Sub API を有効にします。
- Google Cloud CLI をインストールして初期化します。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
-
Cloud Functions and Cloud Pub/Sub API を有効にします。
- Google Cloud CLI をインストールして初期化します。
- 開発環境を準備します。
Node.js
Python
Go
Java
C#
Ruby
PHP
gcloud CLI がすでにインストールされている場合は、次のコマンドを実行して更新します。
gcloud components update
アプリケーションの準備
ローカルマシンにサンプルアプリのリポジトリのクローンを作成します。
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/helloworld/
Python
cd python-docs-samples/functions/helloworld/
Go
cd golang-samples/functions/helloworld/
Java
cd java-docs-samples/functions/helloworld/hello-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 helloPubSub \ --runtime nodejs16 \優先する Node.js のバージョンを指定するには、
--trigger-topic YOUR_TOPIC_NAME
--runtime
フラグに次の値を使用します。
nodejs16
(推奨)nodejs14
nodejs12
nodejs10
Python
gcloud functions deploy hello_pubsub \ --runtime python39 \優先する Python バージョンを指定するには、
--trigger-topic YOUR_TOPIC_NAME
--runtime
フラグに次の値を使用します。
python39
(推奨)python38
python37
Go
gcloud functions deploy HelloPubSub \ --runtime go116 \優先する Go バージョンを指定するには、
--trigger-topic YOUR_TOPIC_NAME
--runtime
フラグに次の値を使用します。
go116
(推奨)go113
go111
Java
gcloud functions deploy java-pubsub-function \ --entry-point functions.HelloPubSub \ --runtime java11 \ --memory 512MB \優先する Java バージョンを指定するには、
--trigger-topic YOUR_TOPIC_NAME
--runtime
フラグに次の値を使用します。
java17
(プレビュー版)java11
(推奨)
C#
gcloud functions deploy csharp-pubsub-function \ --entry-point HelloPubSub.Function \ --runtime dotnet3 \
--trigger-topic YOUR_TOPIC_NAME
Ruby
gcloud functions deploy hello_pubsub --runtime ruby27 \優先する Ruby バージョンを指定するには、
--trigger-topic YOUR_TOPIC_NAME
--runtime
フラグに次の値を使用します。ruby30
(プレビュー版)ruby27
(推奨)ruby26
PHP
gcloud functions deploy helloworldPubsub --runtime php74 \
--trigger-topic YOUR_TOPIC_NAME
ここで、YOUR_TOPIC_NAME
は関数の登録先となる Pub/Sub トピックの名前です。
YOUR_TOPIC_NAME
がまだ存在しない場合、このコマンドにより作成されます。Cloud Console または次の gcloud
コマンドを使用して、deploy
コマンドを実行する前にトピックを作成することもできます。
gcloud pubsub topics create YOUR_TOPIC_NAME
関数のトリガー
メッセージを Pub/Sub トピックに公開します。この例では、メッセージは関数が挨拶に含める名前です。
gcloud pubsub topics publish
YOUR_TOPIC_NAME
--messageYOUR_NAME
YOUR_TOPIC_NAME
を Pub/Sub トピックの名前に置き換え、YOUR_NAME
を任意の文字列に置き換えます。実行した内容が完了していることをログで確認します。
gcloud functions logs read --limit 50
関数内からメッセージを Pub/Sub トピックに公開することもできます。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- Cloud Console で [リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
Cloud Functions の関数の削除
Cloud Functions を削除しても、Cloud Storage に保存されたリソースは削除されません。
このチュートリアルで作成した Cloud Functions の関数を削除するには、次のコマンドを実行します。
Node.js
gcloud functions delete helloPubSub
Python
gcloud functions delete hello_pubsub
Go
gcloud functions delete HelloPubSub
Java
gcloud functions delete java-pubsub-function
C#
gcloud functions delete csharp-pubsub-function
Ruby
gcloud functions delete hello_pubsub
PHP
gcloud functions delete helloworldPubsub
Google Cloud Console から Cloud Functions を削除することもできます。