The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

RESTEasy Reactive、Undertow、または Reactive Routes を使用した Azure Functions

プレビュー

The quarkus-azure-functions-http extension allows you to write microservices with RESTEasy Reactive (our Jakarta REST implementation), Undertow (servlet), Reactive Routes, or Funqy HTTP and make these microservices deployable to the Azure Functions runtime. In other words, this extension is a bridge from the Azure Functions HttpTrigger and the Quarkus family of HTTP APIs. One azure function deployment can represent any number of Jakarta REST, servlet, Reactive Routes, or Funqy HTTP endpoints.

この技術は、previewと考えられています。

preview では、下位互換性やエコシステムでの存在は保証されていません。具体的な改善には設定や API の変更が必要になるかもしれませんが、 stable になるための計画は現在進行中です。フィードバックは メーリングリストGitHub の課題管理 で受け付けています。

とりうるステータスの完全なリストについては、 FAQの項目 を参照してください。

Azure Functions HTTP Trigger for Javaがバイナリ形式をサポートしていないため、現時点ではテキストベースのメディアタイプのみがサポートされています

前提条件

このガイドを完成させるには、以下が必要です:

ソリューション

このガイドでは、RESTEasy ReactiveエンドポイントをAzure Functionsにデプロイすることができるmavenプロジェクトの実行を説明します。例としてJakarta RESTのみが提供されていますが、お好みのHTTPフレームワークで簡単に置き換えることができます。

Maven/Gradleプロジェクトの作成

ここ にある Quarkus オンラインアプリケーションジェネレーターから、サンプルコードを生成できます。

この例は、Quarkus CLIで生成することもできます:

quarkus create app --extension=quarkus-azure-functions-http

gradleプロジェクトを生成したい場合は、 --gradle スイッチを追加します。

Azureへのログイン

Azureにログインしないとデプロイできません。

az login

Quarkus開発モード

Quarkus 開発モードは、アプリケーションを HTTP エンドポイントとして実行するだけで使用できます。開発モードでは、 Azure Functions ローカルランタイムとの特別なやり取りはありません。

./mvnw clean package quarkus:dev

プロジェクトの確認

生成されたプロジェクトの 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 のスイッチによって処理されます。

Azureへのログイン

Azureにログインしないとデプロイできません。

az login

Quarkus開発モード

Quarkusの開発モードは、現在Azure Functionsでは動作しません。

Azure Functionsローカル環境での実行

ローカルの Azure Functions 環境でこのサンプルを試したい場合は、次のコマンドを 使用できます。

./mvnw quarkus:run

or

./gradlew --info --no-daemon quarkusRun

Gradle はプロセス管理に少しクセがあるため、--no-daemon スイッチが必要です。そうしないと、 control-c でプロセスが正常に破棄されず、ポートが開いたままになることがあります。

なお、これを実行するためには、 Azure Functions Core Tools がインストールされている必要があります!

例題にアクセスするためのURLは次のようになります:

Quarkus統合テスト

@QuarkusIntegrationTest の機能を使用して統合テストを実装できます。これらの統合テストが実行されると、統合テストの間、ローカルの Azure Functions 環境がスピンアップされます。

Mavenの場合:

./mvnw -DskipITs=false verify

maven で実行する統合テストが *IT.java ファイルパターンを使用しているようにし、通常のビルドでテストが実行されないようにします。

Gradleの場合:

./gradlew --info quarkusIntTest

Gradle で実行する統合テストが src/integrationTest/java 内にあることを確認してください。 src/test に存在する統合テストは通常のビルドで実行され、失敗します。

Azureにデプロイ

quarkus-azure-functions-http エクステンションは Azure へのデプロイ作業をすべて処理します。デフォルトでは、 Quarkus はバックグラウンドで Azure CLI を使用して認証し、Azure へのデプロイを行います。 アカウントに複数のサブスクリプションが関連付けられている場合、使用するサブスクリプションを指定するために、 application.properties ファイルに quarkus.azure-functions.subscription-id プロパティーを設定する必要があります。 その他の認証メカニズムやデプロイオプションについては、こちら から設定プロパティーを参照してください。

デプロイを実行するには、プロジェクトをビルドした後、次のコマンドを実行してください:

./mvnw quarkus:deploy

or

./gradlew --info deploy

デプロイメントが成功すると、Quarkus はサンプル関数のエンドポイント URL をコンソールに出力します。 Gradle の場合、この出力を表示するには --info スイッチを使用する必要があります。

例えば

[INFO] HTTP Trigger Urls:
[INFO] 	 HttpExample : https://{appName}.azurewebsites.net/api/{*path}

サービスにアクセスするための URL は次のようになります。

関連コンテンツ