Hızlı başlangıç: Azure 'da bir işlev oluşturmak ve yayımlamak için Java ve Maven kullanmaQuickstart: Use Java and Maven to create and publish a function to Azure

Bu makalede, Maven komut satırı aracıyla Azure Işlevleri için bir Java işlevi oluşturma ve yayımlama işlemi gösterilmektedir.This article shows you how to build and publish a Java function to Azure Functions with the Maven command-line tool. İşiniz bittiğinde, işlev kodunuz Azure 'da sunucusuz bir barındırma planında çalışır ve bir http isteği tarafından tetiklenir.When you're done, your function code runs in Azure in a serverless hosting plan and is triggered by an HTTP request.

ÖnkoşullarPrerequisites

Java kullanarak işlevleri geliştirmek için aşağıdakilerin yüklü olması gerekir:To develop functions using Java, you must have the following installed:

Azure aboneliğinizyoksa başlamadan önce ücretsiz bir hesap oluşturun.If you don't have an Azure subscription, create a free account before you begin.

Önemli

Bu hızlı başlangıcın tamamlanabilmesi için JAVA_HOME ortam değişkeni JDK’nin yükleme konumu olarak ayarlanmalıdır.The JAVA_HOME environment variable must be set to the install location of the JDK to complete this quickstart.

Yeni İşlevler projesi oluşturmaGenerate a new Functions project

İşlevler projesini bir Maven arketipinden oluşturmak için boş bir klasörde aşağıdaki komutu çalıştırın.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 

Not

Komutu çalıştırmaya ilişkin sorunlarla karşılaşıyorsanız, hangi maven-archetype-plugin sürümünün kullanıldığını göz atın.If you're experiencing issues with running the command, take a look at what maven-archetype-plugin version is used. Komutunu .pom dosyası olmayan boş bir dizinde çalıştırdığınız için, Maven 'nizi eski bir sürümden yükselttiyseniz ~/.m2/repository/org/apache/maven/plugins/maven-archetype-plugin eski sürümün bir eklentisini kullanmaya çalışıyor olabilir.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. Bu durumda, maven-archetype-plugin dizinini silmeyi ve komutu yeniden çalıştırmayı deneyin.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, dağıtımda projenin oluşturulmasını tamamlaması için gereken değerleri ister.Maven asks you for values needed to finish generating the project on deployment. İstendiğinde aşağıdaki değerleri sağlayın:Provide the following values when prompted:

DeğerValue AçıklamaDescription
IDgroupId Java için paket adlandırma kurallarını takip eden tüm projelerde projenizi benzersiz bir şekilde tanımlayan bir değer.A value that uniquely identifies your project across all projects, following the package naming rules for Java. Bu hızlı başlangıçtaki örneklerde com.fabrikam.functionskullanılır.The examples in this quickstart use com.fabrikam.functions.
ArtifactIdartifactId Bir sürüm numarası olmadan jar adı olan bir değer.A value that is the name of the jar, without a version number. Bu hızlı başlangıçtaki örneklerde fabrikam-functionskullanılır.The examples in this quickstart use fabrikam-functions.
Sürümversion 1.0-SNAPSHOTvarsayılan değerini seçin.Choose the default value of 1.0-SNAPSHOT.
leyebilirpackage Oluşturulan işlev kodu için Java paketi olan bir değer.A value that is the Java package for the generated function code. Varsayılan değeri kullanın.Use the default. Bu hızlı başlangıçtaki örneklerde com.fabrikam.functionskullanılır.The examples in this quickstart use com.fabrikam.functions.
appNameappName Azure 'da yeni işlev uygulamanızı tanımlayan genel olarak benzersiz ad.Globally unique name that identifies your new function app in Azure. ArtifactId , rastgele bir sayı ile eklenmiş olan varsayılanı kullanın.Use the default, which is the artifactId appended with a random number. Bu değeri, daha sonra ihtiyacınız olacağını unutmayın.Make a note of this value, you'll need it later.
appRegionappRegion Kendinize veya işlevinizin erişeceği diğer hizmetlere yakın bir bölge seçin.Choose a region near you or near other services your functions access. Varsayılan değer: westus.The default is westus. Tüm bölgelerin bir listesini almak için bu Azure CLI komutunu çalıştırın:Run this Azure CLI command to get a list of all regions:
az account list-locations --query '[].{Name:name}' -o tsv
KaynakresourceGroup İşlev uygulamanızın oluşturulacağı yeni kaynak grubunun adı.Name for the new resource group in which to create your function app. Bu hızlı başlangıçta örnekleri tarafından kullanılan myResourceGroupkullanın.Use myResourceGroup, which is used by examples in this quickstart. Kaynak grubu, Azure aboneliğiniz için benzersiz olmalıdır.A resource group must be unique to your Azure subscription.

Onaylamak için Y yazın veya ENTER tuşuna basın.Type Y or press Enter to confirm.

Maven, proje dosyalarını _ArtifactId_adında yeni bir klasörde oluşturur. bu örnekte fabrikam-functions.Maven creates the project files in a new folder with a name of artifactId, which in this example is fabrikam-functions.

Yeni Function. Java dosyasını bir metin düzenleyicisinde src/Main/Java yolundan açın ve oluşturulan kodu gözden geçirin.Open the new Function.java file from the src/main/java path in a text editor and review the generated code. Bu kod, isteğin gövdesini yansıtan http ile tetiklenen bir işlevdir.This code is an HTTP triggered function that echoes the body of the request.

İşlevi yerel olarak çalıştırmaRun the function locally

Dizini yeni oluşturulan proje klasörü ile değiştiren aşağıdaki komutu çalıştırın, sonra işlev projesini oluşturup çalıştırır: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

Projeyi yerel olarak çalıştırdığınızda Azure Functions Core Tools aşağıdakine benzer bir çıktı görürsünüz: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
...

Yeni bir Terminal penceresinde kıvrımlı kullanarak işlevi komut satırından tetikleyin: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!

Yerel olarak çalıştırılırken işlev anahtarı gerekli değildir.The function key isn't required when running locally. İşlev kodunu durdurmak için terminalde Ctrl+C komutunu kullanın.Use Ctrl+C in the terminal to stop the function code.

İşlevi Azure’a dağıtmaDeploy the function to Azure

İşlev uygulamanızı ilk kez dağıttığınızda Azure 'da bir işlev uygulaması ve ilgili kaynaklar oluşturulur.A function app and related resources are created in Azure when you first deploy your function app. Dağıtmadan önce, Azure aboneliğinizde oturum açmak için az Login Azure CLI komutunu kullanın.Before you can deploy, use the az login Azure CLI command to sign in to your Azure subscription.

az login

İpucu

Hesabınız birden çok aboneliğe erişebildeyse, bu oturum için varsayılan aboneliği ayarlamak üzere az Account set kullanın.If your account can access multiple subscriptions, use az account set to set the default subscription for this session.

Projenizi yeni bir işlev uygulamasına dağıtmak için aşağıdaki Maven komutunu kullanın.Use the following Maven command to deploy your project to a new function app.

mvn azure-functions:deploy

Bu azure-functions:deploy Maven hedefi, Azure 'da aşağıdaki kaynakları oluşturur:This azure-functions:deploy Maven target creates the following resources in Azure:

  • Kaynak grubu.Resource group. Sağladığınız resourceGroup ile adlandırılmış.Named with the resourceGroup you supplied.
  • depolama hesabı.Storage account. Işlevleri için gereklidir.Required by Functions. Ad, depolama hesabı adı gereksinimlerine göre rastgele oluşturulur.The name is generated randomly based on Storage account name requirements.
  • App Service planı.App service plan. Belirtilen Appregion'da işlev uygulamanız için sunucusuz barındırma.Serverless hosting for your function app in the specified appRegion. Ad rastgele oluşturulur.The name is generated randomly.
  • İşlev uygulaması.Function app. İşlev uygulaması, işlevleriniz için dağıtım ve yürütme birimidir.A function app is the deployment and execution unit for your functions. Ad, rastgele oluşturulmuş bir sayıyla eklenmiş olan uygulamadır.The name is your appName, appended with a randomly generated number.

Dağıtım ayrıca proje dosyalarını paketleyip, paket Çalıştır modu etkin olan ZIP dağıtımınıkullanarak yeni işlev uygulamasına dağıtır.The deployment also packages the project files and deploys them to the new function app using zip deployment, with run-from-package mode enabled.

Dağıtım tamamlandıktan sonra, işlev uygulaması uç noktalarınıza erişmek için kullanabileceğiniz URL 'YI görürsünüz.After the deployment completes, you see the URL you can use to access your function app endpoints. Yayımladığımız HTTP tetikleyicisi authLevel = AuthorizationLevel.FUNCTIONkullandığından, işlev uç noktasını HTTP üzerinden çağırmak için işlev anahtarını almanız gerekir.Because the HTTP trigger we published uses authLevel = AuthorizationLevel.FUNCTION, you need to get the function key to call the function endpoint over HTTP. İşlev anahtarını almanın en kolay yolu Azure Portal.The easiest way to get the function key is from the Azure portal.

HTTP tetikleyici URL 'sini alGet the HTTP trigger URL

İşlevinizi tetiklemeniz için gereken URL 'yi, Azure portal işlev anahtarıyla alabilirsiniz.You can get the URL required to the trigger your function, with the function key, from the Azure portal.

  1. Azure Portalgidin, oturum açın, sayfanın üst kısmında arama yapmak için işlev uygulamanızın appname öğesini yazın ve ENTER tuşuna basın.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. İşlev uygulamanızda Işlevler ' i genişletin (salt okunurdur) , işlevinizi seçin, sonra </> Işlev URL 'sini al ' ı seçin.In your function app, expand Functions (Read Only), choose your function, then select </> Get function URL at the top right.

    Azure portalından işlev URL’sini kopyalama

  3. Varsayılan (işlev anahtarı) öğesini seçin ve Kopyala' yı seçin.Choose default (Function key) and select Copy.

Şimdi, işlevinizi erişmek için kopyalanmış URL 'YI kullanabilirsiniz.You can now use the copied URL to access your function.

Azure 'da işlevi doğrulamaVerify the function in Azure

cURLkullanarak Azure 'da çalışan işlev uygulamasını doğrulamak için, aşağıdaki örnekteki URL 'YI portaldan kopyaladığınız URL ile değiştirin.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

Bu, istek gövdesinde AzureFunctions ile işlev uç noktasına bir POST isteği gönderir.This sends a POST request to the function endpoint with AzureFunctions in the body of the request. Aşağıdaki yanıtı görürsünüz.You see the following response.

Hello AzureFunctions!

Sonraki adımlarNext steps

HTTP ile tetiklenen bir işlev içeren bir Java işlevleri projesi oluşturdunuz, yerel makinenizde çalıştırın ve Azure 'a dağıttınız.You've created a Java functions project with an HTTP triggered function, run it on your local machine, and deployed it to Azure. Şimdi, işlevinizi genişletin...Now, extend your function by...