Verbinden von Funktionen mit Azure Storage mithilfe von Visual StudioConnect functions to Azure Storage using Visual Studio

Azure Functions gestattet Ihnen das Verbinden von Azure-Diensten und anderen Ressourcen mit Funktionen, ohne dass Sie Ihren eigenen Integrationscode schreiben müssen.Azure Functions lets you connect Azure services and other resources to functions without having to write your own integration code. Diese Bindungen, die sowohl Eingabe als auch Ausgabe darstellen, werden innerhalb der Funktionsdefinition deklariert.These bindings, which represent both input and output, are declared within the function definition. Daten von Bindungen werden der Funktion als Parameter bereitgestellt.Data from bindings is provided to the function as parameters. Ein Trigger ist ein spezieller Typ von Eingabebindung.A trigger is a special type of input binding. Eine Funktion hat zwar nur einen Trigger, kann aber mehrere Ein- und Ausgabebindungen haben.Although a function has only one trigger, it can have multiple input and output bindings. Weitere Informationen finden Sie unter Konzepte der Trigger und Bindungen in Azure Functions.To learn more, see Azure Functions triggers and bindings concepts.

In diesem Artikel wird beschrieben, wie Sie die Funktion, die Sie im Vorheriger Schnellstartartikel erstellt haben, mithilfe von Visual Studio mit Azure Storage verbinden.This article shows you how to use Visual Studio to connect the function you created in the previous quickstart article to Azure Storage. Die Ausgabebindung, die Sie dieser Funktion hinzufügen, schreibt Daten aus der HTTP-Anforderung in eine Nachricht in einer Azure Queue Storage-Warteschlange.The output binding that you add to this function writes data from the HTTP request to a message in an Azure Queue storage queue.

Die meisten Bindungen erfordern eine gespeicherte Verbindungszeichenfolge, die Functions verwendet, um auf den gebundenen Dienst zuzugreifen.Most bindings require a stored connection string that Functions uses to access the bound service. Um dies zu vereinfachen, verwenden Sie das Speicherkonto, das Sie mit Ihrer Funktions-App erstellt haben.To make it easier, you use the Storage account that you created with your function app. Die Verbindung mit diesem Konto ist bereits in einer App-Einstellung namens AzureWebJobsStorage gespeichert.The connection to this account is already stored in an app setting named AzureWebJobsStorage.

VoraussetzungenPrerequisites

Bevor Sie mit diesem Artikel beginnen, sind folgende Schritte erforderlich:Before you start this article, you must:

  • Absolvieren Sie [Teil 1 der Visual Studio-Schnellstartanleitung][./functions-create-first-function-vs-code.md].Complete [part 1 of the Visual Studio quickstart][./functions-create-first-function-vs-code.md].

  • Melden Sie sich über Visual Studio bei Ihrem Azure-Abonnement an.Sign in to your Azure subscription from Visual Studio.

Herunterladen der Funktions-App-EinstellungenDownload the function app settings

Im vorherigen Schnellstartartikel haben Sie zusammen mit dem erforderlichen Storage-Konto eine Funktions-App in Azure erstellt.In the previous quickstart article, you created a function app in Azure along with the required Storage account. Die Verbindungszeichenfolge für dieses Konto wird sicher in App-Einstellungen in Azure gespeichert.The connection string for this account is stored securely in app settings in Azure. In diesem Artikel schreiben Sie Nachrichten in eine Speicherwarteschlange in demselben Konto.In this article, you write messages to a Storage queue in the same account. Um bei der lokalen Ausführung der Funktion eine Verbindung mit Ihrem Storage-Konto herzustellen, müssen Sie App-Einstellungen in die Datei local.settings.json herunterladen.To connect to your Storage account when running the function locally, you must download app settings to the local.settings.json file.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen aus.In Solution Explorer, right-click the project and select Publish.

  2. Wählen Sie unter Aktionen die Option Azure App Service-Einstellungen bearbeiten.Under Actions, select Edit Azure App Service Settings.

    Bearbeiten der Anwendungseinstellungen

  3. Kopieren Sie unter AzureWebJobsStorage den Zeichenfolgenwert Remote in das Feld Lokal, und wählen Sie dann OK aus.Under AzureWebJobsStorage, copy the Remote string value to Local, and then select OK.

Die Speicherbindung, die für die Verbindung die Einstellung AzureWebJobsStorage verwendet, kann nun bei lokaler Ausführung eine Verbindung mit Ihrer Queue Storage-Instanz herstellen.The storage binding, which uses the AzureWebJobsStorage setting for the connection, can now connect to your Queue storage when running locally.

Registrieren von BindungserweiterungenRegister binding extensions

Da Sie eine Queue Storage-Ausgabebindung verwenden, müssen Sie vor dem Ausführen des Projekts die Storage-Bindungserweiterung installieren.Because you're using a Queue storage output binding, you need the Storage bindings extension installed before you run the project. Mit Ausnahme von HTTP- und Timertriggern werden Bindungen als Erweiterungspakete implementiert.Except for HTTP and timer triggers, bindings are implemented as extension packages.

  1. Wählen Sie im Menü Extras die Optionen NuGet-Paket-Manager > Paket-Manager-Konsole aus.From the Tools menu, select NuGet Package Manager > Package Manager Console.

  2. Fügen Sie in der Konsole den folgenden Befehl Install-Package aus, um die Storage-Erweiterungen zu installieren:In the console, run the following Install-Package command to install the Storage extensions:

    Install-Package Microsoft.Azure.WebJobs.Extensions.Storage -Version 3.0.6
    

Dann können Sie dem Projekt die Storage-Ausgabebindung hinzufügen.Now, you can add the storage output binding to your project.

Hinzufügen einer AusgabebindungAdd an output binding

In einem C#-Klassenbibliotheksprojekt werden die Bindungen als Bindungsattribute der Funktionsmethode definiert.In a C# class library project, the bindings are defined as binding attributes on the function method. Die Datei function.json wird basierend auf diesen Attributen automatisch generiert.The function.json file is then auto-generated based on these attributes.

Öffnen Sie die Projektdatei HttpTrigger.cs, und fügen Sie die folgende using-Anweisung hinzu:Open the HttpTrigger.cs project file and add the following using statement:

using Microsoft.Azure.WebJobs.Extensions.Storage;

Fügen Sie der Run-Methodendefinition den folgenden Parameter hinzu:Add the following parameter to the Run method definition:

[Queue("outqueue"),StorageAccount("AzureWebJobsStorage")] ICollector<string> msg

Der Parameter msg ist ein ICollector<T>-Typ und stellt eine Sammlung von Nachrichten dar, die in eine Ausgabebindung geschrieben werden, wenn die Funktion abgeschlossen wird.The msg parameter is an ICollector<T> type, which represents a collection of messages that are written to an output binding when the function completes. In diesem Fall ist die Ausgabe eine Speicherwarteschlange mit dem Namen outqueue.In this case, the output is a storage queue named outqueue. Die Verbindungszeichenfolge für das Storage-Konto wird durch StorageAccountAttribute festgelegt.The connection string for the Storage account is set by the StorageAccountAttribute. Dieses Attribut gibt die Einstellung an, die die Verbindungszeichenfolge des Storage-Kontos enthält, und kann auf Klassen-, Methoden- oder Parameterebene angewandt werden.This attribute indicates the setting that contains the Storage account connection string and can be applied at the class, method, or parameter level. In diesem Fall können Sie StorageAccountAttribute weglassen, da Sie bereits das Standardspeicherkonto verwenden.In this case, you could omit StorageAccountAttribute because you are already using the default storage account.

Die Run-Methodendefinition sollte nun wie folgt aussehen:The Run method definition should now look like the following:

[FunctionName("HttpTrigger")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, 
    [Queue("outqueue"),StorageAccount("AzureWebJobsStorage")] ICollector<string> msg, ILogger log)

Hinzufügen von Code, der die Ausgabebindung verwendetAdd code that uses the output binding

Nachdem die Bindung definiert wurde, können Sie den name der Bindung verwenden, um auf sie als Attribut in der Funktionssignatur zuzugreifen.After the binding is defined, you can use the name of the binding to access it as an attribute in the function signature. Durch die Verwendung einer Ausgabebindung müssen Sie weder den Azure Storage-SDK-Code für die Authentifizierung verwenden, noch einen Warteschlangenverweis abrufen oder Daten schreiben.By using an output binding, you don't have to use the Azure Storage SDK code for authentication, getting a queue reference, or writing data. Die Functions-Runtime und die Warteschlangenausgabebindung übernehmen diese Aufgaben für Sie.The Functions runtime and queue output binding do those tasks for you.

Fügen Sie Code hinzu, der das Ausgabebindungsobjekt msg verwendet, um eine Warteschlangennachricht zu erstellen.Add code that uses the msg output binding object to create a queue message. Fügen Sie diesen Code vor der Rückgabe der Methode hinzu.Add this code before the method returns.

if (!string.IsNullOrEmpty(name))
{
    // Add a message to the output collection.
    msg.Add(string.Format("Name passed to the function: {0}", name));
}

Die Funktion sollte nun wie folgt aussehen:At this point, your function should look as follows:

[FunctionName("HttpTrigger")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, 
    [Queue("outqueue"),StorageAccount("AzureWebJobsStorage")] ICollector<string> msg, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    string name = req.Query["name"];

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    name = name ?? data?.name;

    if (!string.IsNullOrEmpty(name))
    {
        // Add a message to the output collection.
        msg.Add(string.Format("Name passed to the function: {0}", name));
    }
    return name != null
        ? (ActionResult)new OkObjectResult($"Hello, {name}")
        : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}

Lokales Ausführen der FunktionRun the function locally

  1. Drücken Sie F5, um Ihre Funktion auszuführen.To run your function, press F5. Sie müssen möglicherweise eine Firewallausnahme aktivieren, damit die Tools HTTP-Anforderungen verarbeiten können.You may need to enable a firewall exception so that the tools can handle HTTP requests. Autorisierungsstufen werden bei lokaler Ausführung nie erzwungen.Authorization levels are never enforced when running locally.

  2. Kopieren Sie die URL Ihrer Funktion aus der Azure Functions-Laufzeitausgabe.Copy the URL of your function from the Azure Functions runtime output.

    Lokale Azure-Laufzeit

  3. Fügen Sie die URL der HTTP-Anforderung in die Adresszeile des Browsers ein.Paste the URL for the HTTP request into your browser's address bar. Hängen Sie anschließend die Abfragezeichenfolge ?name=<YOUR_NAME> an diese URL an, und führen Sie die Anforderung aus.Append the query string ?name=<YOUR_NAME> to this URL and execute the request. Hier ist die Antwort des Browsers auf die von der Funktion zurückgegebene lokale GET-Anforderung abgebildet:The following shows the response in the browser to the local GET request returned by the function:

    localhost-Antwort der Funktion im Browser

  4. Drücken Sie UMSCHALT+F5, um das Debuggen zu beenden.To stop debugging, press Shift + F5.

Eine neue Warteschlange mit dem Namen outqueue wird in Ihrem Speicherkonto von der Functions-Runtime erstellt, wenn die Ausgabebindung zum ersten Mal verwendet wird.A new queue named outqueue is created in your storage account by the Functions runtime when the output binding is first used. Mit dem Cloud-Explorer überprüfen Sie, ob die Warteschlange zusammen mit der neuen Nachricht erstellt wurde.You'll use Cloud Explorer to verify that the queue was created along with the new message.

Überprüfen der AusgabewarteschlangeExamine the output queue

  1. Öffnen Sie in Visual Studio im Menü Ansicht die Option Cloud-Explorer.In Visual Studio from the View menu, select Cloud Explorer.

  2. Erweitern Sie im Cloud-Explorer Ihr Azure-Abonnement und Speicherkonten und anschließend das von Ihrer Funktion verwendete Speicherkonto.In Cloud Explorer, expand your Azure subscription and Storage Accounts, then expand the storage account used by your function. Den Namen des Speicherkontos finden Sie in der Datei local.settings.json in der VerbindungszeichenfolgeAzureWebJobsStorage.If you can't remember the storage account name, check the AzureWebJobsStorage connection string setting in the local.settings.json file.

  3. Erweitern Sie den Knoten Warteschlangen, und doppelklicken Sie anschließend auf die Warteschlange namens outqueue, um die Inhalte der Warteschlange in Visual Studio anzuzeigen.Expand the Queues node, and then double-click the queue named outqueue to view the contents of the queue in Visual Studio.

    Die Warteschlange enthält die Meldung, die die Warteschlangen-Ausgabebindung erstellt hat, als Sie die per HTTP ausgelöste Funktion ausgeführt haben.The queue contains the message that the queue output binding created when you ran the HTTP-triggered function. Wenn Sie die Funktion mit dem name-Standardwert Azure aufgerufen haben, lautet die Warteschlangenmeldung Name passed to the function: Azure (An die Funktion übergebener Name: Azure).If you invoked the function with the default name value of Azure, the queue message is Name passed to the function: Azure.

    In Azure Storage-Explorer angezeigte Warteschlangennachricht

  4. Führen Sie die Funktion erneut aus, und senden Sie eine andere Anforderung. Daraufhin wird eine neue Nachricht in der Warteschlange angezeigt.Run the function again, send another request, and you'll see a new message appear in the queue.

Nun ist es an der Zeit, die aktualisierte Funktions-App erneut in Azure zu veröffentlichen.Now, it's time to republish the updated function app to Azure.

Erneutes Bereitstellen und Überprüfen der aktualisierten AppRedeploy and verify the updated app

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen und anschließend Veröffentlichen aus, um das Projekt erneut in Azure zu veröffentlichen.In Solution Explorer, right-click the project and select Publish, then choose Publish to republish the project to Azure.

  2. Nach Abschluss der Bereitstellung können Sie die erneut bereitgestellte Funktion wieder in einem Browser testen.After deployment completes, you can again use the browser to test the redeployed function. Fügen Sie wie zuvor die Abfragezeichenfolge &name=<yourname> an die URL an.As before, append the query string &name=<yourname> to the URL.

  3. Zeigen Sie wieder die Nachricht in der Speicherwarteschlange an, um zu überprüfen, ob die Ausgabebindung erneut eine neue Nachricht in der Warteschlange generiert.Again view the message in the storage queue to verify that the output binding again generates a new message in the queue.

Bereinigen von RessourcenClean up resources

Andere Schnellstarts dieser Sammlung bauen auf diesem Schnellstart auf.Other quick starts in this collection build upon this quick start. Wenn Sie mit nachfolgenden Schnellstartanleitungen, Tutorials oder mit einem der Dienste, die Sie im Rahmen dieser Schnellstartanleitung erstellt haben, weiterarbeiten möchten, überspringen Sie die Bereinigung der Ressourcen.If you plan to work with subsequent quick starts, tutorials, or with any of the services you have created in this quick start, do not clean up the resources.

Ressourcen bezieht sich im Zusammenhang mit Azure auf Funktions-Apps, Funktionen, Speicherkonten und Ähnliches.Resources in Azure refers to function apps, functions, storage accounts, and so forth. Sie werden in Ressourcengruppen zusammengefasst, und sämtliche Inhalte einer Gruppe können durch Löschen der Gruppe gelöscht werden.They are grouped into resource groups, and you can delete everything in a group by deleting the group.

Im Rahmen dieser Schnellstartanleitungen haben Sie Ressourcen erstellt.You created resources to complete these quickstarts. Für diese Ressourcen fallen je nach Kontostatus und Dienstpreisen unter Umständen Kosten an.You may be billed for these resources, depending on your account status and service pricing. Nicht mehr benötigte Ressourcen können wie folgt gelöscht werden:If you don't need the resources anymore, here's how to delete them:

  1. Navigieren Sie im Azure-Portal zur Seite Ressourcengruppe.In the Azure portal, go to the Resource group page.

    Von der Seite „Funktions-App“ aus gelangen Sie zu dieser Seite, indem Sie auf die Registerkarte Übersicht und anschließend unter Ressourcengruppe auf den Link klicken.To get to that page from the function app page, select the Overview tab and then select the link under Resource group.

    Wählen Sie auf der Seite „Funktions-App“ die zu löschende Ressourcengruppe aus.

    Vom Dashboard aus gelangen Sie zu dieser Seite, indem Sie auf Ressourcengruppen klicken und anschließend die Ressourcengruppe auswählen, die Sie für diese Schnellstartanleitung verwendet haben.To get to that page from the dashboard, select Resource groups, and then select the resource group that you used for this quickstart.

  2. Prüfen Sie auf der Seite Ressourcengruppe die Liste mit den enthaltenen Ressourcen, und vergewissern Sie sich, dass es sich dabei um die Ressourcen handelt, die Sie löschen möchten.In the Resource group page, review the list of included resources, and verify that they are the ones you want to delete.

  3. Klicken Sie auf Ressourcengruppe löschen, und folgen Sie den Anweisungen.Select Delete resource group, and follow the instructions.

    Der Löschvorgang kann einige Minuten dauern.Deletion may take a couple of minutes. Nach Abschluss des Vorgangs wird kurz eine Benachrichtigung angezeigt.When it's done, a notification appears for a few seconds. Sie können auch am oberen Seitenrand auf das Glockensymbol klicken, um die Benachrichtigung anzuzeigen.You can also select the bell icon at the top of the page to view the notification.

Nächste SchritteNext steps

Sie haben Ihre mittels HTTP ausgelöste Funktion so aktualisiert, dass sie Daten in eine Speicherwarteschlange schreibt.You've updated your HTTP triggered function to write data to a Storage queue. Weitere Informationen zur Entwicklung von Functions finden Sie unter Entwickeln von Azure Functions mithilfe von Visual Studio.To learn more about developing Functions, see Develop Azure Functions using Visual Studio.

Als Nächstes sollten Sie die Application Insights-Überwachung für Ihre Funktions-App aktivieren:Next, you should enable Application Insights monitoring for your function app: