Zelfstudie: Een Python-functie configureren met Azure-tabelopslag-uitvoer

In deze zelfstudie configureert u een Python-functie voor het gebruik van Azure-tabelopslag als uitvoerbinding. Vervolgens implementeert u de functie in Azure Functions en gebruikt u Service Connector om de Azure Functions-app te verbinden met Table Storage.

U gebruikt Visual Studio Code om de volgende taken uit te voeren:

  • Maak een Python functieproject.
  • Voeg een Table Storage-uitvoerfunctiebinding toe.
  • Voer de functie lokaal uit.
  • Implementeer de functie in Azure.
  • Maak een verbinding tussen de Azure Functions-app en Table Storage met behulp van serviceconnector.

De serviceconnector-bronservice is Azure Functions en de doelservice is Azure-tabelopslag. De functiebinding maakt gebruik van een HTTP-trigger met de opslagtabel als uitvoer. Het lokale en cloudverificatietype is "verbindingsreeks".

Vereisten

Het functieproject maken

Maak in Visual Studio Code een Python functieproject met een HTTP-trigger.

  1. Druk op F1 om het opdrachtenpalet te openen en zoek en selecteer de opdracht Azure Functions: Nieuwe Project maken.
  2. Voor Selecteer de map die uw functieproject zal bevatten, selecteer Bladeren en maak vervolgens een nieuwe map of kies een lege map voor de projectwerkruimte. Kies geen projectmap die al deel uitmaakt van een werkruimte.
  3. Selecteer bij Selecteer een projecttype de optie Python.
  4. Selecteer voor Een Python-programmeermodel kiezen, Model V1.
  5. Selecteer voor Selecteer een Python-interpreter om een virtuele omgeving te maken, kies Voer handmatig de Python-interpreter of het volledige pad in en voer het volledige pad naar het Python uitvoerbare bestand in.
  6. Voor Selecteer een sjabloon voor de eerste functie van uw project, selecteert u HTTP-trigger.
  7. Voer TableStorageOutputFunc in als u een functienaam wilt opgeven.
  8. Selecteer Anoniem voor autorisatieniveau.
  9. Als u wilt selecteren hoe u uw project wilt openen, selecteert u Openen in het huidige venster.

Zie Functiecode maken en implementeren voor Azure met behulp van Visual Studio Code voor meer informatie.

Een opslagtabeluitvoerbinding toevoegen

Met de volgende procedure worden de function.json - en local.settings.json-bestanden in uw project bewerkt om een tabeluitvoerbinding voor uw functie te maken.

  1. Klik met de rechtermuisknop op het bestandfunction.json in de functiemap en selecteer Binding toevoegen in het contextmenu.
  2. Selecteer in het opdrachtpalet de optie Bindingsrichting selecteren en kies uit.
  3. Selecteer voor binding met de richting 'out'Azure-tabelopslag.
  4. Voer outMessagein als de naam die wordt gebruikt om deze binding in uw code te identificeren.
  5. Voer testTablein als tabelnaam in het opslagaccount waarin gegevens worden geschreven.
  6. Selecteer de app-instelling met de verbindingsreeks van uw opslagaccount uit "local.settings.json" en selecteer vervolgens Nieuwe lokale app-instelling maken.
  7. Selecteer uw Azure-abonnement bij Abonnement selecteren.
  8. Kies bij Selecteer een type opslagaccount voor ontwikkeling voor Gebruik Azure Storage voor externe opslag.
  9. Selecteer voor Selecteer een opslagaccount het Azure Storage-account dat u wilt gebruiken voor uitvoer.

Controleer de toegevoegde binding

  • Open het bestand TableStorageOutputFunc/function.json en controleer of de tabeluitvoerbinding correct is toegevoegd aan het bestand. Als een van de waarden verschilt, pas ze aan naar de volgende waarden:

        {
          "type": "table",
          "direction": "out",
          "name": "outMessage",
          "tableName": "testtable",
          "connection": "<your-storage-account-name>_STORAGE"
        }
    
  • Open het bestandlocal.settings.json en zorg ervoor dat het volgende sleutel-waardepaar in dit bestand staat: <your-storage-account-name>_STORAGE: <your-storage-account-connection-string>.

De Python-code bewerken

Open het bestand TableStorageOutputFunc/__init__.py en vervang de inhoud door de volgende code:

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

Druk op F5 om de functie lokaal uit te voeren. Als u wordt gevraagd verbinding te maken met een opslagaccount, selecteert u een Azure Storage-account. Deze waarde wordt gebruikt voor de Azure Functions runtime en kan zijn, maar hoeft niet hetzelfde opslagaccount te zijn dat u gebruikt voor de functie-uitvoer.

Terwijl de functie wordt uitgevoerd, controleert u of deze naar uw Table Storage-tabel kan schrijven door met de rechtermuisknop op de functie TableStorageOutputFunc te klikken in de werkruimteweergave van de activiteitsbalk en nu Functie uitvoeren te selecteren. Controleer het functieantwoord om te controleren of deze een rowKey waarde bevat die naar de tabel is geschreven.

Uw functie implementeren in Azure

Maak een Azure Functions-app en implementeer uw functie in Azure.

  1. Wijzig in uw project function.json bestand de waarde van de connection eigenschap in bindingsAZURE_STORAGETABLE_CONNECTIONSTRING.
  2. Druk op F1 om het opdrachtenpalet te openen en zoek en selecteer de opdracht Azure Functions: Implementeren in functie-app.
  3. Selecteer uw Azure-abonnement voor Selecteren.
  4. Als u een functie-app wilt selecteren, selecteert u Nieuwe functie-app maken.
  5. Selecteer voor Selecteer een locatie voor nieuwe resources een Azure regio voor uw Azure Functions-app, bij voorkeur dezelfde regio als uw opslagaccount.
  6. Voor Voer een naam in voor de nieuwe functie-app, kunt u dezelfde naam invoeren als uw lokale functie, TableStorageOutputFunc.
  7. Selecteer voor Een runtimestack de optie Python 3.10.
  8. Selecteer voor resourceverificatietype de optie Geheimen.

Belangrijk

De verbindingsreeks verificatiestroom met behulp van geheimen vereist een 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 veiligere stromen, zoals beheerde identiteiten, niet haalbaar zijn.

Een verbinding maken met serviceconnector

Nadat u de Functions-app hebt gemaakt, kunt u Service Connector gebruiken om de app te verbinden met uw Table Storage-tabel, zodat uw app eenvoudig uitvoer naar uw opslagaccount kan schrijven. Met de volgende opdracht maakt u een Service Connector-resource waarmee de AZURE_STORAGETABLE_CONNECTIONSTRING variabele in de app-instellingen van de functie wordt geconfigureerd.

De functiebinding gebruikt deze app-instelling om verbinding te maken met het opslagaccount, zodat de functie naar de opslagtabel kan schrijven. Zie How Service Connector helpt Azure Functions verbinding te maken met services voor meer informatie.

Als u de verbinding wilt maken, kunt u de volgende Azure CLI opdracht uitvoeren in Visual Studio Code of Azure Cloud Shell of local Azure CLI gebruiken. Vervang de waarden van de tijdelijke aanduidingen als volgt:

  • <function-resource-id>:
    /subscriptions/<your-subscription>/resourceGroups/<function-resource-group>/providers/Microsoft.Web/sites/<function-name>

  • <storage-resource-id>:
    /subscriptions/<your-subscription>/resourceGroups/<storage-resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/tableServices/default

az functionapp connection create storage-table --source-id "<function-resource-id>" --target-id "<storage-resource-id>" --secret

Problemen oplossen

Als u fouten krijgt met betrekking tot de opslaghost, zoals No such host is known (<account-name>.table.core.windows.net:443), controleert u of de verbindingsreeks die wordt gebruikt om verbinding te maken met Table Storage het tabeleindpunt bevat. Als dat niet het is, gaat u naar de pagina Azure Storage, kopieert u de verbindingsreeks van Access-sleutels onder Beveiliging en netwerken en vervangt u de waarde.

Als deze fout optreedt wanneer u lokaal uitvoert, controleert u het local.settings.json-bestand . Als de fout optreedt wanneer u uw functie implementeert in Azure, controleert u de app-instellingen van de Functions-app.

Resources opschonen

Als u de Azure resources die u voor deze zelfstudie hebt gemaakt niet meer wilt, kunt u deze verwijderen.

  • Open in de Azure-portal de Functions-app of het opslagaccount-resource en selecteer Verwijderen in de bovenste menubalk. Voer de resourcenaam in en selecteer Verwijderen.

  • Voer in Azure CLI een of beide van de volgende opdrachten uit, waarbij u de tijdelijke aanduidingen vervangt door uw eigen gegevens.

    az functionapp delete --name <functionapp-name> --resource-group <functionapp-resource-group>
    az storage account delete --name <storageaccount-name> --resource-group <storageaccount-resource-group>