Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Tutorial lernen Sie, wie Sie eine Python-Funktion mit Azure Blob Storage als Input konfigurieren, indem Sie die folgenden Aufgaben abschließen:
- 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-Funktion |
| 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 Authentifizierungsfluss erfordert ein hohes Vertrauen in die Anwendung und trägt Risiken, die in anderen Flüssen nicht vorhanden sind. Sie sollten diesen Flow nur verwenden, wenn andere sicherere Flows (z. B. verwaltete Identitäten) nicht anwendbar sind.
Voraussetzungen
- Installieren Sie Visual Studio Code auf einer der unterstützten Plattformen.
- Azure CLI. Sie können sie in Azure Cloud Shell verwenden oder lokal installieren.
- Ein Azure Storage-Konto und einen Speicherblob. Wenn Sie kein Azure Storage-Konto haben, müssen Sie eines erstellen.
- In diesem Leitfaden wird davon ausgegangen, dass Sie die Konzepte kennen, die im Entwicklerhandbuch „Funktionen“ sowie im Artikel Herstellen einer Verbindung mit Diensten in Functions vorgestellt werden.
Erstellen eines Python-Funktionsprojekts
Folgen Sie dem Lernprogramm, um ein lokales Azure Functions-Projekt zu erstellen. Geben Sie bei entsprechender Aufforderung die folgenden Informationen ein:
| Prompt | Auswahl |
|---|---|
| Wählen Sie eine Sprache | Klicken Sie auf die Option Python. (Programmiersprachenmodell v1) |
| Wählen Sie einen Python-Interpreter, um eine virtuelle Umgebung zu erstellen | 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. |
| Wählen Sie eine Vorlage für die erste Funktion in Ihrem Projekt | Klicken Sie auf die Option HTTP trigger. |
| Geben Sie einen Funktionsnamen an | Geben Sie BlobStorageInputFunc ein. |
| Berechtigungsstufe | Wählen Sie Anonymous aus, damit Ihr Funktionsendpunkt von jedem Benutzer aufgerufen werden kann. |
Mit diesen Informationen generiert Visual Studio Code ein Python-Funktionsprojekt mit einem HTTP-Trigger.
Hinzufügen einer Blob Storage-Eingabebindung
Bindungsattribute werden in der Datei function.json für eine bestimmte Funktion definiert. Um eine Bindung zu erstellen, klicken Sie mit der rechten Maustaste auf die function.json Datei im Funktionsordner, und wählen Sie "Bindung hinzufügen" aus. Folgen Sie den Anweisungen, um die folgenden Bindungseigenschaften für die neue Bindung zu definieren:
| Prompt | Wert | BESCHREIBUNG |
|---|---|---|
| Wählen Sie die Bindungsrichtung | in |
Die Bindung ist eine Eingabebindung. |
| Wählen Sie eine Bindung mit Richtung... | 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 Storage-Kontos, von dem der Blob gelesen werden soll | 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. |
| Wählen Sie die Einstellung aus „local.setting.json“ | 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:
- Öffnen Sie die
BlobStorageInputFunc/function.json-Datei und überprüfen Sie, ob eine neue Bindung mittype: blobunddirection: inzu dieser Datei hinzugefügt wurde. - Öffnen Sie die
local.settings.jsonDatei, und überprüfen Sie, ob in dieser Datei ein neues Schlüssel-Wert-Paar<your-storage-account-name>_STORAGE: <your-storage-account-connection-string>hinzugefügt wurde, das Ihre Verbindungszeichenfolge für Das Speicherkonto enthält.
Aktualisieren Sie nach dem Hinzufügen der Bindung Den Funktionscode, um die Bindung zu nutzen, indem Sie die BlobStorageInputFunc/__init__.py Datei 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.
- Wenn Sie aufgefordert werden, eine Verbindung mit dem Speicher herzustellen, wählen Sie das Speicherkonto aus, das Sie beim Erstellen der Azure Function-Ressource ausgewählt haben. Dieses Speicherkonto wird für die interne Verwendung der Azure-Funktion verwendet und entspricht nicht unbedingt dem Speicherkonto, das Sie für die Eingabe verwenden.
- Um die Funktion lokal zu starten, drücken Sie F5 , oder wählen Sie das Symbol "Ausführen und Debuggen " in der linken Aktivitätsleiste aus.
- Um zu überprüfen, ob die Funktion den Blob lesen kann, klicken Sie mit der rechten Maustaste
Execute Function Now...auf die Funktion im Visual Studio Code WORKSPACE , und überprüfen Sie die Funktionsantwort. Die Antwortnachricht sollte den Inhalt Ihrer Blobdatei enthalten.
Herstellen einer Verbindung mithilfe des Dienstconnectors
Im letzten Schritt haben Sie die Funktion lokal ausgeführt und überprüft, ob Ihr lokales Projekt mithilfe einer Verbindungszeichenfolge eine Verbindung mit Ihrem Speicher-BLOB herstellt.
Als Nächstes erfahren Sie, wie Sie die Verbindung zwischen der Azure-Funktion und Azure Blob Storage konfigurieren. Sobald Ihre Funktion in der Cloud bereitgestellt wurde, ermöglicht diese Verbindung Ihrer Funktion, das Blob zu lesen. Anschließend zeigen wir in der Cloudumgebung, wie sie sich mit einer vom System zugewiesenen verwalteten Identität authentifizieren.
- Öffnen Sie die
function.jsonDatei in Ihrem lokalen Projekt, und ändern Sie den Wert derconnectionEigenschaftbindingsso, dass sie seinMyBlobInputConnectionsoll. - 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-idFormat:/subscriptions/{subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.Web/sites/{site} -
--target-idFormat:/subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/blobServices/default
In diesem Schritt wird eine Verbindung zwischen Azure-Funktion und Azure Blob Storage mithilfe von Service Connector mit 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
Jetzt können Sie Ihre Funktion in Azure bereitstellen und überprüfen, ob die Speicher-BLOB-Eingabebindung funktioniert.
- Dieses Tutorial unterstützt Sie dabei, Ihre Funktion in Azure bereitzustellen.
- Um zu überprüfen, ob die Funktion den Blob lesen kann, klicken Sie in der Visual Studio Code
Execute Function Now...mit der rechten Maustaste auf die Funktion, und überprüfen Sie die Funktionsantwort. Die Antwortnachricht sollte den Inhalt Ihrer Blobdatei enthalten.
Problembehandlung
Wenn Fehler wie No such host is known (<account-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 zu Azure Storage im Azure-Portal, kopieren Sie die Verbindungszeichenfolge von der Registerkarte 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 auftritt, wenn Sie Ihre Funktion in der Cloud bereitstellen (in diesem Fall schlägt die Funktionsbereitstellung in der Regel auf Syncing triggers fehl), überprüfen Sie die Anwendungseinstellungen Ihrer Funktion.
Bereinigen von Ressourcen
Wenn Sie dieses Projekt nicht weiterverwenden möchten, löschen Sie die zuvor erstellte Funktions-App-Ressource.
- Öffnen Sie im Azure-Portal die Funktions-App-Ressource, und wählen Sie Löschen aus.
- 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 die Konzepte des Service Connectors zu erfahren und wie er Azure Functions dabei hilft, sich mit anderen Cloud-Diensten zu verbinden.