Java と Gradle を使用して関数を作成し、Azure に発行する

この記事では、Gradle コマンドライン ツールを使用して Java 関数プロジェクトを作成し、Azure Functions に発行する方法を示します。 完了すると、関数コードは Azure のサーバーレス ホスティング プランで実行され、HTTP 要求によってトリガーされます。

注

Gradle が推奨される開発ツールでない場合は、Maven、IntelliJ IDEA、および VS Code を使用する Java 開発者向けの同様のチュートリアルを確認してください。

前提条件

Java を使用して関数を開発するには、以下のものがインストールされている必要があります。

アクティブな Azure サブスクリプションも必要です。 Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。

重要

このクイックスタートを行うには、JAVA_HOME 環境変数を JDK のインストール場所に設定する必要があります。

Functions プロジェクトを準備する

次のコマンドを使用して、サンプル プロジェクトを複製します。

git clone https://github.com/Azure-Samples/azure-functions-samples-java.git
cd azure-functions-samples-java/triggers-bindings

build.gradle を開き、次のセクションの appName を一意の名前に変更して、Azure にデプロイするときにドメイン名が競合しないようにします。

azurefunctions {
    resourceGroup = 'java-functions-group'
    appName = 'azure-functions-sample-demo'
    pricingTier = 'Consumption'
    region = 'westus'
    runtime {
      os = 'windows'
    }
    localDebug = "transport=dt_socket,server=y,suspend=n,address=5005"
}

テキスト エディターで src/main/java パスの新しい Function.java ファイルを開き、生成されたコードを確認します。 このコードは、要求の本文をエコーする、HTTP によってトリガーされる関数です。

関数をローカルで実行する

次のコマンドを実行して、関数プロジェクトをビルドして実行します。

gradle jar --info
gradle azureFunctionsRun

プロジェクトをローカルで実行すると、次のような Azure Functions Core Tools からの出力が表示されます。

...

Now listening on: http://0.0.0.0:7071
Application started. Press Ctrl+C to shut down.

Http Functions:

    HttpExample: [GET,POST] http://localhost:7071/api/HttpExample
...

新しいターミナル ウィンドウで次の cURL コマンドを使用して、コマンド ラインから関数をトリガーします。

curl -w "\n" http://localhost:7071/api/HttpExample --data AzureFunctions

予想される出力は次のとおりです。

Hello, AzureFunctions

注

authLevel を FUNCTION または ADMIN に設定すると、ローカルで実行する場合にアクセス キーは必要ありません。

関数のコードを停止するには、ターミナルで Ctrl+C を使います。

関数を Azure にデプロイする

最初に関数アプリをデプロイすると、関数アプリと関連リソースが Azure に作成されます。 デプロイする前に、az login Azure CLI コマンドを使用して、対象の Azure サブスクリプションにサインインします。

az login

ヒント

対象のアカウントで複数のサブスクリプションにアクセスできる場合は、az account set を使用して、このセッションの既定のサブスクリプションを設定します。

次のコマンドを使用して、対象のプロジェクトを新しい関数アプリにデプロイします。

gradle azureFunctionsDeploy

これにより、gradle ファイルの値に基づいて、次のリソースが Azure に作成されます。

  • リソース グループ。 指定した resourceGroup の名前が付けられます。
  • ストレージ アカウント。 Functions に必要です。 名前は、ストレージ アカウント名の要件に基づいてランダムに生成されます。
  • App Service プラン。 指定した リージョン での、関数アプリのサーバーレス従量課金プラン ホスティング。 名前はランダムに生成されます。
  • 関数アプリ。 関数アプリは、関数のデプロイと実行の単位です。 名前は appName で、ランダムに生成された番号が付加されます。

デプロイメントではプロジェクトファイルをパッケージ化し、 ZIPデプロイメントを用いて新しい関数アプリにデプロイし、ランフロムパッケージモードを有効にします。

サンプル プロジェクトの HTTP トリガーの authLevel は ANONYMOUSであり、認証はスキップされます。 ただし、FUNCTION または ADMIN などの authLevel を使用した場合、HTTP 経由で関数エンドポイントを呼び出すために関数キーを取得する必要があります。 関数キーを取得する最も簡単な方法は、Azure portal を利用することです。

HTTP トリガー URL を取得する

関数をトリガーするために必要な URL は、関数キーと共に Azure portal から取得できます。

  1. Azure portal を参照してサインインし、対象の関数アプリの appName をページ上部の [検索] に入力して、Enter キーを押します。

  2. 対象の関数アプリで、 [関数] を選び、対象の関数を選択します。次に、右上にある [関数の URL の取得] をクリックします。

    Azure portal からの関数 URL のコピー

  3. [default (Function key)]\(既定 (関数キー)\) を選択し、 [コピー] を選択します。

これで、コピーした URL を使用して関数にアクセスできます。

Azure で関数を検証する

cURL を使用して Azure で実行されている関数アプリを検証するには、次のサンプルの URL を、ポータルからコピーした URL に置き換えます。

curl -w "\n" http://azure-functions-sample-demo.azurewebsites.net/api/HttpExample --data AzureFunctions

これにより、要求の本文に AzureFunctions が含まれる POST 要求が関数エンドポイントに送信されます。 次の応答が表示されます。

Hello, AzureFunctions

次のステップ

HTTP でトリガーされる関数を含む Java 関数プロジェクトを作成し、ローカル コンピューターでそれを実行し、Azure にデプロイしました。 次は以下の方法で関数を拡張します。