Självstudie: Python-funktion med Azure Blob Storage som indata

I den här självstudien får du lära dig hur du konfigurerar en Python-funktion med Azure Blob Storage som indata genom att utföra följande uppgifter:

  • Använd Visual Studio Code för att skapa ett Python-funktionsprojekt.
  • Ändra koder för att lägga till storage blob-indatafunktionsbindning.
  • Använd Visual Studio Code för att köra funktionen lokalt.
  • Använd Azure CLI för att skapa en anslutning mellan Azure Function och Storage Blob med Service Connector.
  • Använd Visual Studio för att distribuera din funktion.

En översikt över funktionsprojektkomponenterna i den här självstudien:

Projektkomponent Markering/lösning
Källtjänst Azure-funktion
Måltjänst Azure Storage Blob
Funktionsbindning HTTP-utlösare, lagringsblob som indata
Autentiseringstyp för lokalt projekt Anslutningssträng
Autentiseringstyp för molnfunktion Systemtilldelad hanterad identitet

Varning

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Det autentiseringsflöde som beskrivs i den här proceduren kräver mycket stort 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 andra säkrare flöden, till exempel hanterade identiteter, inte är livskraftiga.

Förutsättningar

Skapa ett Python-funktionsprojekt

Följ självstudien för att skapa ett lokalt Azure Functions-projekt och ange följande information i anvisningarna:

Prompt Urval
Välj ett språk Välj Python. (v1 programmeringsspråkmodell)
Välj en Python-tolk för att skapa en virtuell miljö Välj önskad Python-tolk. Om ett alternativ inte visas skriver du in den fullständiga sökvägen till din Python-binärfil.
Välj en mall för projektets första funktion Välj HTTP trigger.
Ange ett funktionsnamn Ange BlobStorageInputFunc.
Auktoriseringsnivå Välj Anonymous, som låter vem som helst anropa funktionsslutpunkten. 

Du har skapat ett Python-funktionsprojekt med en HTTP-utlösare.

Lägga till en Blob Storage-indatabindning

Bindningsattribut definieras i function.json-filen för en viss funktion. Om du vill skapa en bindning högerklickar du (Ctrl+ klicka på macOS) filen i funktionsmappen function.json och väljer Lägg till bindning... . Följ anvisningarna för att definiera följande bindningsegenskaper för den nya bindningen:

Prompt Värde beskrivning
Välj bindningsriktning in Bindningen är en indatabindning.
Välj bindning med riktning... Azure Blob Storage Bindningen är en Azure Storage-blobbindning.
Namnet som används för att identifiera den här bindningen i koden inputBlob Namn som identifierar bindningsparametern som refereras till i koden.
Sökvägen i ditt lagringskonto som bloben ska läsas från testcontainer/test.txt Blobsökvägen som din funktion läser som indata. Förbered en fil med namnet test.txt, med en Hello, World! som filinnehåll. Skapa en container med namnet testcontainer och ladda upp filen till containern.
Välj inställning från "local.setting.json" Create new local app settings Välj det lagringskonto som din funktion läser som indata. Visual Studio Code hämtar sina anslutningssträng för lokal projektanslutning.

Kontrollera att bindningen har lagts till

  1. BlobStorageInputFunc/function.json Öppna filen, kontrollera att en ny bindning med type: blob och direction: in har lagts till i den här filen.
  2. local.settings.json Öppna filen och kontrollera att ett nytt nyckel/värde-par <your-storage-account-name>_STORAGE: <your-storage-account-connection-string> som innehåller ditt lagringskonto anslutningssträng har lagts till i den här filen.

När bindningen har lagts till uppdaterar du funktionskoderna för att använda bindningen genom att BlobStorageInputFunc/__init__.py ersätta med Python-filen här.

import logging
import azure.functions as func

def main(req: func.HttpRequest, inputBlob: bytes) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    return func.HttpResponse('The triggered function executed successfully. And read blob content: {}'.format(inputBlob))

Kör funktionen lokalt

Följ självstudien för att köra funktionen lokalt och verifiera blobindata.

  1. Välj det lagringskonto som du använde när du skapade Azure-funktionsresursen om du uppmanas att ansluta till Storage. Den är avsedd för intern användning av Azure Function Runtime och är inte nödvändigtvis samma sak som den som du använder för indata.
  2. Starta funktionen lokalt genom att trycka på <kbd>F5 </kbd> eller välja ikonen Kör och felsöka i aktivitetsfältet till vänster.
  3. Kontrollera att funktionen kan läsa bloben genom att högerklicka Exucute Function Now... på funktionen i Visual Studio Code WORKSPACE och kontrollera funktionssvaret. Svarsmeddelandet ska innehålla innehållet i blobfilen.

Skapa en anslutning med hjälp av Service Connector

Du har precis kört projektet och verifierat funktionen lokalt, och ditt lokala projekt ansluter till din lagringsblob med hjälp av en anslutningssträng.

Nu får du lära dig hur du konfigurerar anslutningen mellan Azure-funktionen och Azure Blob Storage, så att funktionen kan läsa bloben när den har distribuerats till molnet. I molnmiljön visar vi hur du autentiserar med hjälp av en systemtilldelad hanterad identitet.

  1. function.json Öppna filen i det lokala projektet, ändra värdet för connection egenskapen i bindings till MyBlobInputConnection.
  2. Kör följande Azure CLI-kommando för att skapa en anslutning mellan din Azure-funktion och Azure Storage.
az functionapp connection create storage-blob --source-id "<your-function-resource-id>" --target-id "<your-storage-blob-resource-id>" --system-identity --customized-keys AZURE_STORAGEBLOB_RESOURCEENDPOINT=MyBlobInputConnection__serviceUri
  • --source-id format: /subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • --target-id format: /subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/blobServices/default

Du har skapat en anslutning mellan Azure Function och Azure Blob Storage med hjälp av Service Connector med en systemtilldelad hanterad identitet.

Service Connector konfigurerade en MyBlobInputConnection__serviceUri variabel i funktionens appinställningar som används av funktionsbindningskörningen för att ansluta till lagringen, så att funktionen kan läsa data från bloblagringen. Du kan lära dig mer om hur Service Connector hjälper Azure Functions att ansluta till tjänster.

Distribuera din funktion till Azure

Nu kan du distribuera din funktion till Azure och kontrollera att indatabindningen för lagringsbloben fungerar.

  1. Följ självstudien för att distribuera funktionen till Azure.
  2. Kontrollera att funktionen kan läsa bloben genom att högerklicka Exucute Function Now... på funktionen i vyn Resurser i Visual Studio Code och kontrollera funktionssvaret. Svarsmeddelandet ska innehålla innehållet i blobfilen.

Felsöka

Om det finns fel som rör lagringsvärden, till exempel No such host is known (<acount-name>.blob.core.windows.net:443), måste du kontrollera om anslutningssträng du använder för att ansluta till Azure Storage innehåller blobslutpunkten eller inte. Om den inte gör det går du till Azure Storage i Azure Portal, kopierar anslutningssträng från Access keys bladet och ersätter värdena.

Om felet inträffar när du startar projektet lokalt kontrollerar du local.settings.json filen.

Om felet inträffar när du distribuerar funktionen till molnet (i det här fallet misslyckas funktionsdistributionen vanligtvis på Syncing triggers ) kontrollerar du funktionens appinställningar.

Rensa resurser

Om du inte kommer att fortsätta att använda det här projektet tar du bort funktionsappresursen som du skapade tidigare.

  1. I Azure Portal öppnar du resursen Funktionsapp och väljer Ta bort.
  2. Ange appnamnet och välj Ta bort för att bekräfta.

Nästa steg

Läs artiklarna nedan om du vill veta mer om begrepp för Service Connector och hur det hjälper Azure Functions att ansluta till andra molntjänster.