Quarkus REST、Undertow、または Reactive Routes を使用した Azure Functions
プレビューquarkus-azure-functions-http エクステンションを使用すると、Quarkus REST (Jakarta REST 実装) を使用してマイクロサービスを作成できます。
Undertow (servlet)、Reactive Routes、または Funqy HTTP を使用して、これらのマイクロサービスを Azure Functions ランタイムにデプロイできるようにします。
言い換えれば、このエクステンションは Azure Functions HttpTrigger と HTTP API の Quarkus ファミリーのブリッジとして機能します。
1 つの Azure 関数のデプロイメントは、任意の数の Jakarta REST、サーブレット、Reactive Routes、または Funqy HTTP のエンドポイントを表現できます。
|
この技術は、previewと考えられています。 preview では、下位互換性やエコシステムでの存在は保証されていません。具体的な改善には設定や API の変更が必要になるかもしれませんが、 stable になるための計画は現在進行中です。フィードバックは メーリングリスト や GitHub の課題管理 で受け付けています。 とりうるステータスの完全なリストについては、 FAQの項目 を参照してください。 |
| Azure Functions HTTP Trigger for Javaがバイナリ形式をサポートしていないため、現時点ではテキストベースのメディアタイプのみがサポートされています |
要件
このガイドを完成させるには、以下が必要です:
-
約15分
-
IDE
-
JDK 17+がインストールされ、
JAVA_HOMEが適切に設定されていること -
Apache Maven 3.9.15
-
使用したい場合は、 Quarkus CLI
-
ネイティブ実行可能ファイルをビルドしたい場合、MandrelまたはGraalVM(あるいはネイティブなコンテナビルドを使用する場合はDocker)をインストールし、 適切に設定していること
-
Azureのアカウント 無料アカウントでも大丈夫です。
-
Azure Functions Core Tools バージョン4.x
ソリューション
このガイドでは、Quarkus REST エンドポイントを Azure Functions にデプロイできる maven プロジェクトの実行について説明します。 その例として Jakarta REST が示されていますが、これは簡単に任意の HTTPフレームワークに置き換えることができます。
Maven/Gradleプロジェクトの作成
まず、新しいプロジェクトが必要です。以下のコマンドで新規プロジェクトを作成します:
Windowsユーザーの場合:
-
cmdを使用する場合、(バックスラッシュ
\を使用せず、すべてを同じ行に書かないでください)。 -
Powershellを使用する場合は、
-Dパラメータを二重引用符で囲んでください。例:"-DprojectArtifactId=azure-functions-http-quickstart"
このコマンドは、Quarkus Azure Functions HTTP エクステンションをインポートするプロジェクト構造を生成します。サンプルが含まれています。
プロジェクトの確認
生成されたプロジェクトの pom.xml または build.gradle ビルドファイルを開くと、
このプロジェクトは他の Quarkus プロジェクトと同様であることがわかります。
quarkus-azure-functions-http エクステンションは、
Quarkus と Azure Functions のインテグレーションポイントです。
quarkus-azure-functions-http エクステンションの現在の実装では、azure-functions-maven-plugin や Gradle の同等のプラグインが不要になりました。ローカル開発や Azure Functions のパッケージングおよびデプロイメントは、すべて Quarkus によって行われます。
ビルド設定はすべて application.properties 内にあります。唯一必要な設定スイッチは quarkus.azure-functions.app-name です。
Azureデプロイメントディスクリプタ
Azure Functions の`host.json`デプロイメント記述子は自動的に 生成されますが、オーバーライドする必要がある場合は、プロジェクトの root ディレクトリーで宣言し、 準備ができたらビルドを再実行します。
ルートパスの設定
Azure Function のデフォルトのルートプレフィックスは /api です。Jakarta REST、Servlet、Reactive Routes、および Funqy HTTP のすべてのエンドポイントでは、これを明示的に考慮する必要があります。生成されたプロジェクトでは、application.properties 内の quarkus.http.root-path のスイッチによって処理されます。
Quarkus dev mode
Quarkus 開発モードは、アプリケーションを HTTP エンドポイントとして実行するだけで機能します。開発モードでは、Azure Functions ローカルランタイムとの特別なやり取りはありません。
quarkus dev
./mvnw quarkus:dev
./gradlew --console=plain quarkusDev
Azure Functionsローカル環境での実行
ローカルの Azure Functions 環境でこのサンプルを試したい場合は、次のコマンドを使用できます。
quarkus run
./mvnw quarkus:run
./gradlew --console=plain --info --no-daemon quarkusRun
|
Gradle はプロセス管理に少しクセがあるため、 |
|
この機能を利用するには、 Azure Functions Core Tools がインストールされている必要があります。 |
例題にアクセスするためのURLは次のようになります:
Quarkus統合テスト
@QuarkusIntegrationTest の機能を使用して統合テストを実装できます。これらの統合テストが実行されると、
統合テストの間、ローカルの Azure Functions 環境がスピンアップされます。
./mvnw verify
./gradlew --info quarkusIntTest
|
Maven で実行する統合テストが |
|
Gradle で実行する統合テストが |
Azureへのデプロイ
quarkus-azure-functions-http エクステンションは Azure へのデプロイ作業をすべて処理します。デフォルトでは、Quarkus はバックグラウンドで Azure CLI を使用して認証し、Azure へのデプロイを行います。アカウントに複数のサブスクリプションが関連付けられている場合、使用するサブスクリプションを指定するために、application.properties ファイルに quarkus.azure-functions.subscription-id プロパティーを設定する必要があります。その他の認証メカニズムやデプロイオプションについては、Azure Functions 設定リファレンス を参照してください。
アプリケーションをデプロイするには、プロジェクトをビルドした後、次のコマンドを実行します:
./mvnw quarkus:deploy
./gradlew --info deploy
|
Gradle の場合、この出力を表示するには |
デプロイが成功すると、Quarkus は、サンプル関数のエンドポイント URL をコンソールに出力します:
[INFO] HTTP Trigger Urls:
[INFO] HttpExample : https://{appName}.azurewebsites.net/api/{*path}
サービスにアクセスするための URL は次のようになります: https://{appName}.azurewebsites.net/api/hello.
Azure Functions 設定リファレンス
ビルド時に固定される設定プロパティ - 他のすべての設定プロパティは実行時にオーバーライド可能
Configuration property |
タイプ |
デフォルト |
|---|---|---|
App name for azure function project. This is required setting. Defaults to the base artifact name Environment variable: Show more |
string |
|
Azure Resource Group for your Azure Functions Environment variable: Show more |
string |
|
Specifies the region where your Azure Functions will be hosted; default value is westus. Valid values Environment variable: Show more |
string |
|
Specifies whether to disable application insights for your function app Environment variable: Show more |
boolean |
|
Specifies the instrumentation key of application insights which will bind to your function app Environment variable: Show more |
string |
|
Valid values are linux, windows, and docker Environment variable: Show more |
string |
|
Should be set to at least the minimum Quarkus compatible version Environment variable: Show more |
string |
|
URL of docker image if deploying via docker Environment variable: Show more |
string |
|
If using docker, url of registry Environment variable: Show more |
string |
|
Description of each type can be found here Valid values are
Defaults to "azure_cli" for authentication Environment variable: Show more |
string |
|
Filesystem path to properties file if using file type Environment variable: Show more |
string |
|
Client or App Id required if using managed_identity type Environment variable: Show more |
string |
|
Tenant ID required if using oauth2 or device_code type Environment variable: Show more |
string |
|
Specifies the name of the existing App Service Plan when you do not want to create a new one. Environment variable: Show more |
string |
|
The app service plan resource group. Environment variable: Show more |
string |
|
Azure subscription id. Required only if there are more than one subscription in your account Environment variable: Show more |
string |
|
The pricing tier. Environment variable: Show more |
string |
|
Port to run azure function in local runtime. Will default to quarkus.http.test-port or 8081 Environment variable: Show more |
int |
|
Config String for local debug Environment variable: Show more |
string |
|