Zelfstudie: Python-functie met Azure Blob Storage als invoer
In deze zelfstudie leert u hoe u een Python-functie configureert met Azure Blob Storage als invoer door de volgende taken uit te voeren:
- Gebruik Visual Studio Code om een Python-functieproject te maken.
- Wijzig codes om een binding voor opslagblob-invoerfuncties toe te voegen.
- 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 Blob met Service Connector.
- 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 Blob |
Functiebinding | HTTP-trigger, Opslagblob als invoer |
Type lokale projectverificatie | Verbindingsreeks |
Verificatietype cloudfunctie | Door het systeem toegewezen beheerde identiteit |
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
- Installeer Visual Studio Code op een van de ondersteunde platforms.
- Azure CLI. U kunt deze gebruiken in Azure Cloud Shell of lokaal installeren.
- Een Azure Storage-account en een opslagblob. Als u geen Azure Storage-account hebt, maakt u er een.
- In deze handleiding wordt ervan uitgegaan dat u de concepten kent die worden gepresenteerd in de ontwikkelaarshandleiding van Functions en hoe u verbinding maakt met services in Functions.
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 BlobStorageInputFunc in. |
Verificatieniveau | Kies Anonymous , waarmee iedereen uw functie-eindpunt kan aanroepen. |
U hebt een Python-functieproject gemaakt met een HTTP-trigger.
Een Blob Storage-invoerbinding 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 | in |
De binding is een invoerbinding. |
Binding met richting selecteren... | Azure Blob Storage |
De binding is een Azure Storage-blobbinding. |
De naam voor het identificeren van deze binding in uw code | inputBlob |
Naam die de bindingsparameter identificeert waar in uw code naar wordt verwezen. |
Het pad in uw opslagaccount waaruit de blob wordt gelezen | testcontainer/test.txt |
Het blobpad dat door uw functie wordt gelezen als invoer. Bereid een bestand met de naam test.txt , met een Hello, World! als bestandsinhoud. Maak een container met de naam testcontainer en upload het bestand naar de container. |
Selecteer de instelling in 'local.setting.json' | Create new local app settings |
Selecteer het opslagaccount dat uw functie als invoer leest. Visual Studio Code haalt de verbindingsreeks voor lokale projectverbinding op. |
Als u wilt controleren of de binding is toegevoegd,
- Open het
BlobStorageInputFunc/function.json
bestand, controleer of er een nieuwe binding mettype: blob
endirection: in
is toegevoegd aan dit bestand. - 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 BlobStorageInputFunc/__init__.py
.
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))
De functie lokaal uitvoeren
Volg de zelfstudie om de functie lokaal uit te voeren en de blobinvoer te controleren.
- Selecteer het opslagaccount dat u hebt gebruikt bij het maken van de Azure Function-resource als u wordt gevraagd verbinding te maken met Storage. Het is voor intern gebruik van Azure Function Runtime en is niet noodzakelijkerwijs hetzelfde met degene die u voor invoer gebruikt.
- 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. - Als u wilt controleren of de functie de blob kan lezen, klikt u met de rechtermuisknop
Execute Function Now...
op de functie in de Visual Studio Code-WERKRUIMTE en controleert u het antwoord van de functie. Het antwoordbericht moet de inhoud in uw blobbestand bevatten.
Een verbinding maken met serviceconnector
U hebt het project zojuist uitgevoerd en de functie lokaal gecontroleerd en uw lokale project maakt verbinding met uw opslagblob met behulp van een verbindingsreeks.
U leert nu hoe u de verbinding tussen de Azure-functie en Azure Blob Storage configureert, zodat uw functie de blob kan lezen nadat deze is geïmplementeerd in de cloud. In de cloudomgeving laten we zien hoe u zich verifieert met behulp van een door het systeem toegewezen beheerde identiteit.
- Open het
function.json
bestand in uw lokale project, wijzig de waarde van deconnection
eigenschap inbindings
ditMyBlobInputConnection
. - 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-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
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}/blobServices/default
U hebt een verbinding gemaakt tussen Azure Function en Azure Blob Storage met behulp van Service Connector, met een door het systeem toegewezen beheerde identiteit.
Service Connector heeft een MyBlobInputConnection__serviceUri
variabele geconfigureerd in de app-instellingen van de functie die door de functiebindingsruntime worden gebruikt om verbinding te maken met de opslag, zodat de functie gegevens uit de blobopslag kan lezen. 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 binding voor opslagblobinvoer werkt.
- Volg de zelfstudie voor het implementeren van uw functie in Azure.
- Als u wilt controleren of de functie de blob kan lezen, 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 inhoud in uw blobbestand bevatten.
Problemen oplossen
Als er fouten zijn met betrekking tot de opslaghost, zoalsNo such host is known (<account-name>.blob.core.windows.net:443)
, moet u controleren of de verbindingsreeks die u gebruikt om verbinding te maken met Azure Storage het blob-eindpunt bevat of niet. Als dat niet het probleem is, gaat u naar Azure Storage in Azure Portal, kopieert u de verbindingsreeks van de Access keys
blade en vervangt u de waarden.
Als de fout optreedt wanneer u het project lokaal start, controleert u het local.settings.json
bestand.
Als de fout optreedt wanneer u uw functie implementeert in de cloud (in dit geval mislukt de functie-implementatie meestal op 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.
- Open in Azure Portal de functie-app-resource en selecteer Verwijderen.
- 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.