Langages JVM
Vous pouvez écrire vos fonctions dans différents langages JVM (tels que Kotlin, Groovy ou Scala), tant que les conditions suivantes sont respectées :
La fonction est une classe publique qui met en œuvre l'une des interfaces de fonction (
HttpFunction
,BackgroundFunction
ouRawBackgroundFunction
) et dispose d'un constructeur public sans argument.Si vous effectuez un déploiement à partir de la source :
- La fonction peut être compilée via Maven.
- Le fichier de build contient tous les plug-ins permettant de produire des classes compilées.
Si vous effectuez un déploiement à partir d'un fichier JAR prédéfini :
- Vous pouvez utiliser n'importe quel outil de compilation pour produire ce fichier JAR.
- Le fichier JAR prédéfini doit être un fichier Fat JAR précisant toutes ses classes de dépendance, ou son fichier manifeste doit contenir une entrée
Class-Path
mentionnant les emplacements relatifs des fichiers JAR contenant ces classes de dépendance.
Exemples de fonctions HTTP
Les fonctions HTTP vous permettent d'appeler votre fonction via une requête HTTP(S). Les exemples suivants génèrent le message "Hello World!"
.
Kotlin
Groovy
Scala
Fichier pom.xml
pour les exemples HTTP
Voici les fichiers pom.xml
pour les exemples ci-dessus :
Kotlin
Groovy
Scala
Déployer les fonctions HTTP
Kotlin
gcloud functions deploy kotlin-helloworld --entry-point functions.KotlinHelloWorld --runtime java21 --trigger-http --allow-unauthenticated --memory 512MB
Groovy
gcloud functions deploy groovy-helloworld --entry-point functions.GroovyHelloWorld --runtime java21 --trigger-http --allow-unauthenticated --memory 512MB
Scala
gcloud functions deploy scala-helloworld --entry-point functions.ScalaHelloWorld --runtime java21 --trigger-http --allow-unauthenticated --memory 512MB
Exemples de fonctions basées sur les événements
Les fonctions basées sur les événements vous permettent d'appeler indirectement une fonction Cloud Run en réponse à un événement asynchrone, tel qu'un message sur un sujet Pub/Sub, une modification dans un bucket Cloud Storage ou un événement Firebase.
Il existe deux types de fonctions basées sur des événements : les fonctions d'arrière-plan et les fonctions CloudEvent. Les langages JVM n'acceptent que les fonctions d'arrière-plan.
Kotlin
Lorsque vous développez des fonctions d'arrière-plan, vous définissez des classes pour les événements qui déclenchent vos fonctions. Toutefois, il est possible que le marshaling GSON ne fonctionne pas directement pour Kotlin si votre classe d'événement ne respecte pas certaines consignes.
Dans votre classe d'événement Kotlin, les propriétés doivent respecter les consignes suivantes :
- Elles peuvent être définies sur
null
. - Aucune valeur par défaut ne leur est attribuée.
- Ce ne sont pas des propriétés de délégation.
Une autre approche consiste à créer vos classes d'événements en Java et à les utiliser à partir de votre classe de fonction Kotlin.
Groovy
Scala
Déployer les fonctions d'arrière-plan
Kotlin
gcloud functions deploy kotlin-hello-pubsub --entry-point functions.KotlinHelloPubSub --runtime java21 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Groovy
gcloud functions deploy groovy-hello-pubsub --entry-point functions.GroovyHelloPubSub --runtime java21 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Scala
gcloud functions deploy scala-hello-pubsub --entry-point functions.ScalaHelloPubSub --runtime java21 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Tester les exemples de fonctions d'arrière-plan
Vous pouvez tester les exemples de fonctions d'arrière-plan comme suit :
Publiez un message sur votre sujet Pub/Sub pour déclencher votre fonction :
gcloud pubsub topics publish my-topic --message Flurry
Examinez les journaux :
gcloud functions logs read --limit 10
Un message semblable au suivant doit s'afficher, contenant le nom que vous avez publié dans le sujet 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'