Azure Functions: EntwicklerhandbuchAzure Functions developers guide

In Azure Functions nutzen bestimmte Funktionen einige wichtige technische Konzepte und Komponenten gemeinsam, unabhängig von der verwendeten Sprache oder Bindung.In Azure Functions, specific functions share a few core technical concepts and components, regardless of the language or binding you use. Bevor Sie sich mit den spezifischen Details einer bestimmten Sprache oder Bindung beschäftigen, sollten Sie diese Übersicht lesen, die für alle Funktionen gilt.Before you jump into learning details specific to a given language or binding, be sure to read through this overview that applies to all of them.

Dieser Artikel setzt voraus, dass Sie die Einführung in Azure Functions bereits gelesen haben.This article assumes that you've already read the Azure Functions overview.

FunktionscodeFunction code

Ein Funktion ist das primäre Konzept in Azure Functions.A function is the primary concept in Azure Functions. Eine Funktion enthält zwei wichtige Komponenten: Ihren Code, der in einer Vielzahl von Programmiersprachen geschrieben sein kann, und die Datei „function.json“ mit Konfigurationsinformationen.A function contains two important pieces - your code, which can be written in a variety of languages, and some config, the function.json file. Für kompilierte Sprachen wird diese Konfigurationsdatei automatisch aus Anmerkungen im Code generiert.For compiled languages, this config file is generated automatically from annotations in your code. Für Skriptsprachen müssen Sie die Konfigurationsdatei selbst bereitstellen.For scripting languages, you must provide the config file yourself.

Die Datei „function.json“ definiert den Trigger, die Bindungen und weitere Konfigurationseinstellungen der Funktion.The function.json file defines the function's trigger, bindings, and other configuration settings. Jede Funktion verfügt nur über einen einzigen Trigger.Every function has one and only one trigger. Anhand dieser Konfigurationsdatei ermittelt die Runtime, welche Ereignisse überwacht werden sollen und wie Daten in die Funktionsausführung übergeben und aus dieser zurückgegeben werden.The runtime uses this config file to determine the events to monitor and how to pass data into and return data from a function execution. Im Folgenden finden Sie eine function.json-Beispieldatei.The following is an example function.json file.

{
    "disabled":false,
    "bindings":[
        // ... bindings here
        {
            "type": "bindingType",
            "direction": "in",
            "name": "myParamName",
            // ... more depending on binding
        }
    ]
}

In der Eigenschaft bindings werden sowohl Trigger als auch Bindungen konfiguriert.The bindings property is where you configure both triggers and bindings. Einige Einstellungen gelten für alle Bindungen, einige Einstellungen sind spezifisch für einen bestimmten Bindungstyp.Each binding shares a few common settings and some settings which are specific to a particular type of binding. Jede Bindung erfordert folgende Einstellungen:Every binding requires the following settings:

EigenschaftProperty Werte/TypenValues/Types KommentareComments
type Zeichenfolgestring Bindungstyp.Binding type. Beispiel: queueTrigger.For example, queueTrigger.
direction 'in', 'out''in', 'out' Gibt an, ob die Bindung zum Empfangen von Daten in der Funktion oder zum Senden von Daten aus der Funktion dient.Indicates whether the binding is for receiving data into the function or sending data from the function.
name Zeichenfolgestring Der Name, der für die gebundenen Daten in der Funktion verwendet wird.The name that is used for the bound data in the function. In C# ist dies ein Argumentname, in JavaScript ist es der Schlüssel in einer Schlüssel-Wert-Liste.For C#, this is an argument name; for JavaScript, it's the key in a key/value list.

Funktionen-AppFunction app

Eine Funktions-App bietet einen Ausführungskontext in Azure, in dem Ihre Funktionen ausgeführt werden.A function app provides an execution context in Azure in which your functions run. Eine Funktions-App besteht aus einer oder mehreren individuellen Funktionen, die zusammen verwaltet, bereitgestellt und skaliert werden.A function app is comprised of one or more individual functions that are managed, deployed, and scaled together. Der Tarif, die kontinuierliche Bereitstellung und die Laufzeitversion sind für alle Funktionen in einer Funktionen-App gleich.All of the functions in a function app share the same pricing plan, continuous deployment and runtime version. Eine Funktionen-App ist somit eine Möglichkeit, mit der Sie Ihre Funktionen organisieren und kollektiv verwalten können.Think of a function app as a way to organize and collectively manage your functions.

Hinweis

Alle Funktionen in einer Funktions-App müssen in der gleichen Programmiersprache erstellt werden.All functions in a function app must be authored in the same language. In Vorgängerversionen der Azure Functions-Runtime war dies nicht erforderlich.In previous versions of the Azure Functions runtime, this wasn't required.

OrdnerstrukturFolder structure

Der Code für alle Funktionen in einer bestimmten Funktions-App befindet sich in einem Stammprojektordner, der eine Hostkonfigurationsdatei und mindestens einen Unterordner enthält.The code for all the functions in a specific function app is located in a root project folder that contains a host configuration file and one or more subfolders. Jeder Unterordner enthält den Code für eine separate Funktion, wie in folgender Darstellung gezeigt:Each subfolder contains the code for a separate function, as in the following representation:

FunctionApp
 | - host.json
 | - Myfirstfunction
 | | - function.json
 | | - ...  
 | - mysecondfunction
 | | - function.json
 | | - ...  
 | - SharedCode
 | - bin

In der Version 2.x der Functions-Runtime müssen sich alle Funktionen in der Funktions-App denselben Spracharbeitsthread teilen.In version 2.x of the Functions runtime, all functions in the function app must share the same language worker.

Die Datei host.json, die die laufzeitspezifische Konfiguration enthält, befindet sich im Stammordner der Funktions-App.The host.json file, which contains some runtime-specific configurations, is in the root folder of the function app. Ein bin-Ordner enthält Pakete und andere Bibliotheksdateien, die von der Funktions-App benötigt werden.A bin folder contains packages and other library files required by the function app. Sprachspezifische Anforderungen für ein Funktions-App-Projekt:See the language-specific requirements for a function app project:

Oben sehen Sie die standardmäßige (und empfohlene) Ordnerstruktur für eine Funktions-App.The above is the default (and recommended) folder structure for a Function app. Falls Sie den Dateispeicherort des Codes einer Funktion ändern möchten, ändern Sie den Abschnitt scriptFile der Datei function.json.If you wish to change the file location of a function's code, modify the scriptFile section of the function.json file. Außerdem empfehlen wir, das Projekt mithilfe der Paketbereitstellung in Ihrer Funktions-App in Azure bereitzustellen.We also recommend using package deployment to deploy your project to your function app in Azure. Sie können auch vorhandene Tools wie Continuous Integration und Continuous Deployment und Azure DevOps verwenden.You can also use existing tools like continuous integration and deployment and Azure DevOps.

Hinweis

Wenn Sie ein Paket manuell bereitstellen, müssen die Datei host.json und die Funktionsordner direkt im Ordner wwwroot bereitgestellt werden.If deploying a package manually, make sure to deploy your host.json file and function folders directly to the wwwroot folder. Schließen Sie den Ordner wwwroot nicht in Ihre Bereitstellungen ein.Do not include the wwwroot folder in your deployments. Andernfalls erhalten Sie wwwroot\wwwroot-Ordner.Otherwise, you end up with wwwroot\wwwroot folders.

Verwenden von lokalen Tools und VeröffentlichungUse local tools and publishing

Funktions-Apps können mit verschiedenen Tools erstellt und veröffentlicht werden, darunter Visual Studio, Visual Studio Code, IntelliJ, Eclipse und Azure Functions Core Tools.Function apps can be authored and published using a variety of tools, including Visual Studio, Visual Studio Code, IntelliJ, Eclipse, and the Azure Functions Core Tools. Weitere Informationen finden Sie unter Lokales Codieren und Testen von Azure Functions.For more information, see Code and test Azure Functions locally.

Bearbeiten von Funktionen im Azure-PortalHow to edit functions in the Azure portal

Mit dem integrierten Functions-Editor im Azure-Portal können Sie Ihren Code und die Datei function.json direkt inline aktualisieren.The Functions editor built into the Azure portal lets you update your code and your function.json file directly inline. Dies wird nur für kleine Änderungen oder Proof of Concept-Projekte empfohlen. Die bewährte Methode ist die Verwendung eines lokalen Entwicklungstools wie Visual Studio Code.This is recommended only for small changes or proofs of concept - best practice is to use a local development tool like VS Code.

Parallele AusführungParallel execution

Wenn die Auslösung mehrerer Ereignisse schneller erfolgt als die Runtime einer Singlethreadfunktion sie verarbeiten kann, kann die Runtime die Funktion mehrmals parallel aufrufen.When multiple triggering events occur faster than a single-threaded function runtime can process them, the runtime may invoke the function multiple times in parallel. Wenn eine Funktionen-App den verbrauchsbasierten Hostingplan verwendet, kann die App automatisch horizontal hochskaliert werden.If a function app is using the Consumption hosting plan, the function app could scale out automatically. Jede Instanz der Funktionen-App – unabhängig davon, ob die App im verbrauchsbasierten Hostingplan oder einem regulären App Service-Hostingplan ausgeführt wird – kann gleichzeitige Funktionsaufrufe über mehrere Threads parallel verarbeiten.Each instance of the function app, whether the app runs on the Consumption hosting plan or a regular App Service hosting plan, might process concurrent function invocations in parallel using multiple threads. Die maximale Anzahl gleichzeitiger Funktionsaufrufe in jeder Funktionen-App-Instanz variiert je nach Art des verwendeten Triggers sowie je nach den Ressourcen, die von anderen Funktionen innerhalb der Funktionen-App verwendet werden.The maximum number of concurrent function invocations in each function app instance varies based on the type of trigger being used as well as the resources used by other functions within the function app.

Versionsverwaltung der Functions-RuntimeFunctions runtime versioning

Sie können die Version der Functions-Runtime mit der App-Einstellung FUNCTIONS_EXTENSION_VERSION konfigurieren.You can configure the version of the Functions runtime using the FUNCTIONS_EXTENSION_VERSION app setting. Der Wert „~2“ bedeutet beispielsweise, dass für Ihre Funktions-App „2.x“ als deren Hauptversion verwendet wird.For example, the value "~2" indicates that your Function App will use 2.x as its major version. Funktionen-Apps werden auf jede neue Nebenversion aktualisiert, wenn sie freigegeben werden.Function Apps are upgraded to each new minor version as they are released. Weitere Informationen finden Sie unter Einstellen von Runtimeversionen von Azure Functions als Ziel, einschließlich der Informationen zum Anzeigen der genauen Version Ihrer Funktions-App.For more information, including how to view the exact version of your function app, see How to target Azure Functions runtime versions.

RepositorysRepositories

Der Code für Azure Functions ist Open Source und in GitHub-Repositorys gespeichert:The code for Azure Functions is open source and stored in GitHub repositories:

BindungenBindings

Hier finden Sie eine Tabelle aller unterstützten Bindungen.Here is a table of all supported bindings.

Die folgende Tabelle zeigt die Bindungen, die in den beiden Hauptversionen der Azure Functions-Runtime unterstützt werden.The following table shows the bindings that are supported in the two major versions of the Azure Functions runtime.

TypeType 1.x1.x 2.x12.x1 TriggerTrigger EingabeInput OutputOutput
Blob StorageBlob Storage
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
HTTP und WebhooksHTTP & Webhooks
Microsoft Graph
Excel-Tabellen
Microsoft Graph
Excel tables
Microsoft Graph
OneDrive-Dateien
Microsoft Graph
OneDrive files
Microsoft Graph
Outlook-E-Mail
Microsoft Graph
Outlook email
Microsoft Graph
Ereignis
Microsoft Graph
Events
Microsoft Graph
Authentifizierungstoken
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Notification HubsNotification Hubs
Queue StorageQueue storage
SendGridSendGrid
Service BusService Bus
SignalRSignalR
TabellenspeicherungTable storage
ZeitgeberTimer
TwilioTwilio

1 In 2.x müssen alle Bindungen außer HTTP und Timer registriert sein.1 In 2.x, all bindings except HTTP and Timer must be registered. Siehe Registrieren von Bindungserweiterungen.See Register binding extensions.

Haben Sie Probleme mit Fehlern, die aus den Bindungen stammen?Having issues with errors coming from the bindings? Lesen Sie die Dokumentation Fehlerbehandlung in Azure Functions.Review the Azure Functions Binding Error Codes documentation.

Melden von ProblemenReporting Issues

ItemItem BESCHREIBUNGDescription LinkLink
LaufzeitRuntime Script Host, Trigger und Bindungen, SprachunterstützungScript Host, Triggers & Bindings, Language Support Anlegen eines EintragsFile an Issue
VorlagenTemplates Vorlage für Codeprobleme bei der ErstellungCode Issues with Creation Template Anlegen eines EintragsFile an Issue
PortalPortal Probleme mit der BenutzeroberflächeUser Interface or Experience Issue Anlegen eines EintragsFile an Issue

Nächste SchritteNext steps

Weitere Informationen finden Sie in den folgenden Ressourcen:For more information, see the following resources: