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:

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

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.

Aktualisieren der FunktionUpdate the function

Standardmäßig erstellt die Vorlage eine Funktion, die bei Anforderungen einen Funktionsschlüssel benötigt.By default, the template creates a function that requires a function key when making requests. Um das Testen der Funktion in Azure zu vereinfachen, müssen Sie die Funktion aktualisieren, um anonymen Zugriff zuzulassen.To make it easier to test the function in Azure, you need to update the function to allow anonymous access. Wie Sie diese Änderung vornehmen, hängt von Ihrer Funktionenprojektsprache ab.The way that you make this change depends on your functions project language.

C#C#

Öffnen Sie die MyHttpTrigger.cs-Codedatei, die Ihre neue Funktion ist, aktualisieren Sie das AuthorizationLevel-Attribut in der Funktionsdefinition mit dem Wert Anonymous, und speichern Sie die Änderungen.Open the MyHttpTrigger.cs code file that is your new function and update the AuthorizationLevel attribute in the function definition to a value of Anonymous and save your changes.

[FunctionName("MyHttpTrigger")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log)

JavaScriptJavaScript

Öffnen Sie die Datei „function.json“ für Ihre neue Funktion in einem Text-Editor, aktualisieren Sie die authLevel-Eigenschaft in bindings in anonymous, und speichern Sie die Änderungen.Open the function.json file for your new function in a text editor, update the authLevel property in bindings to anonymous, and save your changes.

  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    }
  ]

Jetzt können Sie die Funktion in Azure aufrufen, ohne den Funktionsschlüssel anzugeben.Now you can call the function in Azure without having to supply the function key. Der Funktionsschlüssel ist bei lokaler Ausführung nie erforderlich.The function key is never required when running locally.

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 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 command to deploy your project code to Azure.

func azure functionapp publish <FunctionAppName>

Sie sehen eine Ausgabe ähnlich der folgenden, die zur besseren Lesbarkeit beschnitten wurde.You see something like the following output, which has been truncated for readability.

Getting site publishing info...

...

Preparing archive...
Uploading content...
Upload completed successfully.
Deployment completed successfully.
Syncing triggers...

Sie können jetzt Ihre Funktionen in Azure testen.You can now test your functions in Azure.

Testen der FunktionTest the function

Verwenden Sie cURL, um die bereitgestellte Funktion auf einem Mac oder Linux-Computer oder mithilfe von PowerShell unter Windows zu testen.Use cURL to test the deployed function on a Mac or Linux computer or using Powershell on Windows. Führen Sie den folgenden cURL-Befehl aus, und ersetzen Sie dabei den Platzhalter <app_name> mit dem Namen der Funktionen-App.Execute the following cURL command, replacing the <app_name> placeholder with the name of your function app. Fügen Sie die Abfragezeichenfolge &name=<yourname> an die URL an.Append the query string &name=<yourname> to the URL.

Invoke-WebRequest -Uri "https://<app_name>.azurewebsites.net/api/MyHttpTrigger?name=<yourname>"
curl https://<app_name>.azurewebsites.net/api/MyHttpTrigger?name=<yourname>

Die Funktionsantwort wird in einem Browser angezeigt.

Wenn cURL oder Invoke-WebRequest in der Befehlszeile nicht zur Verfügung steht, geben Sie dieselbe URL in die Adressleiste des Webbrowsers ein.If you don't have cURLor Invoke-WebRequest available in your command line, enter the same URL in the address of your web browser. Ersetzen Sie erneut den Platzhalter <app_name> durch den Namen der Funktionen-App, fügen Sie die Abfragezeichenfolge &name=<yourname> an die URL an, und führen Sie die Anforderung aus.Again, replace the <app_name> placeholder with the name of your function app, and append the query string &name=<yourname> to the URL and execute the request.

https://<app_name>.azurewebsites.net/api/MyHttpTrigger?name=<yourname>

Die Funktionsantwort wird in einem Browser angezeigt.

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.