JVM 언어
다음 규칙을 준수한다면 다른 JVM 언어(예: Kotlin, Grooby, Scala)를 사용하여 함수를 작성할 수 있습니다.
함수는 함수 인터페이스(
HttpFunction
,BackgroundFunction
,RawBackgroundFunction
) 중 하나를 구현하는 공개 클래스이며 공개 무인수(no-argument) 생성자를 포함합니다.소스에서 배포하는 경우:
- Maven에서 빌드할 수 있습니다.
- 빌드 파일에는 컴파일된 클래스를 생성하는 모든 플러그인이 포함되어 있습니다.
사전 빌드된 JAR에서 배포하는 경우:
- 모든 빌드 도구를 사용하여 이 JAR을 생성할 수 있습니다.
- 사전 빌드된 JAR은 모든 종속 항목 클래스가 있는 팻 JAR이어야 합니다. 또는 매니페스트에 이러한 종속 항목 클래스가 포함된 jar의 상대 위치가 포함된
Class-Path
항목이 있어야 합니다.
HTTP 함수 예시
HTTP 요청을 통해 함수를 호출하려면 HTTP 함수를 사용합니다. 다음 예시는 "Hello World!"
메시지를 출력합니다.
Kotlin
Groovy
Scala
HTTP 예시용 pom.xml
파일
위 샘플의 pom.xml
파일은 다음과 같습니다.
Kotlin
Groovy
Scala
HTTP 함수 배포
Kotlin
gcloud functions deploy kotlin-helloworld --entry-point functions.KotlinHelloWorld --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
Groovy
gcloud functions deploy groovy-helloworld --entry-point functions.GroovyHelloWorld --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
Scala
gcloud functions deploy scala-helloworld --entry-point functions.ScalaHelloWorld --runtime java17 --trigger-http --allow-unauthenticated --memory 512MB
이벤트 기반 함수 예시
Pub/Sub 주제의 메시지, Cloud Storage 버킷의 변경사항, Firebase 이벤트 등의 비동기 이벤트에 대한 응답으로 Cloud Run 함수를 간접적으로 호출하려는 경우 이벤트 기반 함수를 사용합니다.
이벤트 기반 함수에는 백그라운드 함수와 CloudEvent 함수의 두 가지 유형이 있습니다. JVM 언어는 백그라운드 함수만 지원합니다.
Kotlin
백그라운드 함수를 개발할 때 함수를 트리거하는 이벤트의 클래스를 정의합니다. 그러나 이벤트 클래스가 특정 가이드라인을 따르지 않는 경우 GSON 마셜링이 Kotlin에서 바로 작동하지 않을 수 있습니다.
Kotlin 이벤트 클래스에서 속성은 다음 가이드라인을 준수해야 합니다.
null
로 설정할 수 있습니다.- 할당된 기본값이 없습니다.
- 위임 속성이 아닙니다.
또 다른 방법은 자바에서 이벤트 클래스를 만들고 Kotlin 함수 클래스에서 사용하는 것입니다.
Groovy
Scala
백그라운드 함수 배포
Kotlin
gcloud functions deploy kotlin-hello-pubsub --entry-point functions.KotlinHelloPubSub --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Groovy
gcloud functions deploy groovy-hello-pubsub --entry-point functions.GroovyHelloPubSub --runtime java17 --trigger-topic my-topic --allow-unauthenticated --memory 512MB
Scala
gcloud functions deploy scala-hello-pubsub --entry-point functions.ScalaHelloPubSub --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'