Erstellen Ihrer ersten unter Linux gehosteten Funktion unter Verwendung von Core Tools und der Azure-Befehlszeilenschnittstelle (Vorschauversion)Create your first function hosted on Linux using Core Tools and the Azure CLI (preview)

Mit Azure Functions können Sie Code in einer serverlosen Linux-Umgebung ausführen, ohne vorher einen virtuellen Computer erstellen oder eine Webanwendung veröffentlichen zu müssen.Azure Functions lets you execute your code in a serverless Linux environment without having to first create a VM or publish a web application. Für das Hosten unter Linux ist die Functions 2.0-Runtime erforderlich.Linux-hosting requires the Functions 2.0 runtime. Die Unterstützung zum Ausführen einer Funktions-App unter Linux im serverlosen Verbrauchstarif ist derzeit als Vorschauversion verfügbar.Support to run a function app on Linux in the serverless Consumption plan is currently in preview. Weitere Informationen finden Sie in diesem Artikel zu besonderen Aspekten der Vorschauversion.To learn more, see this preview considerations article.

In diesem Schnellstartartikel erfahren Sie Schritt für Schritt, wie Sie mithilfe der Azure-Befehlszeilenschnittstelle Ihre erste unter Linux ausgeführte Funktions-App erstellen.This quickstart article walks you through how to use the Azure CLI to create your first function app running on Linux. Der Funktionscode wird lokal erstellt und dann über Azure Functions Core Tools in Azure bereitgestellt.The function code is created locally and then deployed to Azure by using the Azure Functions Core Tools.

Die folgenden Schritte werden für Mac-, Windows- oder Linux-Computer unterstützt.The following steps are supported on a Mac, Windows, or Linux computer. In diesem Artikel wird gezeigt, wie Sie Funktionen in JavaScript oder C# erstellen.This article shows you how to create functions in either JavaScript or C#. Informationen zum Erstellen von Python-Funktionen finden Sie unter Erstellen Ihrer ersten Python-Funktion in Azure (Vorschauversion).To learn how to create Python functions, see Create your first Python function using Core Tools and the Azure CLI (preview).

VoraussetzungenPrerequisites

Vor dem Ausführen dieses Beispiels benötigen Sie Folgendes:Before running this sample, you must have the following:

  • Installieren Sie die Azure CLI.Install the Azure CLI. Für diesen Artikel ist die Azure CLI-Version 2.0 oder höher erforderlich.This article requires the Azure CLI version 2.0 or later. Führen Sie az --version aus, um herauszufinden, welche Version Sie haben.Run az --version to find the version you have. Sie können ebenso Azure Cloud Shell verwenden.You can also use the Azure Cloud Shell.

  • Ein aktives Azure-Abonnement.An active Azure subscription.

Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.If you don't have an Azure subscription, create a free account before you begin.

Erstellen des lokalen Funktions-App-ProjektsCreate the local function app project

Führen Sie den folgenden Befehl zum Erstellen eines Funktions-App-Projekts im MyFunctionProj-Ordner des aktuellen lokalen Verzeichnisses über die Befehlszeile aus.Run the following command from the command line to create a function app project in the MyFunctionProj folder of the current local directory. Ein GitHub-Repository wird ebenfalls in MyFunctionProj erstellt.A GitHub repo is also created in MyFunctionProj.

func init MyFunctionProj

Wenn Sie aufgefordert werden, wählen Sie mit den Pfeiltasten eine Workerruntime aus den folgenden Sprachauswahlmöglichkeiten aus:When prompted, use the arrow keys to select a worker runtime from the following language choices:

  • dotnet: Erstellt ein .NET-Klassenbibliotheksprojekt (.csproj).dotnet: creates a .NET class library project (.csproj).
  • node: erstellt ein JavaScript- oder TypeScript-Projekt.node: creates a JavaScript or TypeScript project. Wählen Sie bei der entsprechenden Aufforderung JavaScript aus.When prompted, choose JavaScript.
  • python: Erstellt ein Python-Projekt.python: creates a Python project. Informationen zu Python-Funktionen finden Sie in der Schnellstartanleitung für Python.For Python functions, see the Python quickstart.

Wenn der Befehl ausgeführt wird, sehen Sie etwa folgende Ausgabe:When the command executes, you see something like the following output:

Writing .gitignore
Writing host.json
Writing local.settings.json
Initialized empty Git repository in C:/functions/MyFunctionProj/.git/

Verwenden Sie den folgenden Befehl, um zu dem neuen Projektordner MyFunctionProj zu navigieren.Use the following command to navigate to the new MyFunctionProj project folder.

cd MyFunctionProj

Aktivieren von EweiterungsbundlesEnable extension bundles

Der einfachste Weg, Bindungserweiterungen zu installieren, ist die Aktivierung von Erweiterungspaketen.The easiest way to install binding extensions is to enable extension bundles. Wenn die Pakete aktiviert sind, wird ein vordefinierter Satz von Erweiterungspaketen automatisch installiert.With bundles enabled, a predefined set of extension packages are automatically installed.

Um Erweiterungspakete zu aktivieren, öffnen Sie die Datei host.json und aktualisieren Sie ihren Inhalt entsprechend dem folgenden Code:To enable extension bundles, open the host.json file and update its contents to match the following code:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[1.*, 2.0.0)"
    }
}

Erstellen einer FunktionCreate a function

Der folgende Befehl erstellt eine per HTTP ausgelöste Funktion namens MyHttpTrigger.The following command creates an HTTP-triggered function named MyHttpTrigger.

func new --name MyHttpTrigger --template "HttpTrigger"

Wenn der Befehl ausgeführt wird, sehen Sie etwa folgende Ausgabe:When the command executes, you see something like the following output:

The function "MyHttpTrigger" was created successfully from the "HttpTrigger" template.

Lokales Ausführen der FunktionRun the function locally

Führen Sie den folgenden Befehl aus, um die Funktions-App zu starten.The following command starts the function app. Die App wird mit der gleichen Azure Functions-Runtime ausgeführt, die in Azure vorliegt.The app runs using the same Azure Functions runtime that is in Azure.

func host start --build

Die --build-Option ist erforderlich, um C#-Projekte zu kompilieren.The --build option is required to compile C# projects. Für ein JavaScript-Projekt benötigen Sie diese Option nicht.You don't need this option for a JavaScript project.

Wenn der Functions-Host startet, schreibt er eine Ausgabe ähnlich der folgenden, die zur besseren Lesbarkeit beschnitten wurde:When the Functions host starts, it write something like the following output, which has been truncated for readability:


                  %%%%%%
                 %%%%%%
            @   %%%%%%    @
          @@   %%%%%%      @@
       @@@    %%%%%%%%%%%    @@@
     @@      %%%%%%%%%%        @@
       @@         %%%%       @@
         @@      %%%       @@
           @@    %%      @@
                %%
                %

...

Content root path: C:\functions\MyFunctionProj
Now listening on: http://0.0.0.0:7071
Application started. Press Ctrl+C to shut down.

...

Http Functions:

        HttpTrigger: http://localhost:7071/api/MyHttpTrigger

[8/27/2018 10:38:27 PM] Host started (29486ms)
[8/27/2018 10:38:27 PM] Job host started

Kopieren Sie die URL Ihrer HttpTrigger-Funktion aus der Runtimeausgabe, und fügen Sie sie in die Adressleiste Ihres Browsers ein.Copy the URL of your HttpTrigger function from the runtime output and paste it into your browser's address bar. Hängen Sie anschließend die Abfragezeichenfolge ?name=<yourname> an diese URL an, und führen Sie die Anforderung aus.Append the query string ?name=<yourname> to this URL and execute the request. Hier ist die Antwort des Browsers auf die von der lokalen Funktion zurückgegebenen GET-Anforderung abgebildet:The following shows the response in the browser to the GET request returned by the local function:

Lokales Testen im Browser

Jetzt haben Sie die Funktion lokal ausgeführt und können die Funktions-App und andere erforderliche Ressourcen in Azure erstellen.Now that you have run your function locally, you can create the function app and other required resources in Azure.

Erstellen einer RessourcengruppeCreate a resource group

Erstellen Sie mit dem Befehl az group create eine Ressourcengruppe.Create a resource group with the az group create. Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen wie Funktionen-Apps, Datenbanken und Speicherkonten bereitgestellt und verwaltet werden.An Azure resource group is a logical container into which Azure resources like function apps, databases, and storage accounts are deployed and managed.

Im folgenden Beispiel wird eine Ressourcengruppe namens myResourceGroup erstellt.The following example creates a resource group named myResourceGroup.
Falls Sie nicht Cloud Shell verwenden, melden Sie sich erst mithilfe von az login an.If you are not using Cloud Shell, sign in first using az login.

az group create --name myResourceGroup --location westeurope

Im Allgemeinen erstellen Sie Ressourcengruppen und Ressourcen in einer Region in Ihrer Nähe.You generally create your resource group and the resources in a region near you. Um alle unterstützten Standorte für App Service-Pläne anzuzeigen, führen Sie den Befehl az appservice list-locations aus.To see all supported locations for App Service plans, run the az appservice list-locations command.

Erstellen eines Azure-SpeicherkontosCreate an Azure Storage account

Functions verwendet ein allgemeines Konto in Azure Storage, um den Zustand und andere Informationen über Ihre Funktionen zu verwalten.Functions uses a general-purpose account in Azure Storage to maintain state and other information about your functions. Erstellen Sie mit dem Befehl az storage account create ein allgemeines Storage-Konto in der erstellten Ressourcengruppe.Create a general-purpose storage account in the resource group you created by using the az storage account create command.

Ersetzen Sie im folgenden Befehl den Platzhalter <storage_name> durch einen eindeutigen Speicherkontonamen.In the following command, substitute a globally unique storage account name where you see the <storage_name> placeholder. Speicherkontonamen müssen zwischen 3 und 24 Zeichen lang sein und dürfen nur Zahlen und Kleinbuchstaben enthalten.Storage account names must be between 3 and 24 characters in length and may contain numbers and lowercase letters only.

az storage account create --name <storage_name> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

Nach dem Erstellen des Speicherkontos zeigt die Azure-CLI ähnliche Informationen wie im folgenden Beispiel an:After the storage account has been created, the Azure CLI shows information similar to the following example:

{
  "creationTime": "2017-04-15T17:14:39.320307+00:00",
  "id": "/subscriptions/bbbef702-e769-477b-9f16-bc4d3aa97387/resourceGroups/myresourcegroup/...",
  "kind": "Storage",
  "location": "westeurope",
  "name": "myfunctionappstorage",
  "primaryEndpoints": {
    "blob": "https://myfunctionappstorage.blob.core.windows.net/",
    "file": "https://myfunctionappstorage.file.core.windows.net/",
    "queue": "https://myfunctionappstorage.queue.core.windows.net/",
    "table": "https://myfunctionappstorage.table.core.windows.net/"
  },
     ....
    // Remaining output has been truncated for readability.
}

Erstellen einer Linux-Funktions-App in AzureCreate a Linux function app in Azure

Sie müssen über eine Funktions-App verfügen, die die Ausführung Ihrer Funktionen unter Linux hostet.You must have a function app to host the execution of your functions on Linux. Die Funktions-App bietet eine serverlose Umgebung für die Ausführung Ihres Funktionscodes.The function app provides a serverless environment for executing your function code. Mit ihr können Sie Funktionen zu logischen Einheiten gruppieren. Dies erleichtert die Verwaltung, Bereitstellung und Freigabe von Ressourcen.It lets you group functions as a logic unit for easier management, deployment, and sharing of resources. Erstellen Sie mithilfe des Befehls az functionapp create eine unter Linux ausführbare Funktions-App.Create a function app running on Linux by using the az functionapp create command.

Ersetzen Sie im folgenden Befehl den Platzhalter <app_name> durch einen eindeutigen Namen für die Funktions-App und <storage_name> durch den Speicherkontonamen.In the following command, use a unique function app name where you see the <app_name> placeholder and the storage account name for <storage_name>. <app_name> ist gleichzeitig die DNS-Standarddomäne für die Funktions-App.The <app_name> is also the default DNS domain for the function app. Dieser Name muss für alle Apps in Azure eindeutig sein.This name needs to be unique across all apps in Azure. Zudem sollten Sie die <language>-Runtime für Ihre Funktions-App auf dotnet (C#), node (JavaScript/TypeScript) oder python festlegen.You should also set the <language> runtime for your function app, from dotnet (C#), node (JavaScript/TypeScript), or python.

az functionapp create --resource-group myResourceGroup --consumption-plan-location westus --os-type Linux \
--name <app_name> --storage-account  <storage_name> --runtime <language>

Nach Erstellung der Funktions-App wird die folgende Meldung angezeigt:After the function app has been created, you see the following message:

Your serverless Linux function app 'myfunctionapp' has been successfully created.
To active this function app, publish your app content using Azure Functions Core Tools or the Azure portal.

Nun können Sie Ihr Projekt in der neuen Funktions-App in Azure veröffentlichen.Now, you can publish your project to the new function app in Azure.

Bereitstellen des Funktions-App-Projekts in AzureDeploy the function app project to Azure

Nach dem Erstellen der Funktions-App in Azure können Sie den Core Tools-Befehl func azure functionapp publish verwenden, um Ihren Projektcode in Azure bereitzustellen.After the function app is created in Azure, you can use the func azure functionapp publish Core Tools command to deploy your project code to Azure. Ersetzen Sie im folgenden Befehl <APP_NAME> durch den Namen Ihrer App aus dem vorherigen Schritt.In the following command, replace <APP_NAME> with the name of your app from the previous step.

func azure functionapp publish <APP_NAME>

Es wird in etwa die folgende Ausgabe angezeigt, die zur Verbesserung der Lesbarkeit gekürzt wurde.You will see output similar to the following, which has been truncated for readability.

Getting site publishing info...
...

Preparing archive...
Uploading content...
Upload completed successfully.
Deployment completed successfully.
Syncing triggers...
Functions in myfunctionapp:
    HttpTrigger - [httpTrigger]
        Invoke url: https://myfunctionapp.azurewebsites.net/api/httptrigger?code=cCr8sAxfBiow548FBDLS1....

Kopieren Sie den Aufruf-URL-Wert für Ihren „HttpTrigger“, den Sie nun zum Testen Ihrer Funktion in Azure verwenden können.Copy the Invoke URL value for your HttpTrigger, which you can now use to test your function in Azure. Die URL enthält einen code-Abfragezeichenfolgenwert, der Ihr Funktionsschlüssel ist.The URL contains a code query string value that is your function key. Dieser Schlüssel erschwert es anderen Benutzern, Ihren HTTP-Triggerendpunkt in Azure aufzurufen.This key makes it difficult for others to call your HTTP trigger endpoint in Azure.

Testen der Funktion in AzureTest the function in Azure

Testen Sie die bereitgestellte Funktion mit cURL.Use cURL to test the deployed function. Fügen Sie unter Verwendung der URL, die Sie im vorherigen Schritt kopiert haben, die Abfragezeichenfolge &name=<yourname> an die URL an, wie im folgenden Beispiel gezeigt:Using the URL that you copied from the previous step, append the query string &name=<yourname> to the URL, as in the following example:

curl https://myfunctionapp.azurewebsites.net/api/httptrigger?code=cCr8sAxfBiow548FBDLS1....&name=<yourname>

Verwenden von cURL zum Aufrufen der Funktion in Azure

Sie können auch die kopierte URL in die Adressleiste des Webbrowsers einfügen.You can also paste the copied URL in to the address of your web browser. Hängen Sie die Abfragezeichenfolge &name=<yourname> erneut an die URL an, bevor Sie die Anforderung ausführen.Again, append the query string &name=<yourname> to the URL before you execute the request.

Verwenden eines Webbrowsers zum Aufrufen der Funktion

Bereinigen von RessourcenClean up resources

Andere Schnellstarts in dieser Sammlung bauen auf diesem Schnellstart auf.Other quickstarts in this collection build upon this quickstart. Wenn Sie planen, mit den nachfolgenden Schnellstarts oder Tutorials fortzufahren, sollten Sie die in diesem Schnellstart erstellten Ressourcen nicht bereinigen.If you plan to continue on to work with subsequent quickstarts or with the tutorials, do not clean up the resources created in this quickstart. Falls Sie nicht fortfahren möchten, können Sie den folgenden Befehl ausführen, um alle erstellten Ressourcen dieses Schnellstarts zu löschen:If you do not plan to continue, use the following command to delete all resources created by this quickstart:

az group delete --name myResourceGroup

Geben Sie y ein, wenn Sie dazu aufgefordert werden.Type y when prompted.

Nächste SchritteNext steps

Informieren Sie sich ausführlicher über die lokale Entwicklung mit Azure Functions unter Verwendung von Azure Functions Core Tools.Learn more about developing Azure Functions locally using the Azure Functions Core Tools.