JVM 言語
その言語が次の要件に遵守している限り、さまざまな JVM 言語(Kotlin、Groovy、Scala など)を使用して関数を記述できます。
記述する関数は、機能インターフェース(
HttpFunction、BackgroundFunction、RawBackgroundFunction)のいずれかを実装し、引数を持たないパブリックのコンストラクタを持つ public クラスの関数です。ソースからデプロイする場合:
- Maven からビルドできます。
- ビルドファイルには、コンパイル済みのクラスを生成するためのすべてのプラグインが含まれています。
事前にビルドされた JAR からデプロイする場合:
- この JAR は任意のビルドツールを使用して作成できます。
- 事前にビルドされた JAR は、すべての依存関係クラスを含む Fat JAR であるか、マニフェストに
Class-Pathエントリが含まれている必要があります。エントリには、それらの依存関係のクラスを含む jar の相対ロケーションの情報が入っていなければなりません。
HTTP 関数の例
HTTP 関数は、HTTP(S) リクエストを介して関数を呼び出す必要のある場合に使用します。次の例では、"Hello World!" というメッセージを出力します。
Kotlin
Groovy
Scala
HTTP の例での pom.xml ファイル
上記のサンプルの pom.xml ファイルは次のとおりです。
Kotlin
Groovy
Scala
HTTP 関数のデプロイ
Kotlin
gcloud functions deploy kotlin-helloworld --entry-point functions.KotlinHelloWorld --no-gen2 --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
Groovy
gcloud functions deploy groovy-helloworld --entry-point functions.GroovyHelloWorld --no-gen2 --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
Scala
gcloud functions deploy scala-helloworld --entry-point functions.ScalaHelloWorld --no-gen2 --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
イベント ドリブン関数の例
Pub/Sub トピックのメッセージ、Cloud Storage バケットの変更、Firebase イベントなどの非同期イベントによって Cloud Run functions を間接的に呼び出す場合は、イベント ドリブン関数を使用します。
バックグラウンド関数と CloudEvent 関数の 2 種類のイベント ドリブン関数が存在します。JVM 言語ではバックグラウンド関数のみがサポートされています。
Kotlin
バックグラウンド関数を開発する場合は、関数をトリガーするイベントのクラスを定義します。ただし、イベントクラスが特定のガイドラインに遵守していない場合、GSON マーシャリングはすぐには Kotlin で使用できないことがあります。
Kotlin のイベントクラスでは、プロパティが次のガイドラインに遵守する必要があります。
nullに設定できる。- デフォルト値が割り当てられていない。
- 委任プロパティではない。
もう一つの方法として、Java でイベントクラスを作成し、Kotlin 関数クラスから使用することもできます。
Groovy
Scala
バックグラウンド関数のデプロイ
Kotlin
gcloud functions deploy kotlin-hello-pubsub --entry-point functions.KotlinHelloPubSub --no-gen2 --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Groovy
gcloud functions deploy groovy-hello-pubsub --entry-point functions.GroovyHelloPubSub --no-gen2 --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Scala
gcloud functions deploy scala-hello-pubsub --entry-point functions.ScalaHelloPubSub --no-gen2 --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
バックグラウンドの例をテストする
次の手順に従って、バックグラウンドの例をテストできます。
Pub/Sub トピックにメッセージを公開して、関数をトリガーします。
gcloud pubsub topics publish my-topic --message Flurry
ログを確認します。
gcloud functions logs read --limit 10
Pub/Sub トピックに公開した名前を含むメッセージが次のように表示されます。
D my-function ... Function execution started
I my-function ... Hello Flurry!
D my-function ... Function execution took 39 ms, finished with status: 'ok'