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 함수를 간접적으로 호출하려는 경우 이벤트 기반 함수를 사용합니다.
이벤트 기반 함수에는 백그라운드 함수와 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'