クイック スタート:Java と Maven を使用して関数を作成し、Azure に発行するQuickstart: Use Java and Maven to create and publish a function to Azure

この記事では、Maven コマンドライン ツールを使用して Java 関数を作成し、Azure Functions に発行する方法を示します。This article shows you how to build and publish a Java function to Azure Functions with the Maven command-line tool. 完了すると、関数コードは Azure のサーバーレス ホスティング プランで実行され、HTTP 要求によってトリガーされます。When you're done, your function code runs in Azure in a serverless hosting plan and is triggered by an HTTP request.

前提条件Prerequisites

Java を使用して関数を開発するには、以下のものがインストールされている必要があります。To develop functions using Java, you must have the following installed:

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

重要

このクイックスタートを行うには、JAVA_HOME 環境変数を JDK のインストール場所に設定する必要があります。The JAVA_HOME environment variable must be set to the install location of the JDK to complete this quickstart.

新しい Functions プロジェクトを生成するGenerate a new Functions project

空のフォルダーで次のコマンドを実行して、Maven アーキタイプから Functions プロジェクトを生成します。In an empty folder, run the following command to generate the Functions project from a Maven archetype.

Linux/macOSLinux/macOS

mvn archetype:generate \
    -DarchetypeGroupId=com.microsoft.azure \
    -DarchetypeArtifactId=azure-functions-archetype 

注意

コマンドの実行で問題が発生した場合は、使用されている maven-archetype-plugin のバージョンを確認します。If you're experiencing issues with running the command, take a look at what maven-archetype-plugin version is used. .pom ファイルがない空のディレクトリでコマンドを実行しているため、Maven を古いバージョンからアップグレードした場合は、~/.m2/repository/org/apache/maven/plugins/maven-archetype-plugin から古いバージョンのプラグインを使用しようとしている可能性があります。Because you are running the command in an empty directory with no .pom file, it might be attempting to use a plugin of the older version from ~/.m2/repository/org/apache/maven/plugins/maven-archetype-plugin if you upgraded your Maven from an older version. その場合は、maven-archetype-plugin ディレクトリを削除した後、コマンドを再実行します。If so, try deleting the maven-archetype-plugin directory and re-running the command.

WindowsWindows

mvn archetype:generate `
    "-DarchetypeGroupId=com.microsoft.azure" `
    "-DarchetypeArtifactId=azure-functions-archetype"
mvn archetype:generate ^
    "-DarchetypeGroupId=com.microsoft.azure" ^
    "-DarchetypeArtifactId=azure-functions-archetype"

Maven により、デプロイ時にプロジェクトの生成を終了するための値の入力が求められます。Maven asks you for values needed to finish generating the project on deployment. 入力を求められたら、次の値を入力します。Provide the following values when prompted:

Value 説明Description
groupIdgroupId Java のパッケージ命名規則に従って、すべてのプロジェクトにわたって対象のプロジェクトを一意に識別する値。A value that uniquely identifies your project across all projects, following the package naming rules for Java. このクイックスタートの例では、com.fabrikam.functions を使用します。The examples in this quickstart use com.fabrikam.functions.
artifactIdartifactId バージョン番号のない、jar の名前である値。A value that is the name of the jar, without a version number. このクイックスタートの例では、fabrikam-functions を使用します。The examples in this quickstart use fabrikam-functions.
versionversion 既定値 1.0-SNAPSHOT を選択します。Choose the default value of 1.0-SNAPSHOT.
packagepackage 生成された関数コードの Java パッケージである値。A value that is the Java package for the generated function code. 既定値を使用します。Use the default. このクイックスタートの例では、com.fabrikam.functions を使用します。The examples in this quickstart use com.fabrikam.functions.
appNameappName Azure の新しい関数アプリを識別するグローバルに一意の名前。Globally unique name that identifies your new function app in Azure. 既定値の、ランダムな番号が付加された artifactId を使用します。Use the default, which is the artifactId appended with a random number. この値は後で必要になるのでメモしておきます。Make a note of this value, you'll need it later.
appRegionappRegion ユーザーに近いリージョン、または関数がアクセスする他のサービスの近くのリージョンを選択します。Choose a region near you or near other services your functions access. 既定では、 westusです。The default is westus. 次の Azure CLI コマンドを実行して、すべてのリージョンの一覧を取得します:Run this Azure CLI command to get a list of all regions:
az account list-locations --query '[].{Name:name}' -o tsv
resourceGroupresourceGroup その中に関数アプリを作成する新しいリソース グループの名前。Name for the new resource group in which to create your function app. このクイックスタートの例で使用されている myResourceGroup を使用します。Use myResourceGroup, which is used by examples in this quickstart. リソース グループは、対象の Azure サブスクリプションに一意である必要があります。A resource group must be unique to your Azure subscription.

Y」と入力するか、Enter キーを押して確認します。Type Y or press Enter to confirm.

Maven により、artifactId という名前の新しいフォルダーにプロジェクト ファイルが作成されます (この例では fabrikam-functions)。Maven creates the project files in a new folder with a name of artifactId, which in this example is fabrikam-functions.

テキスト エディターで src/main/java パスの新しい Function.java ファイルを開き、生成されたコードを確認します。Open the new Function.java file from the src/main/java path in a text editor and review the generated code. このコードは、要求の本文をエコーする、HTTP によってトリガーされる関数です。This code is an HTTP triggered function that echoes the body of the request.

関数をローカルで実行するRun the function locally

次のコマンドを実行します。このコマンドでは、ディレクトリを新しく作成されたプロジェクト フォルダーに変更し、関数プロジェクトをビルドして実行します。Run the following command, which changes the directory to the newly created project folder, then builds and runs the function project:

cd fabrikam-function
mvn clean package 
mvn azure-functions:run

プロジェクトをローカルで実行すると、次のような Azure Functions Core Tools からの出力が表示されます。You see output like the following from Azure Functions Core Tools when you run the project locally:

...

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

Http Functions:

    HttpTrigger-Java: [GET,POST] http://localhost:7071/api/HttpTrigger-Java
...

新しいターミナル ウィンドウで cURL を使用して、コマンド ラインから関数をトリガーします。Trigger the function from the command line using cURL in a new terminal window:

curl -w "\n" http://localhost:7071/api/HttpTrigger-Java --data AzureFunctions
Hello AzureFunctions!

ローカルで実行する場合、関数キーは必要ありません。The function key isn't required when running locally. 関数のコードを停止するには、ターミナルで Ctrl+C を使います。Use Ctrl+C in the terminal to stop the function code.

関数を Azure にデプロイするDeploy the function to Azure

最初に関数アプリをデプロイすると、関数アプリと関連リソースが Azure に作成されます。A function app and related resources are created in Azure when you first deploy your function app. デプロイする前に、az login Azure CLI コマンドを使用して、対象の Azure サブスクリプションにサインインします。Before you can deploy, use the az login Azure CLI command to sign in to your Azure subscription.

az login

ヒント

対象のアカウントで複数のサブスクリプションにアクセスできる場合は、az account set を使用して、このセッションの既定のサブスクリプションを設定します。If your account can access multiple subscriptions, use az account set to set the default subscription for this session.

次の Maven コマンドを使用して、対象のプロジェクトを新しい関数アプリにデプロイします。Use the following Maven command to deploy your project to a new function app.

mvn azure-functions:deploy

この azure-functions:deploy Maven ターゲットでは、次のリソースが Azure に作成されます。This azure-functions:deploy Maven target creates the following resources in Azure:

  • リソース グループ。Resource group. 指定した resourceGroup の名前が付けられます。Named with the resourceGroup you supplied.
  • ストレージ アカウント。Storage account. Functions に必要です。Required by Functions. 名前は、ストレージ アカウント名の要件に基づいてランダムに生成されます。The name is generated randomly based on Storage account name requirements.
  • App Service プラン。App service plan. 指定した appRegion での関数アプリのサーバーレス ホスティング。Serverless hosting for your function app in the specified appRegion. 名前はランダムに生成されます。The name is generated randomly.
  • 関数アプリ。Function app. 関数アプリは、関数のデプロイと実行の単位です。A function app is the deployment and execution unit for your functions. 名前は appName で、ランダムに生成された番号が付加されます。The name is your appName, appended with a randomly generated number.

また、デプロイにより、プロジェクト ファイルがパッケージ化され、zip デプロイを使用して Run-From-Package モードが有効な状態で新しい関数アプリにデプロイされます。The deployment also packages the project files and deploys them to the new function app using zip deployment, with run-from-package mode enabled.

デプロイが完了すると、関数アプリのエンドポイントへのアクセスに使うことができる URL が表示されます。After the deployment completes, you see the URL you can use to access your function app endpoints. 公開した HTTP トリガーは authLevel = AuthorizationLevel.FUNCTION を使用するため、HTTP 経由で関数エンドポイントを呼び出すために関数キーを取得する必要があります。Because the HTTP trigger we published uses authLevel = AuthorizationLevel.FUNCTION, you need to get the function key to call the function endpoint over HTTP. 関数キーを取得する最も簡単な方法は、Azure portal を利用することです。The easiest way to get the function key is from the Azure portal.

HTTP トリガー URL を取得するGet the HTTP trigger URL

関数をトリガーするために必要な URL は、関数キーと共に Azure portal から取得できます。You can get the URL required to the trigger your function, with the function key, from the Azure portal.

  1. Azure portal を参照してサインインし、対象の関数アプリの appName をページ上部の [検索] に入力して、Enter キーを押します。Browse to the Azure portal, sign in, type the appName of your function app into Search at the top of the page, and press enter.

  2. 対象の関数アプリで、 [関数 (読み取り専用)] を展開し、対象の関数を選択します。次に、右上にある [</> 関数の URL の取得] を選択します。In your function app, expand Functions (Read Only), choose your function, then select </> Get function URL at the top right.

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

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

これで、コピーした URL を使用して関数にアクセスできます。You can now use the copied URL to access your function.

Azure で関数を検証するVerify the function in Azure

cURL を使用して Azure で実行されている関数アプリを検証するには、次のサンプルの URL を、ポータルからコピーした URL に置き換えます。To verify the function app running on Azure using cURL, replace the URL from the sample below with the URL that you copied from the portal.

curl -w "\n" https://fabrikam-functions-20190929094703749.azurewebsites.net/api/HttpTrigger-Java?code=zYRohsTwBlZ68YF.... --data AzureFunctions

これにより、要求の本文に AzureFunctions が含まれる POST 要求が関数エンドポイントに送信されます。This sends a POST request to the function endpoint with AzureFunctions in the body of the request. 次の応答が表示されます。You see the following response.

Hello AzureFunctions!

次の手順Next steps

HTTP でトリガーされる関数を含む Java 関数プロジェクトを作成し、ローカル コンピューターでそれを実行し、Azure にデプロイしました。You've created a Java functions project with an HTTP triggered function, run it on your local machine, and deployed it to Azure. 次は以下の方法で関数を拡張します。Now, extend your function by...