いつもは .NET で Azure Functions を使っていますが、ふと Java だとどうやって作るのだろうと疑問に思ったので試してみました。
動作環境
bash
$ java -version
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.10+9, mixed mode)
$ mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Default locale: ja_JP, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
$ func --version
4.0.5801
$ az version
{
"azure-cli": "2.61.0",
"azure-cli-core": "2.61.0",
"azure-cli-telemetry": "1.1.0",
"extensions": {}
}
検証用 Functions を作成
bash
$ mvn archetype:generate \
-DarchetypeGroupId=com.microsoft.azure \
-DarchetypeArtifactId=azure-functions-archetype \
-DjavaVersion=11
途中で下記の情報を入力。
Prompt | Value |
---|---|
groupId | com.mnrsdev |
artifactId | mnrfjava |
version | 1.0-SNAPSHOT |
package | com.mnrsdev |
Functions 作成後のファイル構成
bash
$ cd mnrfjava
$ tree
.
├── host.json
├── local.settings.json
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── mnrsdev
│ └── Function.java
└── test
└── java
└── com
└── mnrsdev
├── FunctionTest.java
└── HttpResponseMessageMock.java
10 directories, 6 files
Functions ローカル実行
bash
$ mvn clean package
$ mvn azure-functions:run
$ curl "http://localhost:7071/api/HttpExample?name=Functions"
Hello, Functions
Azure へのデプロイ準備
pom.xmlで下記項目を自分の環境にあわせて修正。
pom.xml
<functionAppName>mnrfjava</functionAppName>
<resourceGroup>mnrfjava-rg</resourceGroup>
<appServicePlanName>mnrfjava-asp</appServicePlanName>
<region>japaneast</region>
<disableAppInsights>true</disableAppInsights>
<runtime>
<os>linux</os>
<javaVersion>11</javaVersion>
</runtime>
Azure へデプロイし動作確認
bash
$ mvn azure-functions:deploy
$ curl "https://mnrfjava.azurewebsites.net/api/httpexample?name=Functions"
Hello, Functions
Azure 上に作成されたリソース
後片付け
bash
$ az group delete --name mnrfjava-rg --yes
参考