Erstellen und Bereitstellen von Python-Quellcode in Azure Functions

Blog

Die Azure Functions-Erweiterung für VS Code vereinfacht den Prozess der Verwendung von Functions erheblich, indem viele Konfigurationsprobleme automatisch behandelt werden.



Wenn Sie im Verlauf dieses Tutorials auf Probleme stoßen, können Sie ein Problem im Visual Studio-Code melden Dokumentations-Repository .

Voraussetzungen

Details zu jedem dieser Elemente finden Sie in den folgenden Abschnitten:



locast-org-aktivieren

Azure-Abonnement

Wenn Sie kein Azure-Abonnement haben, Jetzt registrieren für ein kostenloses 30-Tage-Konto mit 200 US-Dollar in Azure-Guthaben, um eine beliebige Kombination von Diensten auszuprobieren.

Visual Studio Code, Python und die Azure Functions-Erweiterung

Installieren Sie die folgende Software:



Azure Functions-Kerntools

Folgen Sie den Anweisungen für Ihr Betriebssystem auf Mit Azure Functions-Kerntools arbeiten in der Azure-Dokumentation. (Die Tools selbst sind in .NET Core geschrieben, und das Core Tools-Paket wird am besten mit dem Node.js-Paketmanager npm installiert, weshalb Sie derzeit auch für Python-Code .NET Core und Node.js installieren müssen Glücklicherweise müssen Sie diese Komponenten nur einmal installieren, woraufhin VS Code Sie automatisch auffordert, alle Updates zu installieren.)

Bei Azure anmelden

Melden Sie sich nach der Installation der Functions-Erweiterung bei Ihrem Azure-Konto an, indem Sie zum Azure: Funktionen Entdecker, wählen Bei Azure anmelden , und befolgen Sie die Anweisungen.

Stellen Sie nach der Anmeldung sicher, dass das E-Mail-Konto Ihres Azure-Abonnements in der Statusleiste angezeigt wird:

Der Name, den Sie Ihrem Abonnement zugewiesen haben, erscheint auch im Azure: Funktionen Explorer (Primär im Bild unten):

Notiz : Wenn Sie den Fehler sehen Das Abonnement mit dem Namen [Abonnement-ID] kann nicht gefunden werden , kann dies daran liegen, dass Sie sich hinter einem Proxy befinden und die Azure-API nicht erreichen können. |_+_| . konfigurieren und |_+_| Umgebungsvariablen mit Ihren Proxy-Informationen in Ihrem Terminal:

Python reset_index

# macOS/Linux
export HTTPS_PROXY=https://username:password@proxy:8080
export HTTP_PROXY=http://username:password@proxy:8080

#Windows
set HTTPS_PROXY=https://username:password@proxy:8080
set HTTP_PROXY=http://username:password@proxy:8080

Voraussetzungen überprüfen

Um zu überprüfen, ob alle Azure Functions-Tools installiert sind, wählen Sie die Terminal: Neues integriertes Terminal erstellen Befehl aus der Befehlspalette (Strg+Umschalt+P) und führen Sie dann den Befehl |_+_| aus:

Die Ausgabe, die mit dem Azure Functions-Logo beginnt (Sie müssen die Ausgabe nach oben scrollen), weist darauf hin, dass die Azure Functions Core Tools vorhanden sind.

Erstellen Sie die Funktion

  1. Code für Azure Functions wird innerhalb eines Function-Projekts verwaltet, das Sie zuerst erstellen, bevor Sie den Code erstellen. In Azure: Funktionen Explorer (geöffnet über das Azure-Symbol auf der linken Seite), wählen Sie die Neues Projekt Befehlssymbol oder öffnen Sie die Befehlspalette und wählen Sie Azure Functions: Neues Projekt erstellen .
  2. In den folgenden Eingabeaufforderungen:
  • Geben Sie einen Ordner für das Projekt an. (Der Standard ist der aktuell in VS Code geöffnete Ordner, und Sie möchten möglicherweise einen Unterordner separat erstellen.)
  • Auswählen Python für die Sprache.
  • Auswählen HTTP-Trigger für die Vorlage. Eine Funktion, die einen HTTP-Trigger verwendet, wird immer dann ausgeführt, wenn eine HTTP-Anforderung an den Endpunkt der Funktion gestellt wird. (Sie sehen, dass es eine Vielzahl anderer Trigger für Azure Functions gibt. Weitere Informationen finden Sie unter Was kann ich mit Funktionen machen? in der Azure-Dokumentation.)
  • Benennen Sie Ihre Funktion HttpExample (anstatt den Standard-HTTPTrigger zu akzeptieren), um die Funktion selbst vom Trigger zu unterscheiden. Dieser Name wird für einen Unterordner verwendet, der den Code der Funktion zusammen mit Konfigurationsdaten enthält und auch den Namen des HTTP-Endpunkts definiert.
  • Auswählen Anonym für die Berechtigungsstufe, die die Funktion für jedermann öffentlich zugänglich macht.
  • Wenn Sie aufgefordert werden, wählen Sie, wie Sie Ihr Projekt öffnen möchten, wählen Sie Im aktuellen Fenster öffnen .
  1. Nach kurzer Zeit sehen Sie eine Meldung, dass das neue Projekt erstellt wurde. In dem Forscher , sehen Sie den für die Funktion erstellten Unterordner und VS Code öffnet das |_+_| Datei, die den Standardfunktionscode enthält:

Notiz Wenn Ihnen VS Code beim Öffnen mitteilt, dass kein Python-Interpreter ausgewählt ist |_+_|, verwenden Sie den Python: Interpreter auswählen Befehl aus der Befehlspalette und wählen Sie die virtuelle Umgebung im lokalen |_+_| Ordner (der als Teil des Projekts erstellt wurde).

Spitze : Wenn Sie im selben Projekt eine weitere Funktion erstellen möchten, verwenden Sie die Funktion erstellen Befehl in der Azure: Funktionen Explorer, oder verwenden Sie die Azure Functions: Funktion erstellen Befehl aus der Befehlspalette (Strg+Umschalt+P). Beide Befehle fordern Sie auf, einen Funktionsnamen (der Name des Endpunkts) einzugeben, und erstellen dann einen Unterordner mit den Standarddateien.

Untersuchen Sie die Codedateien

Im neu erstellten Funktionsunterordner sehen Sie drei Dateien: |_+_| enthält den Code der Funktion, |_+_| beschreibt die Funktion in Azure Functions und |_+_| ist eine Beispieldatendatei. Du kannst |_+_| . löschen wenn Sie möchten, da es nur existiert, um zu zeigen, dass Sie dem Unterordner weitere Dateien hinzufügen können.

Schauen wir uns |_+_| . an zuerst, dann den Code in |_+_|.

function.json

Die Datei function.json enthält die erforderlichen Konfigurationsinformationen für den Azure Functions-Endpunkt:

HTTP_PROXY

Sie können sehen, dass |_+_| identifiziert die Startdatei für den Code, die eine Python-Funktion namens |_+_| enthalten muss. Sie können Ihren Code in mehrere Dateien zerlegen, solange die hier angegebene Datei ein |_+_| . enthält Funktion.

Die |_+_| -Element enthält zwei Objekte, eines zur Beschreibung eingehender Anforderungen und das andere zur Beschreibung der HTTP-Antwort. Bei eingehenden Anfragen (|_+_|) antwortet die Funktion auf HTTP GET- oder POST-Anfragen und erfordert keine Authentifizierung. Die Antwort (|_+_|) ist eine HTTP-Antwort, die den von |_+_| . zurückgegebenen Wert zurückgibt Python-Funktion.

__init.py__

Wenn Sie eine neue Funktion erstellen, stellt Azure Functions standardmäßigen Python-Code in |_+_| bereit:

Protokollierung importieren

azure.functions als func importieren

def main(req: func.HttpRequest) -> func.HttpResponse:
protokollierung.info (‘Python-HTTP-Triggerfunktion hat eine Anfrage verarbeitet.’)

Omni-Immobilien-Token
HTTPS_PROXY

Die wichtigen Teile des Codes sind wie folgt:

  • Sie müssen |_+_| . importieren von |_+_|; Das Importieren des Logging-Moduls ist optional, wird aber empfohlen.
  • Die erforderlichen |_+_| Python-Funktion empfängt ein |_+_| Objekt mit dem Namen |_+_| und gibt einen Wert vom Typ |_+_| zurück. Mehr über die Fähigkeiten dieser Objekte erfahren Sie im func.HttpRequest und func.HttpResponse Verweise.
  • Der Körper von |_+_| verarbeitet dann die Anfrage und generiert eine Antwort. In diesem Fall sucht der Code nach einem |_+_| Parameter in der URL. Ist dies nicht der Fall, wird überprüft, ob der Anforderungstext JSON enthält (unter Verwendung von |_+_|) und ob der JSON ein |_+_| . enthält value (mit der Methode |_+_| des von |_+_| zurückgegebenen JSON-Objekts).
  • Wenn ein Name gefunden wird, gibt der Code die Zeichenfolge Hello mit angehängtem Namen zurück; andernfalls gibt es eine Fehlermeldung zurück.

Lokal testen und debuggen

  1. Wenn Sie das Functions-Projekt erstellen, erstellt die VS Code-Erweiterung auch eine Startkonfiguration in |_+_| die eine einzelne Konfiguration namens . enthält An Python-Funktionen anhängen . Diese Konfiguration bedeutet, dass Sie einfach F5 drücken oder den Debug-Explorer verwenden können, um das Projekt zu starten:
  2. Wenn Sie den Debugger starten, wird ein Terminal geöffnet, das die Ausgabe von Azure Functions anzeigt, einschließlich einer Zusammenfassung der verfügbaren Endpunkte (Ihre URL kann anders aussehen, wenn Sie einen anderen Namen als HttpExample verwendet haben):

Hosting-Umgebung: Produktion
Inhaltsstammpfad: d:ExamplesPythonAzureFunctions
Jetzt anhören: http://0.0.0.0:7071
Bewerbung gestartet. Drücken Sie zum Herunterfahren Strg+C.

HTTP-Funktionen:

func
  1. Verwenden Sie Strg+Klick (Cmd+Klick auf macOS) auf die URL im VS-Code Ausgabe Fenster, um einen Browser für diese Adresse zu öffnen, oder starten Sie einen Browser und fügen Sie dieselbe URL ein. In beiden Fällen sehen Sie, dass der Endpunkt |_+_| ist, in diesem Fall |_+_|. Da diese URL jedoch keinen Namensparameter enthält, sollte im Browserfenster nur Folgendes angezeigt werden: Bitte übergeben Sie einen Namen an die Abfragezeichenfolge oder im Anforderungstext, der für diesen Pfad im Code geeignet ist.
  2. Versuchen Sie nun, der Verwendung einen Namensparameter hinzuzufügen, z. B. |_+_|, und im Browserfenster sollten Sie die Meldung Hello VS Code! sehen, die zeigt, dass Sie diesen Codepfad ausgeführt haben.
  3. Um den Namenswert in einem JSON-Anfragetext zu übergeben, können Sie ein Tool wie curl mit dem JSON-Inline verwenden:

# Mac OS/Linux: Ändern Sie die URL, wenn Sie einen anderen Funktionsnamen verwenden
curl --header Inhaltstyp: application/json --request POST
–data {Name:VS-Code} http://localhost:7071/api/HttpExample

curl --header Inhaltstyp: application/json --request POST
–data {Name:VS-Code} http://localhost:7071/api/HttpExample

  1. Erstellen Sie alternativ eine Datei wie |_+_| das enthält |_+_| und verwenden Sie den Befehl |_+_|.
  2. Um das Debuggen der Funktion zu testen, setzen Sie einen Haltepunkt in der Zeile |_+_| und fordern Sie die URL erneut an. Der VS Code-Debugger sollte in dieser Zeile anhalten, sodass Sie Variablen untersuchen und den Code schrittweise durchlaufen können. (Eine kurze Anleitung zum grundlegenden Debuggen finden Sie unter Tutorial - Konfigurieren und Ausführen des Debuggers .)
  3. Wenn Sie zufrieden sind, dass Sie die Funktion lokal gründlich getestet haben, stoppen Sie den Debugger (mit dem Debuggen > Debuggen beenden Menübefehl oder die Trennen Befehl in der Debugging-Symbolleiste).

Bereitstellen in Azure Functions

In diesen Schritten verwenden Sie die Functions-Erweiterung, um eine Funktions-App in Azure zu erstellen. Eine Funktions-App besteht aus einem Speicherkonto für Daten, einem App Service-Plan (der der virtuellen Linux-Maschine entspricht, auf der der App Service ausgeführt wird) und einem App Service (dem Hostingdienst für Ihre Endpunkte, der auf der virtuellen Maschine ausgeführt wird). . Alle diese Ressourcen sind in einer einzigen Ressourcengruppe organisiert.

  1. In dem Azure: Funktionen Explorer, wählen Sie die In der Funktions-App bereitstellen Befehl oder verwenden Sie den Azure Functions: Bereitstellen für die Funktions-App Befehl in der Befehlspalette. Eine Funktions-App ist hier wiederum die Azure-Ressource, die Ihren Code hostet.
  2. Wenn Sie dazu aufgefordert werden, wählen Sie Erstellen einer neuen Funktions-App in Azure , und geben Sie einen in Azure eindeutigen Namen an (in der Regel unter Verwendung Ihres persönlichen oder Firmennamens zusammen mit anderen eindeutigen Kennungen; Sie können Buchstaben, Zahlen und Bindestriche verwenden). Wenn Sie zuvor eine Funktions-App erstellt haben, wird ihr Name in dieser Liste von Optionen angezeigt.
  3. Die Erweiterung führt die folgenden Aktionen aus, die Sie in VS Code-Popup-Nachrichten und den Ausgabe Fenster (der Vorgang dauert einige Minuten):
  • Erstellen Sie eine Ressourcengruppe mit dem von Ihnen angegebenen Namen (entfernen Sie die Bindestriche).
  • Erstellen Sie in dieser Ressourcengruppe das Speicherkonto, den App Service-Plan und den App Service, um Ihren Code zu hosten.
  • Stellen Sie Ihren Code in der Function-App bereit.
  1. Sie können den Fortschritt auch in der Azure: Funktionen Forscher:
  2. Sobald die Bereitstellung abgeschlossen ist, Ausgabe Fenster zeigt den öffentlichen Endpunkt in Azure:

HTTP-Trigger-URLs:
HTTPBeispiel: https://vscode-azure-functions.azurewebsites.net/api/HttpExample

  1. Verwenden Sie diesen Endpunkt, um dieselben Tests wie lokal auszuführen, indem Sie URL-Parameter und/oder Anfragen mit JSON-Daten im Anfragetext verwenden. Sie sollten die gleichen Ergebnisse vom öffentlichen Endpunkt wie lokal sehen.

Fügen Sie eine zweite Funktion hinzu

Nach der ersten Bereitstellung können Sie Änderungen an Ihrem Code vornehmen, z. B. zusätzliche Funktionen hinzufügen, und erneut in derselben Functions-App bereitstellen.

Wo kann man Holoketten kaufen?
  1. In dem Azure: Funktionen Explorer, wählen Sie die Funktion erstellen Befehl oder Verwendung Azure Functions: Funktion erstellen aus der Befehlspalette. Geben Sie die folgenden Details für die Funktion an:
  • Vorlage: HTTP-Trigger
  • Name: DigitsOfPi
  • Berechtigungsstufe: Anonym
  1. Im VS Code-Datei-Explorer sollten Sie einen Unterordner für Ihren Funktionsnamen sehen, der wiederum Dateien mit den Namen |_+_|, |_+_| und |_+_| enthält.
  2. Ersetzen Sie den Code in |_+_| um Folgendes abzugleichen, wodurch eine Zeichenfolge generiert wird, die den Wert von PI bis zu einer Anzahl von Ziffern enthält, die in der URL angegeben sind (dieser Code verwendet nur einen URL-Parameter)

Protokollierung importieren

azure.functions als func importieren

' Angepasst an die zweite, kürzere Lösung bei http://www.codecodex.com/wiki/Calculate_digits_of_pi#Python
'

def pi_digits_Python(Ziffern):
Skala = 10000
maxarr = int((Ziffern / 4) * 14)
arrinit = 2000
tragen = 0
arr = [arrinit] * (maxarr + 1)
Ausgang =

__init__.py

def main(req: func.HttpRequest) -> func.HttpResponse:
protokollierung.info (‘DigitsOfPi HTTP-Triggerfunktion hat eine Anfrage verarbeitet.’)

__init__.py
  1. Da der Code nur HTTP GET unterstützt, ändern Sie |_+_| damit die |_+_| Sammlung enthält nur |_+_| (das heißt, entfernen Sie |_+_|). Die gesamte Datei sollte wie folgt aussehen:

{
scriptDatei: __init__.py,
Bindungen: [
{
authLevel: anonym,
Typ: httpTrigger,
Richtung: in,
Name: req,
Methoden: [
werden
]
},
{
Typ: http,
Richtung: aus,-
Name: $return
}
]
}

  1. Starten Sie den Debugger, indem Sie F5 drücken oder das Debuggen > Debuggen starten Menübefehl. Die Ausgabe Fenster sollte nun beide Endpunkte in Ihrem Projekt anzeigen:

HTTP-Funktionen:

.env
  1. Stellen Sie in einem Browser oder in curl eine Anfrage an |_+_| und beobachte die Ausgabe. (Sie werden vielleicht feststellen, dass der Codealgorithmus nicht ganz genau ist, aber wir überlassen die Verbesserungen Ihnen!) Stoppen Sie den Debugger, wenn Sie fertig sind.
  2. Stellen Sie den Code erneut bereit, indem Sie die In der Funktions-App bereitstellen in dem Azure: Funktionen Forscher. Wenn Sie dazu aufgefordert werden, wählen Sie die zuvor erstellte Funktions-App aus.
  3. Sobald die Bereitstellung abgeschlossen ist (es dauert ein paar Minuten!), wird die Ausgabe Fenster zeigt die öffentlichen Endpunkte, mit denen Sie Ihre Tests wiederholen können.

Ressourcen bereinigen

Die von Ihnen erstellte Funktions-App enthält Ressourcen, die minimale Kosten verursachen können (siehe Funktionen Preise ). Um die Ressourcen zu bereinigen, klicken Sie mit der rechten Maustaste auf die Funktions-App im Azure: Funktionen Explorer und auswählen Funktion App löschen . Besuchen Sie auch die Azure-Portal , auswählen Ressourcengruppen Wählen Sie im linken Navigationsbereich die Ressourcengruppe aus, die im Verlauf dieses Tutorials erstellt wurde, und verwenden Sie dann die Ressourcengruppe löschen Befehl.

Nächste Schritte

Herzlichen Glückwunsch zum Abschluss dieser exemplarischen Vorgehensweise zum Bereitstellen von Python-Code in Azure Functions! Jetzt können Sie viele weitere serverlose Funktionen erstellen.

Wie bereits erwähnt, können Sie mehr über die Functions-Erweiterung erfahren, indem Sie ihr GitHub-Repository besuchen. vscode-azurefunktionen . Auch Themen und Beiträge sind willkommen.

Um mehr über Azure Functions zu erfahren, durchsuchen Sie die Azure-Funktionen Dokumentation und erkunden Sie insbesondere die verschiedenen Auslöser, die Sie verwenden können.

Um mehr über Azure-Dienste zu erfahren, die Sie von Python aus verwenden können, einschließlich Datenspeicherung zusammen mit KI- und Machine Learning-Diensten, besuchen Sie Azure Python Developer Center .

Beispiel einer eckigen 2-Anmeldeseite

Es gibt auch andere Azure-Erweiterungen für VS Code, die Sie möglicherweise hilfreich finden. Suchen Sie einfach in Azure im Erweiterungs-Explorer:

Einige beliebte Erweiterungen sind:

Und wenn Sie im Verlauf dieses Tutorials auf Probleme gestoßen sind, können Sie ein Problem im VS Code-Dokumentationsrepo .

#python #azur

code.visualstudio.com

Erstellen und Bereitstellen von Python-Quellcode in Azure Functions

Dieses Tutorial führt Sie durch die Verwendung von Visual Studio Code zum Erstellen eines serverlosen HTTP-Endpunkts mit Python unter Verwendung der Azure Functions-Erweiterung. Microsoft Azure Functions führt Ihren Code in einer serverlosen Umgebung aus, ohne einen virtuellen Computer bereitstellen oder eine Web-App veröffentlichen zu müssen.