The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.
このページを編集

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がバイナリ形式をサポートしていないため、現時点ではテキストベースのメディアタイプのみがサポートされています

要件

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

ソリューション

このガイドでは、Quarkus REST エンドポイントを 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 dev mode

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 dev mode

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

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

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

./mvnw quarkus:run

または

./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

または

./gradlew --info deploy

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

例えば

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

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

関連コンテンツ