Delen via


Zelfstudie: Een Python-functie configureren met Azure Table Storage-uitvoer

In deze zelfstudie leert u hoe u een Python-functie configureert voor het gebruik van Azure Table Storage als uitvoerbinding door de volgende taken uit te voeren.

  • Gebruik Visual Studio Code om een Python-functieproject te maken.
  • Voeg een uitvoerfunctiebinding voor opslagtabellen toe.
  • Gebruik Visual Studio Code om de functie lokaal uit te voeren.
  • Gebruik de Azure CLI om een verbinding te maken tussen Azure Function en Storage Table met serviceconnector.
  • Visual Studio gebruiken om uw functie te implementeren.

Een overzicht van de onderdelen van het functieproject in deze zelfstudie:

Projectonderdeel Selectie/oplossing
Bronservice Azure-functie
Doelservice Azure Storage-tabel
Functiebinding HTTP-trigger, Opslagtabel als uitvoer
Type lokale projectverificatie Verbindingsreeks
Verificatietype cloudfunctie Verbindingsreeks

Waarschuwing

Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. De verificatiestroom die in deze procedure wordt beschreven, vereist een zeer hoge mate van vertrouwen in de toepassing en brengt risico's met zich mee die niet aanwezig zijn in andere stromen. U moet deze stroom alleen gebruiken wanneer andere veiligere stromen, zoals beheerde identiteiten, niet haalbaar zijn.

Vereisten

Een Python-functieproject maken

Volg de zelfstudie om een lokaal Azure Functions-project te maken en geef de volgende informatie op bij de prompts:

Prompt Selectie
Een taal selecteren Kies Python. (v1 programmeertaalmodel)
Een Python-interpreter selecteren om een virtuele omgeving te maken Kies de gewenste Python-interpreter. Als er geen optie wordt weergegeven, typt u het volledige pad naar uw binaire Python-bestand.
Selecteer een sjabloon voor de eerste functie van uw project Kies HTTP trigger.
Geef een functienaam op Voer TableStorageOutputFunc in.
Verificatieniveau Kies Anonymous, waarmee iedereen uw functie-eindpunt kan aanroepen. 

U hebt een Python-functieproject gemaakt met een HTTP-trigger.

Een opslagtabeluitvoerbinding toevoegen

Bindingskenmerken worden gedefinieerd in het function.json-bestand voor een bepaalde functie. Als u een binding wilt maken, klikt u met de rechtermuisknop (Ctrl+klik op macOS) op het function.json bestand in de functiemap en kiest u Binding toevoegen... . Volg de aanwijzingen om de volgende bindingseigenschappen te definiëren voor de nieuwe binding:

Prompt Weergegeven als Beschrijving
Bindingsrichting selecteren out De binding is een uitvoerbinding.
Binding met richting selecteren... Azure Table Storage De binding is een Azure Storage-tabelbinding.
De naam voor het identificeren van deze binding in uw code outMessage Naam die de bindingsparameter identificeert waar in uw code naar wordt verwezen.
Tabelnaam in opslagaccount waarin gegevens worden geschreven testTable De tabelnaam die uw functie schrijft als uitvoer. Maak een tabel met de naam testTable in uw opslagaccount als deze niet bestaat.
Selecteer de instelling in 'local.setting.json' Create new local app settings Selecteer het opslagaccount dat uw functie schrijft als uitvoer. Visual Studio Code haalt de verbindingsreeks voor lokale projectverbinding op.

Ga als volgende te werk om te controleren of de binding is toegevoegd:

  1. Open het TableStorageOutputFunc/function.json bestand, controleer of er een nieuwe binding met type: table en direction: out is toegevoegd aan dit bestand.
  2. Open het local.settings.json bestand en controleer of er een nieuw sleutel-waardepaar <your-storage-account-name>_STORAGE: <your-storage-account-connection-string> met uw opslagaccount verbindingsreeks is toegevoegd aan dit bestand.

Nadat de binding is toegevoegd, werkt u uw functiecodes bij om de binding te gebruiken door het Python-bestand hier te vervangen TableStorageOutputFunc/__init__.py .

import logging
import uuid
import json
import azure.functions as func

def main(req: func.HttpRequest, outMessage: func.Out[str]) -> func.HttpResponse:

    rowKey = str(uuid.uuid4())
    data = {
        "Name": "Output binding message",
        "PartitionKey": "message",
        "RowKey": rowKey
    }

    outMessage.set(json.dumps(data))
    return func.HttpResponse(f"Message created with the rowKey: {rowKey}")

De functie lokaal uitvoeren

Volg de zelfstudie om de functie lokaal uit te voeren en de tabeluitvoer te controleren.

  1. Selecteer het opslagaccount dat u hebt gekozen bij het maken van de Azure Function-resource als u wordt gevraagd verbinding te maken met een opslagaccount. Deze waarde wordt gebruikt voor de Runtime van Azure Function. Het is niet noodzakelijkerwijs hetzelfde opslagaccount dat u voor de uitvoer gebruikt.
  2. Als u de functie lokaal wilt starten, drukt u op <kbd>F5 </kbd> of selecteert u het pictogram Uitvoeren en fouten opsporen in de activiteitenbalk aan de linkerkant.
  3. Als u wilt controleren of de functie naar de tabel kan schrijven, klikt u met de rechtermuisknop Execute Function Now... op de functie in de weergave Werkruimte van Visual Studio Code en controleert u het antwoord van de functie. Het antwoordbericht moet de rowKey tekst bevatten die naar de tabel is geschreven.

Een verbinding maken met serviceconnector

In de laatste stap hebt u het functieproject lokaal gecontroleerd. Nu leert u hoe u de verbinding tussen de Azure-functie en de Azure Storage-tabel in de cloud configureert, zodat uw functie naar uw opslagblob kan schrijven nadat deze in de cloud is geïmplementeerd.

  1. Open het function.json bestand in uw lokale project, wijzig de waarde van de connection eigenschap in bindings dit AZURE_STORAGETABLE_CONNECTIONSTRING.
  2. Voer de volgende Azure CLI-opdracht uit om een verbinding te maken tussen uw Azure-functie en uw Azure Storage.
az functionapp connection create storage-table --source-id "<your-function-resource-id>" --target-id "<your-storage-table-resource-id>" --secret
  • --source-id formatteren: /subscriptions/{subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • --target-id formatteren: /subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/tableServices/default

U hebt een Service Connector-resource gemaakt waarmee een AZURE_STORAGETABLE_CONNECTIONSTRING variabele in de app-instellingen van de functie wordt geconfigureerd. Deze app-instelling wordt vervolgens gebruikt door de functiebinding om verbinding te maken met de opslag, zodat de functie naar de opslagtabel kan schrijven. Meer informatie over hoe Service Connector Azure Functions helpt verbinding te maken met services.

Uw functie implementeren in Azure

U kunt uw functie nu implementeren in Azure en controleren of de uitvoerbinding van de opslagtabel werkt.

  1. Volg deze Zelfstudie over Azure Functions om uw functie te implementeren in Azure.
  2. Als u wilt controleren of de functie naar de tabel kan schrijven, klikt u met de rechtermuisknop Execute Function Now... op de functie in de weergave Resources van Visual Studio Code en controleert u het antwoord van de functie. Het antwoordbericht moet de rowKey functie bevatten die zojuist naar de tabel is geschreven.

Problemen oplossen

Als er fouten zijn met betrekking tot de opslaghost, zoalsNo such host is known (<account-name>.table.core.windows.net:443), moet u controleren of de verbindingsreeks die u gebruikt om verbinding te maken met Azure Storage het tabeleindpunt bevat of niet. Als dit niet het probleem is, gaat u naar Azure Storage Portal, kopieert u de verbindingsreeks van de Access keys blade en vervangt u de waarden.

Als deze fout optreedt wanneer u het project lokaal start, controleert u het local.settings.json bestand.

Als dit gebeurt wanneer u uw functie in de cloud implementeert (in dit geval mislukt de implementatie van de functie meestal), Syncing triggers controleert u de app-instellingen van uw functie.

Resources opschonen

Als u dit project niet meer gaat gebruiken, verwijdert u de functie-app-resource die u eerder hebt gemaakt.

  1. Open in Azure Portal de functie-app-resource en selecteer Verwijderen.
  2. Voer de naam van de app in en selecteer Verwijderen om te bevestigen.

Volgende stappen

Lees de onderstaande artikelen voor meer informatie over serviceconnectorconcepten en hoe Azure Functions verbinding kan maken met andere cloudservices.