Azure Functions v3 で Java 11 をサポート

このエントリは2020/07/22現在の情報に基づいています。将来の機能追加や変更に伴い、記載内容との乖離が発生する可能性があります。

Azure Functionsで、Java 11がPreviewではあるがサポートされた(以前のv3のエントリも書き換えた)。FunctionsのためだけにJava 8をインストールしておかねばならなかったのだが、ようやくJava 11に統一できたのは非常に喜ばしい(来年には新しいLTSが来るけど)。

Azure Functions v3 in Java
https://logico-jp.io/2019/12/11/azure-functions-v3-in-java/

ドキュメントによれば、FunctionsのAPIはv3のみJava 11に対応しているとのこと(2020/07/22現在英語版のみに記載あり。将来的に日本語版にも反映されるはず)。

Supported versions
https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-java?tabs=consumption#supported-versions

QuickStartを使って、Java 11で動作することを確認する。まずは、Mavenでarchetypeを作る。

mvn archetype:generate \
-DarchetypeGroupId=com.microsoft.azure \
-DarchetypeArtifactId=azure-functions-archetype \
-DappName={functionAppName} \
-DappRegion={region} \
-DresourceGroup={resourceGroup} \
-DgroupId=com.{functionAppName}.group \
-DartifactId={functionAppName}-functions \
-Dpackage=com.{functionAppName} \
-DinteractiveMode=false \
-DjavaVersion=11

今回は以下のような感じにしてみた。

mvn archetype:generate \
-DarchetypeGroupId=com.microsoft.azure \
-DarchetypeArtifactId=azure-functions-archetype \
-DappName=logico11 \
-DappRegion=japaneast \
-DresourceGroup=logico-rg \
-DgroupId=com.logico11.group \
-DartifactId=logico11-functions \
-Dpackage=com.logico11 \
-DinteractiveMode=false \
-DjavaVersion=11

できあがったpom.xmlを修正する。指定できる情報は以下のWikiを参照。

Azure Functions: Configuration Details
https://github.com/microsoft/azure-maven-plugins/wiki/Azure-Functions:-Configuration-Details

今回runtimeのosはWindowsからLinuxへ、ついでにApp ServiceプランのB1を指定。

あとはいつも通りビルドしてデプロイするだけ。もちろん、Azure CLIなどで、デプロイする前にAzureへログインしておき、トークンを取得しておくことをお忘れなく。

# Azure Login
az login

# deploy!
mvn clean package
mvn azure-functions:deploy

では、実行。

curl https://logico11.azurewebsites.net/api/HttpExample?name=Logico

Hello, Logico

動作確認完了(そりゃそうだ)。サポートされないが、GraalVMのJDK 11でビルドしてもちゃんと動作した。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中