Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/i10416/scala-functions
simple scala gcp cloud functions hello world example
https://github.com/i10416/scala-functions
gcp-cloud-functions scala
Last synced: about 2 months ago
JSON representation
simple scala gcp cloud functions hello world example
- Host: GitHub
- URL: https://github.com/i10416/scala-functions
- Owner: i10416
- Created: 2020-09-19T09:56:44.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-06-26T10:26:17.000Z (over 2 years ago)
- Last Synced: 2023-03-04T01:56:33.854Z (almost 2 years ago)
- Topics: gcp-cloud-functions, scala
- Language: XSLT
- Homepage:
- Size: 247 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# scala-functions
simple scala gcp cloud functions hello world example with sbtmavenではなくsbtを使ってscalaのソースをgoogle cloud functionsにデプロイするサンプル
googleの公式ドキュメントではmavenを使ってfat .jarをビルドすることができると書かれているが、sbt-assembly pluginを使うことでsbtでもビルドすることができる
## guide
### use maven google cloud functions library with sbt
see https://cloud.google.com/functions/docs/concepts/jvm-langs
```xml
com.google.cloud.functions
functions-framework-api
1.0.1
provided
```MavenのXMLはsbtのlibraryDependenciesと対応しているので以下のように変換する.
Maven's xml corresponds to sbt libraryDependencies.
Translate this like below.
```sbt
libraryDependencies ++= Seq(
"com.google.cloud.functions" % "functions-framework-api" % "1.0.1",
)
```
### Install sbt-assembly plugin to build fat .jar file.To deploy functions on java 11 runtime, fat .jar file is required.
Java 11 ランタイムで動くソースをアップロードする際にはfat .jarファイルが必要なのでsbt-assembly pluginを``project/plugins.sbt``に追加する
- add project/plugins.sbt
```scala:plugins.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.15.0")
```
Run `assembly` command in sbt shell to build fat .jar file at ``target/rootDirName-assebly-x.x.x-SNAPSHOT.jar``.
sbt shellで``assembly``コマンドを実行すると``target/``以下にfat .jarファイルが生成される.
### upload zip file
※ここではCLIではなくGUIからアップロードする
Before uploading, zip ``target/rootDirName-assebly-x.x.x-SNAPSHOT.jar``.
アップロードする前に.jarファイルをzip圧縮する
In GCP cloud functions console,
1. create a function
- set function name and region
- set function trigger[default: http]
2. choose run type
- java 11
3. upload zipped fat .jar file.
4. enable cloud build api
5. choose a bucket or create the new bucket if not exists.エントリーポイントはパッケージ名とクラス名に対応させる. 以下のようなScala ソースがあるとき、エントリーポイントはfunctions.ScalaHelloWorldになる.
Set entrypoint as packageName.className.
With Scala source below, for example, set entrypoint as functions.ScalaHelloWorld
```scala
package functions
import com.google.cloud.functions.{HttpFunction, HttpRequest, HttpResponse}class ScalaHelloWorld extends HttpFunction {
override def service(httpRequest: HttpRequest, httpResponse: HttpResponse):Unit = {
httpResponse.getWriter.write("hello world")
}
}```