Erstellen einer durch HTTP ausgelösten Funktion in AzureCreate an HTTP triggered function in Azure

Hinweis

Python für Azure Functions ist zurzeit als Vorschauversion verfügbar.Python for Azure Functions is currently in preview. Abonnieren Sie das Repository mit Azure App Service-Ankündigungen auf GitHub, um wichtige Updates zu erhalten.To receive important updates, subscribe to the Azure App Service announcements repository on GitHub.

Dieser Artikel demonstriert die Verwendung von Befehlszeilentools zum Erstellen eines Python-Projekts, das in Azure Functions ausgeführt wird.This article shows you how to use command-line tools to create a Python project that runs in Azure Functions. Die von Ihnen erstellte Funktion wird durch HTTP-Anforderungen ausgelöst.The function you create is triggered by HTTP requests. Abschließend veröffentlichen Sie Ihr Projekt zur Ausführung als serverlose Funktion in Azure.Finally, you publish your project to run as a serverless function in Azure.

Dieser Artikel ist der erste von zwei Schnellstarts für Azure Functions.This article is the first of two quickstarts for Azure Functions. Nach dem Durcharbeiten dieses Artikels können Sie Ihrer Funktion eine Ausgabebindung an eine Azure Storage-Warteschlange hinzufügen.After you complete this article, you add an Azure Storage queue output binding to your function.

VoraussetzungenPrerequisites

Für den Einstieg müssen Sie über Folgendes verfügen:Before you start, 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 und Aktivieren einer virtuellen UmgebungCreate and activate a virtual environment

Um Python-Funktionen lokal entwickeln und testen zu können, müssen Sie in einer Python 3.6-Umgebung arbeiten.To locally develop and test Python functions, you must work in a Python 3.6 environment. Führen Sie die folgenden Befehle aus, um eine virtuelle Umgebung mit dem Namen .env zu erstellen und zu aktivieren.Run the following commands to create and activate a virtual environment named .env.

Bash:Bash:

python3.6 -m venv .venv
source .venv/bin/activate

PowerShell oder eine Windows-Eingabeaufforderung:PowerShell or a Windows command prompt:

py -3.6 -m venv .venv
.venv\scripts\activate

Die verbleibenden Befehle werden in der virtuellen Umgebung ausgeführt.The remaining commands are run inside the virtual environment.

Erstellen eines lokalen Functions-ProjektsCreate a local Functions project

Ein Functions-Projekt stellt das Äquivalent einer Funktions-App in Azure dar.A Functions project is the equivalent of a function app in Azure. Es kann mehrere Funktionen aufweisen, die die gleichen lokalen und Hostingkonfigurationen gemein haben.It can have multiple functions that all share the same local and hosting configurations.

Führen Sie in der virtuellen Umgebung den folgenden Befehl aus, und wählen Sie dabei python als Workerruntime aus.In the virtual environment, run the following command, choosing python as your worker runtime.

func init MyFunctionProj

Es wird ein Ordner mit dem Namen MyFunctionProj erstellt, der die folgenden drei Dateien enthält:A folder named MyFunctionProj is created, which contains the following three files:

  • local.settings.json wird verwendet, um bei der lokalen Ausführung App-Einstellungen und Verbindungszeichenfolgen zu speichern.local.settings.json is used to store app settings and connection strings when running locally. Diese Datei wird nicht in Azure veröffentlicht.This file doesn't get published to Azure.
  • requirements.txt enthält die Liste der bei der Veröffentlichung in Azure zu installierenden Pakete.requirements.txt contains the list of packages to be installed on publishing to Azure.
  • host.json enthält globale Konfigurationsoptionen, die sich auf alle Funktionen in einer Funktions-App auswirken.host.json contains global configuration options that affect all functions in a function app. Diese Datei wird in Azure veröffentlicht.This file does get published to Azure.

Navigieren Sie zum neuen MyFunctionProj-Ordner:Navigate to the new MyFunctionProj folder:

cd MyFunctionProj

Aktualisieren Sie als Nächstes die host.json-Datei, um Erweiterungsbundles zu aktivieren.Next, you update the host.json file to enable extension bundles.

Erstellen einer FunktionCreate a function

Führen Sie den folgenden Befehl aus, um Ihrem Projekt eine Funktion hinzuzufügen:To add a function to your project, run the following command:

func new

Wählen Sie die HTTP-Trigger-Vorlage aus, geben Sie HttpTrigger als Namen der Funktion ein, und drücken Sie dann die EINGABETASTE.Choose the HTTP trigger template, type HttpTrigger as the name for the function, then press Enter.

Es wird ein Unterordner mit dem Namen HttpTrigger erstellt, der die folgenden Dateien enthält:A subfolder named HttpTrigger is created, which contains the following files:

  • function.json: Konfigurationsdatei, die die Funktion, Trigger und weitere Bindungen definiert.function.json: configuration file that defines the function, trigger, and other bindings. Überprüfen Sie diese Datei, und beachten Sie, dass der Wert für scriptFile auf die Datei verweist, die die Funktion enthält, während der Aufruftrigger und die Bindungen im Array bindings definiert sind.Review this file and see that the value for scriptFile points to the file containing the function, while the invocation trigger and bindings are defined in the bindings array.

    Für jede Bindung sind eine Richtung, ein Typ und ein eindeutiger Name erforderlich.Each binding requires a direction, type and a unique name. Der HTTP-Trigger weist eine Eingabebindung vom Typ httpTrigger und eine Ausgabebindung vom Typ http auf.The HTTP trigger has an input binding of type httpTrigger and output binding of type http.

  • __Init__.py: Skriptdatei, die Ihre per HTTP ausgelöste Funktion darstellt.__init__.py: script file that is your HTTP triggered function. Überprüfen Sie dieses Skript, und beachten Sie, dass es eine main()-Standardfunktion enthält.Review this script and see that it contains a default main(). HTTP-Daten aus dem Trigger werden mithilfe des benannten Bindungsparameters req an diese Funktion übergeben.HTTP data from the trigger is passed to this function using the req named binding parameter. req ist in function.json definiert und stellt eine Instanz der azure.functions.HttpRequest-Klasse dar.Defined in function.json, req is an instance of the azure.functions.HttpRequest class.

    Das Rückgabeobjekt, das in function.json als $return definiert ist, ist eine Instanz der azure.functions.HttpResponse-Klasse.The return object, defined as $return in function.json, is an instance of azure.functions.HttpResponse class. Weitere Informationen finden Sie unter HTTP-Trigger und -Bindungen in Azure Functions.To learn more, see Azure Functions HTTP triggers and bindings.

Lokales Ausführen der FunktionRun the function locally

Der folgende Befehl startet die Funktions-App, die lokal mithilfe der gleichen Azure Functions-Runtime ausgeführt wird, die in Azure vorhanden ist.The following command starts the function app, which runs locally using the same Azure Functions runtime that is in Azure.

func host start

Wenn der Functions-Host startet, schreibt er eine Ausgabe ähnlich der folgenden, die zur besseren Lesbarkeit beschnitten wurde:When the Functions host starts, it writes 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 Funktions-App in AzureCreate a function app in Azure

Eine Funktions-App stellt eine Umgebung für die Ausführung Ihres Funktionscodes bereit.A function app provides an 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 logical unit for easier management, deployment, and sharing of resources.

Führen Sie den folgenden Befehl aus, indem Sie den Platzhalter <APP_NAME> durch einen eindeutigen Namen für die Funktions-App und <STORAGE_NAME> durch den Speicherkontonamen ersetzen.Run the following command using a unique function app name in place of 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.

az functionapp create --resource-group myResourceGroup --os-type Linux \
--consumption-plan-location westeurope  --runtime python \
--name <APP_NAME> --storage-account  <STORAGE_NAME>

Hinweis

Azure Functions: Der Verbrauchsplan für Linux befindet sich derzeit in der Vorschau und steht nur in folgenden Regionen zur Verfügung: „USA, Westen“, „USA, Osten“, „Europa, Westen“, „Asien, Osten“.Azure Functions, Consumption plan for Linux is currently in preview and only available on following regions: West US, East US, West Europe, East Asia. Linux- und Windows-Apps können zudem nicht in derselben Ressourcengruppe gehostet werden.Moreover, Linux and Windows apps cannot be hosted in the same resource group. Wenn Sie über eine bestehende Ressourcengruppe mit dem Namen myResourceGroup und einer Windows-Funktions-App oder -Web-App verfügen, müssen Sie eine andere Ressourcengruppe verwenden.If you have an existing resource group named myResourceGroup with a Windows function app or web app, you must use a different resource group.

Nun können Sie Ihr lokales Funktions-Projekt in der Funktions-App in Azure veröffentlichen.You're now ready to publish your local functions project to the 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

Nächste SchritteNext steps

Sie haben ein Python-Funktionsprojekt mit einer per HTTP ausgelösten Funktion erstellt, es auf Ihrem lokalen Computer ausgeführt und es in Azure bereitgestellt.You've created a Python functions project with an HTTP triggered function, run it on your local machine, and deployed it to Azure. Erweitern Sie nun Ihre Funktion durch...Now, extend your function by...