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
- Installera Visual Studio Code på en av de plattformar som stöds.
- Azure CLI. Du kan använda den i Azure Cloud Shell eller installera den lokalt.
- Ett Azure Storage-konto och en lagringsblob. Om du inte har något Azure Storage-konto skapar du ett.
- Den här guiden förutsätter att du känner till begreppen som presenteras i utvecklarguiden för Functions och hur du ansluter till tjänster i Functions.
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
BlobStorageInputFunc/function.json
Öppna filen, kontrollera att en ny bindning medtype: blob
ochdirection: in
har lagts till i den här filen.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.
- 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.
- 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. - 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.
function.json
Öppna filen i det lokala projektet, ändra värdet förconnection
egenskapen ibindings
tillMyBlobInputConnection
.- 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.
- Följ självstudien för att distribuera funktionen till Azure.
- 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.
- I Azure Portal öppnar du resursen Funktionsapp och väljer Ta bort.
- 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.