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

Azure Functions

quarkus-azure-functions エクステンションは、Azure Functions と Quarkus の間のシンプルな結合ポイントです。 Azure Functions ランタイムと連動して Quarkus をブートストラップし、書いた Azure Functions クラスを CDI/Arc Bean に 変えることができます。

これにより、Quarkus で初期化されたサービスやコンポーネントを、関数クラスに直接注入することができます。 また、関数クラスをシングルトンにしたい場合は、関数クラスのライフサイクルをリクエストスコープ (デフォルト) からアプリケーションスコープに変更することも可能です。

import com.microsoft.azure.functions.ExecutionContext; import com.microsoft.azure.functions.HttpMethod; import com.microsoft.azure.functions.HttpRequestMessage; import com.microsoft.azure.functions.HttpResponseMessage; import com.microsoft.azure.functions.HttpStatus; import com.microsoft.azure.functions.annotation.AuthorizationLevel; import com.microsoft.azure.functions.annotation.FunctionName; import com.microsoft.azure.functions.annotation.HttpTrigger; import jakarta.inject.Inject; import java.util.Optional; public class Function { @Inject GreetingService service; @FunctionName("HttpExample") public HttpResponseMessage run( @HttpTrigger( name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request, final ExecutionContext context) { // Parse query parameter final String query = request.getQueryParameters().get("name"); final String name = request.getBody().orElse(query); if (name == null) { return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build(); } else { return request.createResponseBuilder(HttpStatus.OK).body(service.greeting(name)).build(); } } }

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

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

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

要件

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

ソリューション

このガイドでは、Http Trigger Azure Function クラスをデプロイできる Maven プロジェクトの実行方法について説明します。 この関数クラスは、クライアントに返される挨拶メッセージを生成する CDI Bean サービス を注入します。

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

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

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

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

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

プロジェクトの確認

生成されたプロジェクトの pom.xml または build.gradle ビルドファイルを開くと、 このプロジェクトは他の Quarkus プロジェクトと同様であることがわかります。 quarkus-azure-functions エクステンションは、 Quarkus と Azure Functions のインテグレーションポイントです。これにより、Azure Functions ランタイムにコールバックが登録され、Quarkus をブートストラップし、 Quarkus/Arc を関数クラスの関数ファクトリーとしてセットアップします。

quarkus-azure-functions エクステンションの現在の実装では、もはや azure-functions-maven-plugin や Gradle の同等の プラグインは必要ありません。ローカル開発や Azure Functions のパッケージングおよびデプロイメントは、 すべて Quarkus によって行われます。

ビルド設定はすべて application.properties 内にあります。唯一必要な設定スイッチ は quarkus.azure-functions.app-name です。

Azureデプロイメントディスクリプタ

Azure Functions の`host.json`デプロイメント記述子は自動的に 生成されますが、オーバーライドする必要がある場合は、プロジェクトの root ディレクトリーで宣言し、 準備ができたらビルドを再実行します。

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へのログイン

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

az login

Azureへのデプロイ

quarkus-azure-functions エクステンションは 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/httpexample

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

関連コンテンツ