Självstudie: Konfigurera en Python-funktion med Azure Table Storage-utdata

I den här självstudien konfigurerar du en Python funktion för att använda Azure Table Storage som utdatabindning. Sedan distribuerar du funktionen för att Azure Functions och använder Service Connector för att ansluta Azure Functions-appen till Table Storage.

Du använder Visual Studio Code för att utföra följande uppgifter:

  • Skapa ett Python funktionsprojekt.
  • Lägg till en Table Storage-funktionsbindning för utdata.
  • Kör funktionen lokalt.
  • Distribuera funktionen till Azure.
  • Skapa en anslutning mellan Azure Functions-appen och Table Storage med hjälp av Service Connector.

Källtjänsten för Service Connector är Azure Functions och måltjänsten är Azure Table Storage. Funktionsbindningen använder en HTTP-utlösare med lagringstabellen som utdata. Den lokala autentiseringstypen och molnautentiseringstypen är reťazec pripojenia.

Förutsättningar

Skapa funktionsprojektet

I Visual Studio Code skapar du ett Python funktionsprojekt med en HTTP-utlösare.

  1. Tryck på F1 för att öppna kommandopaletten och sök efter och välj kommandot Azure Functions: Skapa ny Project.
  2. För Välj den mapp som ska innehålla funktionsprojektet väljer du Bläddra och skapar antingen en ny mapp eller väljer en tom mapp för projektarbetsytan. Välj inte en projektmapp som redan är en del av en arbetsyta.
  3. För Välj en projekttyp väljer du Python.
  4. För Välj en Python programmeringsmodell väljer du Model V1.
  5. För Välj en Python interpreter för att skapa en virtuell miljö, välj Manuellt ange Python interpreter eller fullständig sökväg och ange den fullständiga sökvägen till din Python executable.
  6. För Välj en mall för projektets första funktion väljer du HTTP-utlösare.
  7. För Ange ett funktionsnamn anger du TableStorageOutputFunc.
  8. För auktoriseringsnivå väljer du Anonym.
  9. För Välj hur du vill öppna projektet väljer du Öppna i det aktuella fönstret.

Mer information finns i Skapa och distribuera funktionskod till Azure med hjälp av Visual Studio Code.

Lägga till en utdatabindning för lagringstabell

Följande procedur redigerar function.json - och local.settings.json-filerna i projektet för att skapa en tabellutdatabindning för funktionen.

  1. Högerklicka på filenfunction.json i funktionsmappen och välj Lägg till bindning på snabbmenyn.
  2. I kommandopaletten, för Välj bindningsriktning, välj ut.
  3. För Välj bindning med riktningen "out" väljer du Azure Table Storage.
  4. För Namnet som används för att identifiera den här bindningen i koden anger du outMessage.
  5. För Tabellnamn i lagringskontot där data skrivs anger du testTable.
  6. För att välja appens inställning med ditt lagringskontos reťazec pripojenia från "local.settings.json", välj Skapa ny lokal appinställning.
  7. För Välj prenumeration väljer du din Azure prenumeration.
  8. För Välj en lagringskontotyp för utveckling väljer du Använd Azure Storage för fjärrlagring.
  9. För Välj ett lagringskonto väljer du det Azure Storage konto som ska användas för utdata.

Kontrollera den tillsatta bindningen

  • Öppna filen TableStorageOutputFunc/function.json och kontrollera att tabellutdatabindningen har lagts till korrekt i filen. Om något av värdena skiljer sig åt redigerar du dem till följande värden:

        {
          "type": "table",
          "direction": "out",
          "name": "outMessage",
          "tableName": "testtable",
          "connection": "<your-storage-account-name>_STORAGE"
        }
    
  • Öppna filenlocal.settings.json och kontrollera att följande nyckel/värde-par finns i den här filen: <your-storage-account-name>_STORAGE: <your-storage-account-connection-string>.

Redigera Python-koden

Öppna filen TableStorageOutputFunc/__init__.py och ersätt dess innehåll med följande kod:

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}")

Kör funktionen lokalt

Tryck på F5 om du vill köra funktionen lokalt. Om du uppmanas att ansluta till ett lagringskonto väljer du ett Azure Storage konto. Det här värdet används för Azure Functions runtime-miljö och kan men behöver inte vara samma lagringskonto som du använder för utdata för funktionen.

När funktionen körs kontrollerar du att den kan skriva till tabellen Table Storage genom att högerklicka på funktionen TableStorageOutputFunc i vyn Arbetsyta i aktivitetsfältet och välja Kör funktion nu. Kontrollera funktionssvaret för att se till att det innehåller ett rowKey värde som har skrivits till tabellen.

Distribuera din funktion till Azure

Skapa en Azure Functions app och distribuera din funktion till Azure.

  1. I projektet function.json fil ändrar du värdet för connection egenskapen i bindings till AZURE_STORAGETABLE_CONNECTIONSTRING.
  2. Tryck på F1 för att öppna kommandopaletten och sök efter och välj kommandot Azure Functions: Distribuera till funktionsapp.
  3. För Välj prenumeration väljer du din Azure prenumeration.
  4. För Välj en funktionsapp väljer du Skapa ny funktionsapp.
  5. För Välj en plats för nya resurser väljer du en Azure region för din Azure Functions app, helst samma region som ditt Lagringskonto.
  6. För Ange ett namn för den nya funktionsappen kan du ange samma namn som den lokala funktionen TableStorageOutputFunc.
  7. För Välj en körningsstack, välj Python 3.10.
  8. För Välj resursautentiseringstyp väljer du Hemligheter.

Important

Det reťazec pripojenia autentiseringsflödet med hjälp av hemligheter kräver en hög grad av förtroende för programmet och medför risker som inte finns i andra flöden. Du bör bara använda det här flödet när säkrare flöden, till exempel hanterade identiteter, inte är livskraftiga.

Skapa en anslutning med hjälp av Service Connector

När du har skapat Functions-appen kan du använda Service Connector för att ansluta appen till tabellen Table Storage, så att appen enkelt kan skriva utdata till ditt lagringskonto. Följande kommando skapar en Service Connector-resurs som konfigurerar variabeln AZURE_STORAGETABLE_CONNECTIONSTRING i funktionens appinställningar.

Funktionsbindningen använder den här appinställningen för att ansluta till lagringskontot så att funktionen kan skriva till lagringstabellen. Mer information finns i How Service Connector hjälper Azure Functions ansluta till tjänster.

Om du vill skapa anslutningen kan du köra följande Azure CLI kommando i Visual Studio Code eller använda Azure Cloud Shell eller lokal Azure CLI. Ersätt platshållarvärdena på följande sätt:

  • <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

Felsöka

Om du får fel relaterade till lagringsvärden, till exempel No such host is known (<account-name>.table.core.windows.net:443), kontrollerar du att den reťazec pripojenia som används för att ansluta till Table Storage innehåller tabellslutpunkten. Annars går du till sidan Azure Storage, kopierar reťazec pripojenia från Access-nycklar under Säkerhet + nätverk och ersätter värdet.

Om det här felet uppstår när du kör lokalt, kontrollerar du local.settings.json-filen. Om felet uppstår när du distribuerar funktionen till Azure kontrollerar du appinställningarna för Functions-appen.

Rensa resurser

Om du inte längre vill ha de Azure resurser som du skapade för den här självstudien kan du ta bort dem.

  • Öppna funktionsappen eller lagringskontoresursen i Azure-portalen och välj Delete från den översta menyraden. Ange resursnamnet och välj Ta bort.

  • I Azure CLI kör du ett eller båda av följande kommandon och ersätter platshållarna med din egen information.

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