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 create app org.acme:azure-functions-http-quickstart \
    --extension='quarkus-azure-functions-http'
cd azure-functions-http-quickstart

Gradleプロジェクトを作成するには、 --gradle または --gradle-kotlin-dsl オプションを追加します。

Quarkus CLIのインストールと使用方法の詳細については、 Quarkus CLI ガイドを参照してください。

Maven
mvn io.quarkus.platform:quarkus-maven-plugin:3.29.2:create \
    -DprojectGroupId=org.acme \
    -DprojectArtifactId=azure-functions-http-quickstart \
    -Dextensions='quarkus-azure-functions-http'
cd azure-functions-http-quickstart

Gradleプロジェクトを作成するには、 -DbuildTool=gradle または -DbuildTool=gradle-kotlin-dsl オプションを追加します。

Windowsユーザーの場合:

  • cmdを使用する場合、(バックスラッシュ \ を使用せず、すべてを同じ行に書かないでください)。

  • Powershellを使用する場合は、 -D パラメータを二重引用符で囲んでください。例: "-DprojectArtifactId=azure-functions-http-quickstart"

This command generates a project structure importing the Quarkus Azure Functions HTTP extension. It includes an example.

プロジェクトの確認

生成されたプロジェクトの pom.xml または build.gradle ビルドファイルを開くと、 このプロジェクトは他の Quarkus プロジェクトと同様であることがわかります。 quarkus-azure-functions-http エクステンションは、 Quarkus と Azure Functions のインテグレーションポイントです。

The current implementation of the quarkus-azure-functions-http extension no longer requires the azure-functions-maven-plugin or Gradle equivalent. Local development and Azure Functions packaging and deployment is now all done by Quarkus.

Build configuration is all within application.properties. The only required configuration switch is 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 dev mode works by just running your application as a HTTP endpoint. In dev mode, there is no special interaction with the Azure Functions local runtime.

コマンドラインインタフェース
quarkus dev
Maven
./mvnw quarkus:dev
Gradle
./gradlew --console=plain quarkusDev

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

If you want to try this example within the local Azure Functions environment, you can use this command:

コマンドラインインタフェース
quarkus run
Maven
./mvnw quarkus:run
Gradle
./gradlew --console=plain --info --no-daemon quarkusRun

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

You must have the Azure Functions Core Tools installed for this to work.

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

Quarkus統合テスト

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

Maven
./mvnw verify
Gradle
./gradlew --info quarkusIntTest

Make sure any integration tests you execute with Maven use the *IT.java file pattern so that regular builds do not execute the test.

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

Azureへのログイン

To be able to deploy your application to Azure, log in to Azure:

az login

Azureへのデプロイ

The quarkus-azure-functions-http extension handles all the work to deploy to Azure. By default, Quarkus will use the Azure CLI in the background to authenticate and deploy to Azure. If you have multiple subscriptions associated with your account, you must set the quarkus.azure-functions.subscription-id property in your application.properties file to the subscription you want to use. For other authentication mechanisms and deployment options see Azure Functions Configuration Reference.

To deploy your application, after you built your project, execute:

Maven
./mvnw quarkus:deploy
Gradle
./gradlew --info deploy

For Gradle, you must use the --info switch to see this output.

If deployment is a success, Quarkus will output the endpoint URL of the example function to the console:

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

The URL to access the service would be something like: https://{appName}.azurewebsites.net/api/hello.

Azure Functions Configuration Reference

ビルド時に固定される設定プロパティ - 他のすべての設定プロパティは実行時にオーバーライド可能

Configuration property

タイプ

デフォルト

App name for azure function project. This is required setting. Defaults to the base artifact name

Environment variable: QUARKUS_AZURE_FUNCTIONS_APP_NAME

Show more

string

Azure Resource Group for your Azure Functions

Environment variable: QUARKUS_AZURE_FUNCTIONS_RESOURCE_GROUP

Show more

string

quarkus

Specifies the region where your Azure Functions will be hosted; default value is westus. Valid values

Environment variable: QUARKUS_AZURE_FUNCTIONS_REGION

Show more

string

westus

Specifies whether to disable application insights for your function app

Environment variable: QUARKUS_AZURE_FUNCTIONS_DISABLE_APP_INSIGHTS

Show more

boolean

false

Specifies the instrumentation key of application insights which will bind to your function app

Environment variable: QUARKUS_AZURE_FUNCTIONS_APP_INSIGHTS_KEY

Show more

string

Valid values are linux, windows, and docker

Environment variable: QUARKUS_AZURE_FUNCTIONS_RUNTIME_OS

Show more

string

linux

Should be set to at least the minimum Quarkus compatible version

Environment variable: QUARKUS_AZURE_FUNCTIONS_RUNTIME_JAVA_VERSION

Show more

string

17

URL of docker image if deploying via docker

Environment variable: QUARKUS_AZURE_FUNCTIONS_RUNTIME_IMAGE

Show more

string

If using docker, url of registry

Environment variable: QUARKUS_AZURE_FUNCTIONS_RUNTIME_REGISTRY_URL

Show more

string

Description of each type can be found here Valid values are

  • azure_cli Delegates to Azure CLI for login

  • managed_identity Requires client to be set

  • oauth2 Requires tenant to be set

  • device_code Requires tenant to be set

  • file Filesystem path to a property file that defines authentication. Properties supported are

  • type Supports same type values as well as service_principal

  • client

  • tenant

  • key Password for service_principal if using password authentication

  • certificate Path to PEM file if using service_principal

  • certificate-password Password for PEM file if it is password protected and if using service_principal

  • environment if using service_principal

Defaults to "azure_cli" for authentication

Environment variable: QUARKUS_AZURE_FUNCTIONS_AUTH_TYPE

Show more

string

azure_cli

Filesystem path to properties file if using file type

Environment variable: QUARKUS_AZURE_FUNCTIONS_AUTH_PATH

Show more

string

Client or App Id required if using managed_identity type

Environment variable: QUARKUS_AZURE_FUNCTIONS_AUTH_CLIENT

Show more

string

Tenant ID required if using oauth2 or device_code type

Environment variable: QUARKUS_AZURE_FUNCTIONS_AUTH_TENANT

Show more

string

Specifies the name of the existing App Service Plan when you do not want to create a new one.

Environment variable: QUARKUS_AZURE_FUNCTIONS_APP_SERVICE_PLAN_NAME

Show more

string

java-functions-app-service-plan

The app service plan resource group.

Environment variable: QUARKUS_AZURE_FUNCTIONS_APP_SERVICE_PLAN_RESOURCE_GROUP

Show more

string

Azure subscription id. Required only if there are more than one subscription in your account

Environment variable: QUARKUS_AZURE_FUNCTIONS_SUBSCRIPTION_ID

Show more

string

The pricing tier.

Environment variable: QUARKUS_AZURE_FUNCTIONS_PRICING_TIER

Show more

string

Port to run azure function in local runtime. Will default to quarkus.http.test-port or 8081

Environment variable: QUARKUS_AZURE_FUNCTIONS_FUNC_PORT

Show more

int

Config String for local debug

Environment variable: QUARKUS_AZURE_FUNCTIONS_LOCAL_DEBUG_CONFIG

Show more

string

transport=dt_socket,server=y,suspend=n,address=5005

関連コンテンツ