Tutorial: Python-Funktion mit Azure Table Storage als Ausgabe
In diesem Tutorial erfahren Sie, wie Sie eine Python-Funktion mit einer Speichertabelle als Ausgabe konfigurieren, indem Sie die folgenden Aufgaben ausführen.
- Verwenden von Visual Studio Code zum Erstellen eines Python-Funktionsprojekts.
- Hinzufügen eine Speichertabellenausgabe-Funktionsbindung.
- 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 der Speichertabelle 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-Tabelle |
Funktionsbindung | HTTP-Trigger, Speichertabelle als Ausgabe |
Lokaler Projektauthentifizierungstyp | Verbindungszeichenfolge |
Cloudfunktionsauthentifizierungstyp | Verbindungszeichenfolge |
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
- Installieren Sie Visual Studio Code auf einer der unterstützten Plattformen.
- Die Azure-Befehlszeilenschnittstelle Sie können sie in Azure Cloud Shell verwenden oder lokal installieren.
- Ein Azure Storage-Konto und eine Speichertabelle. Wenn Sie noch nicht über ein Speicherkonto verfügen, erstellen Sie eines.
- In diesem Leitfaden wird davon ausgegangen, dass Sie die Konzepte kennen, die im Entwicklerhandbuch „Funktionen“ sowie im Artikel Herstellen einer Verbindung mit Diensten in Azure Functions vorgestellt werden.
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 TableStorageOutputFunc 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 Speichertabellenausgabebindung
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) | out |
Die Bindung ist eine Ausgabebindung. |
Select binding with direction (Wählen Sie die Bindung mit Richtung aus) | Azure Table Storage |
Die Bindung ist eine Azure Storage-Tabellenbindung. |
Der Name, der zum Identifizieren dieser Bindung in Ihrem Code verwendet wird | outMessage |
Name, der den Bindungsparameter identifiziert, auf den in Ihrem Code verwiesen wird. |
Name der Tabelle im Speicherkonto, in die die Daten geschrieben werden sollen | testTable |
Der Tabellenname, den Ihre Funktion als Ausgabe schreibt. Erstellen Sie eine Tabelle mit dem Namen testTable in Ihrem Speicherkonto, falls sie noch nicht vorhanden ist. |
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 Ausgabe schreibt. 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 Datei
TableStorageOutputFunc/function.json
, und überprüfen Sie, ob eine neue Bindung mittype: table
unddirection: out
zu dieser Datei hinzugefügt wurde. - Ö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 TableStorageOutputFunc/__init__.py
durch die folgende Python-Datei ersetzen.
import logging
import uuid
import json
import azure.functions as func
def main(req: func.HttpRequest, outMessage: func.Out[str]) -> func.HttpResponse:
rowKey = str(uuid.uuid4())
data = {
"Name": "Output binding message",
"PartitionKey": "message",
"RowKey": rowKey
}
outMessage.set(json.dumps(data))
return func.HttpResponse(f"Message created with the rowKey: {rowKey}")
Lokales Ausführen der Funktion
Folgen Sie dem Tutorial, um die Funktion lokal auszuführen und die Tabellenausgabe zu überprüfen.
- Wählen Sie das Speicherkonto aus, das Sie beim Erstellen der Azure-Funktionsressource ausgewählt haben, wenn Sie aufgefordert werden, eine Verbindung mit einem Speicherkonto herzustellen. Dieser Wert wird für die Laufzeit der Azure-Funktion verwendet. Es handelt sich nicht unbedingt um dasselbe Speicherkonto, das Sie für die Ausgabe verwenden.
- 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. - Um zu überprüfen, ob die Funktion in die Tabelle schreiben kann, klicken Sie in der Funktion in der ARBEITSBEREICH-Ansicht von Visual Studio Code mit der rechten Maustaste auf
Execute Function Now...
, und überprüfen Sie die Antwort der Funktion. Die Antwortnachricht sollte denrowKey
enthalten, der in die Tabelle geschrieben wurde.
Herstellen einer Verbindung mithilfe des Dienstconnectors
Im vorherigen Schritt haben Sie das Funktionsprojekt lokal überprüft. Jetzt erfahren Sie, wie Sie die Verbindung zwischen der Azure-Funktion und der Azure Storage-Tabelle in der Cloud konfigurieren, damit Ihre Funktion nach der Bereitstellung in der Cloud in Ihr Speicherblob schreiben kann.
- Öffnen Sie die Datei
function.json
in Ihrem lokalen Projekt, und ändern Sie den Wert derconnection
-Eigenschaft vonbindings
zuAZURE_STORAGETABLE_CONNECTIONSTRING
. - 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-table --source-id "<your-function-resource-id>" --target-id "<your-storage-table-resource-id>" --secret
--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}/tableServices/default
Sie haben eine Dienstconnectorressource erstellt, die eine AZURE_STORAGETABLE_CONNECTIONSTRING
-Variable in den App-Einstellungen der Funktion konfiguriert. Diese App-Einstellung wird dann von der Funktionsbindung verwendet, um eine Verbindung mit dem Speicher herzustellen, sodass die Funktion in die Speichertabelle schreiben 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 Speichertabellenausgabebindung funktioniert.
- Dieses Azure Functions-Tutorial unterstützt Sie dabei, Ihre Funktion in Azure bereitzustellen.
- Um zu überprüfen, ob die Funktion in die Tabelle schreiben kann, klicken Sie in der Funktion in der RESSOURCEN-Ansicht von Visual Studio Code mit der rechten Maustaste auf
Execute Function Now...
, und überprüfen Sie die Antwort der Funktion. Die Antwortnachricht sollte denrowKey
enthalten, den die Funktion gerade in die Tabelle geschrieben hat.
Problembehandlung
Wenn Fehler wie No such host is known (<acount-name>.table.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 Tabellenendpunkt enthält. Falls nicht, wechseln Sie zum Azure Storage-Portal, kopieren Sie die Verbindungszeichenfolge aus dem Blatt Access keys
, und ersetzen Sie die Werte.
Wenn dieser Fehler beim lokalen Starten des Projekts auftritt, überprüfen Sie die Datei local.settings.json
.
Wenn dies beim Bereitstellen Ihrer Funktion in der Cloud geschieht (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.
- Ö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 Dienstconnectorkonzepte und wie Azure Functions Sie bei der Verbindung mit anderen Clouddiensten unterstützt zu erfahren.