Freigeben über


Tutorial: Python-Funktion mit Azure Blob Storage als Eingabe

In diesem Tutorial erfahren Sie, wie Sie eine Python-Funktion mit Azure Blob Storage als Eingabe konfigurieren, indem Sie die folgenden Aufgaben ausführen:

  • Verwenden von Visual Studio Code zum Erstellen eines Python-Funktionsprojekts.
  • Ändern der Codes, um die Speicherblobeingabe-Funktionsbindung hinzuzufügen.
  • Verwenden von Visual Studio Code zum lokalen Ausführen der Datei.
  • Verwenden der Azure CLI, um mithilfe eines Dienstconnectors eine Verbindung zwischen der Azure-Funktion und dem Storage Blob zu erstellen.
  • Verwenden von Visual Studio zum Bereitstellen Ihrer Funktion.

Hier eine Übersicht über die Komponenten des Funktionsprojekts dieses Tutorials:

Projektkomponente Auswahl/Lösung
Quelldienst Azure Function
Zieldienst Azure Storage Blob
Funktionsbindung HTTP-Trigger, Storage Blob als Eingabe
Lokaler Projektauthentifizierungstyp Verbindungszeichenfolge
Cloudfunktionsauthentifizierungstyp Systemseitig zugewiesene verwaltete Identität

Warnung

Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden. Der in diesem Verfahren beschriebene Authentifizierungsflow erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die bei anderen Flows nicht vorhanden sind. Sie sollten diesen Flow nur verwenden, wenn andere sicherere Flows (z. B. verwaltete Identitäten) nicht anwendbar sind.

Voraussetzungen

Erstellen eines Python-Funktionsprojekts

Folgen Sie dem Lernprogramm, um ein lokales Azure Functions-Projekt zu erstellen, und geben Sie die folgenden Informationen bei den Eingabeaufforderungen an:

Prompt Auswahl
Sprache auswählen Klicken Sie auf die Option Python. (Programmiersprachenmodell v1)
Auswählen einer Python-Interpreters zum Erstellen einer virtuellen Umgebung Wählen Sie Ihren bevorzugten Python-Interpreter aus. Sollte eine Option nicht angezeigt werden, geben Sie den vollständigen Pfad Ihrer Python-Binärdatei ein.
Auswählen einer Vorlage für die erste Funktion Ihres Projekts Klicken Sie auf die Option HTTP trigger.
Angeben eines Funktionsnamens Geben Sie BlobStorageInputFunc ein.
Autorisierungsstufe Wählen Sie Anonymous aus, damit Ihr Funktionsendpunkt von jedem Benutzer aufgerufen werden kann. 

Sie haben ein Python-Funktionsprojekt mit einem HTTP-Trigger erstellt.

Hinzufügen einer Blob Storage-Eingabebindung

Bindungsattribute werden in der Datei function.json für eine bestimmte Funktion definiert. Klicken Sie zum Erstellen einer Bindung mit der rechten Maustaste (Ctrl+Mausklick in macOS) auf die Datei function.json in Ihrem Funktionsordner, und wählen Sie Bindung hinzufügen... aus. Befolgen Sie die Anweisungen, um die folgenden Bindungseigenschaften für die neue Bindung zu definieren:

Prompt Wert BESCHREIBUNG
Select binding direction (Wählen Sie die Bindungsrichtung aus) in Die Bindung ist eine Eingabebindung.
Select binding with direction (Wählen Sie die Bindung mit Richtung aus) Azure Blob Storage Die Bindung ist eine Azure Storage-Blobbindung.
Der Name, der zum Identifizieren dieser Bindung in Ihrem Code verwendet wird inputBlob Name, der den Bindungsparameter identifiziert, auf den in Ihrem Code verwiesen wird.
Der Pfad innerhalb Ihres Speicherkontos, von dem aus das Blob gelesen wird. testcontainer/test.txt Der Blobpfad, den Ihre Funktion als Eingabe liest. Bereiten Sie eine Datei mit dem Namen test.txt mit Hello, World! als Dateiinhalt vor. Erstellen Sie einen Container namens testcontainer , und laden Sie die Datei in den Container hoch.
Select setting from "local.setting.json" (Wählen Sie eine Einstellung aus „local.setting.json“ aus) Create new local app settings Wählen Sie das Speicherkonto aus, das Ihre Funktion als Eingabe liest. Visual Studio Code ruft die Verbindungszeichenfolge für die lokale Projektverbindung ab.

So überprüfen Sie, ob die Bindung erfolgreich hinzugefügt wurde:

  1. Öffnen Sie die Datei BlobStorageInputFunc/function.json, und überprüfen Sie, ob eine neue Bindung mit type: blob und direction: in zu dieser Datei hinzugefügt wurde.
  2. Öffnen Sie die Datei local.settings.json, und überprüfen Sie, ob ein neues Schlüssel-Wert-Paar <your-storage-account-name>_STORAGE: <your-storage-account-connection-string>, das die Verbindungszeichenfolge Ihres Speicherkontos enthält, zu dieser Datei hinzugefügt wurde.

Aktualisieren Sie nach dem Hinzufügen der Bindung Ihre Funktionscodes, um die Bindung zu nutzen, indem Sie BlobStorageInputFunc/__init__.py durch die folgende Python-Datei ersetzen.

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

Lokales Ausführen der Funktion

Folgen Sie dem Tutorial, um die Funktion lokal auszuführen und die Blobeingabe zu überprüfen.

  1. Wählen Sie das Speicherkonto aus, das Sie beim Erstellen der Azure-Funktionsressource verwendet haben, wenn Sie aufgefordert werden, eine Verbindung mit einem Storage herzustellen. Es wird für die interne Verwendung der Laufzeit der Azure-Funktion verwendet und muss nicht notwendigerweise mit dem für die Eingabe verwendeten identisch sein.
  2. Um die Funktion lokal zu starten, drücken Sie <kbd>F5</kbd>, oder wählen Sie auf der Aktivitätsleiste auf der linken Seite das Symbol Ausführen und debuggen aus.
  3. Um zu überprüfen, ob die Funktion den Blob lesen kann, klicken Sie im ARBEITSBEREICH von Visual Studio Code in der Funktion mit der rechten Maustaste auf Exucute Function Now..., und überprüfen Sie die Antwort der Funktion. Die Antwortnachricht sollte den Inhalt Ihrer Blobdatei enthalten.

Herstellen einer Verbindung mithilfe des Dienstconnectors

Sie haben das Projekt gerade ausgeführt und die Funktion lokal überprüft, und Ihr lokales Projekt stellt mithilfe einer Verbindungszeichenfolge eine Verbindung mit Ihrem Speicherblob her.

Jetzt erfahren Sie, wie Sie die Verbindung zwischen der Azure-Funktion und der Azure Blob Storage konfigurieren, damit Ihre Funktion nach der Bereitstellung in der Cloud den Blob lesen kann. Es wird in der Cloudumgebung gezeigt, wie sie sich mithilfe einer systemseitig zugewiesenen verwalteten Identität authentifizieren.

  1. Öffnen Sie die Datei function.json in Ihrem lokalen Projekt, und ändern Sie den Wert der connection-Eigenschaft von bindings zu MyBlobInputConnection.
  2. Führen Sie den folgenden Azure CLI-Befehl aus, um eine Verbindung zwischen Ihrer Azure-Funktion und Ihrem Azure Storage zu erstellen.
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

Sie haben eine Verbindung zwischen einer Azure-Funktion und Azure Blob Storage mithilfe eines Dienstconnectors und einer vom System zugewiesenen verwalteten Identität erstellt.

Der Dienstconnector konfigurierte eine MyBlobInputConnection__serviceUri-Variable in den App-Einstellungen der Funktion, die von der Funktionsbindungslaufzeit verwendet wird, um eine Verbindung mit dem Speicher herzustellen, sodass die Funktion Daten aus dem Blobspeicher lesen kann. Erfahren Sie mehr darüber, wie der Dienstconnector Azure Functions bei der Verbindung mit Diensten unterstützt.

Bereitstellen Ihrer Funktion in Azure

Sie können jetzt Ihre Funktion in Azure bereitstellen und überprüfen, ob die Speicherblob-Eingabebindung funktioniert.

  1. Dieses Tutorial unterstützt Sie dabei, Ihre Funktion in Azure bereitzustellen.
  2. Um zu überprüfen, ob die Funktion den Blob lesen kann, klicken Sie in der RESSOURCEN-Ansicht von Visual Studio Code in der Funktion mit der rechten Maustaste auf Exucute Function Now..., und überprüfen Sie die Antwort der Funktion. Die Antwortnachricht sollte den Inhalt Ihrer Blobdatei enthalten.

Problembehandlung

Wenn Fehler wie No such host is known (<acount-name>.blob.core.windows.net:443) im Zusammenhang mit dem Speicherhost auftreten, müssen Sie überprüfen, ob die Verbindungszeichenfolge, die Sie für die Verbindung mit Azure Storage verwenden, den Blobendpunkt enthält. Falls nicht, wechseln Sie im Azure-Portal zu Azure Storage, kopieren Sie die Verbindungszeichenfolge aus dem Blatt Access keys, und ersetzen Sie die Werte.

Wenn der Fehler beim lokalen Starten des Projekts auftritt, überprüfen Sie die Datei local.settings.json.

Wenn der Fehler beim Bereitstellen Ihrer Funktion in der Cloud auftritt (in diesem Fall schlägt die Funktionsbereitstellung in der Regel bei Syncing triggers fehl), überprüfen Sie die App-Einstellungen Ihrer Funktion.

Bereinigen von Ressourcen

Wenn Sie dieses Projekt nicht weiterverwenden möchten, löschen Sie die zuvor erstellte Funktions-App-Ressource.

  1. Öffnen Sie im Azure-Portal die Funktions-App-Ressource, und wählen Sie Löschen aus.
  2. Geben Sie den Namen der App ein, und wählen Sie zum Bestätigen Löschen.

Nächste Schritte

Lesen Sie die folgenden Artikel, um mehr über Dienstconnectorkonzepte und wie Azure Functions Sie bei der Verbindung mit anderen Clouddiensten unterstützt zu erfahren.