Bekanntgabe der allgemeinen Verfügbarkeit von Python-Unterstützung in Azure Functions

Veröffentlicht am 19 August, 2019

Principal PM Manager, Azure Functions

Die Python-Unterstützung für Azure Functions ist jetzt allgemein verfügbar und kann direkt in Ihren Produktionsworkloads für Data Science und maschinelles Lernen, die automatisierte Ressourcenverwaltung u. v. m. gehostet werden. Sie können Apps mit Python 3.6 entwickeln, um sie in der plattformübergreifenden Open-Source-Runtime von Functions 2.0 auszuführen. Diese können als Code oder Docker-Container auf einer Linux-basierten, serverlosen Hostingplattform in Azure veröffentlicht werden. Mit diesem Feature werden bereits jetzt innovative Lösungen unserer Early Adopters unterstützt. So nutzen z. B. General Electric Aviation und die TCF Bank schon Azure-Funktionen, die in Python programmiert wurden, für ihre serverlosen Produktionsworkloads. Ihnen gilt unser Dank für ihre Zusammenarbeit!

Wie David Havera, der leitende Blockchain Engineer bei GE Aviation, sagt: „Die GE Aviation Digital Group möchte zukünftig eine einheitliche Sprache von der Datentechnik am Back-End bis zur Analyse und dem maschinellen Lernen am Front-End nutzen können. Microsoft war uns eine entscheidende Hilfe bei der Umsetzung dieser Vision, indem die Python-Unterstützung in Azure Functions von der Vorschauversion nun in die Produktion gebracht und damit die Implementierung von Data Science und Blockchain in unserem TRUEngine-Projekt ermöglicht wurde.“

Wir haben während der Vorschauphase von Python für Azure Functions viel Feedback von der Community erhalten, das uns geholfen hat, die Programmierung zu vereinfachen, ein idiomatisches Programmiermodell einzuführen und eine leistungsstarke und robuste Hostingplattform unter Linux zu erschaffen. Dieser Beitrag enthält eine Zusammenfassung aller Informationen, die Sie zur Python-Unterstützung in Azure Functions benötigen. Außerdem enthält er Ressourcen, die Ihnen beim Einstieg in die Verwendung der Tools Ihrer Wahl helfen.

Ihre Python-Workloads in Azure Functions

Viele Python-Workloads eignen sich hervorragend für ein serverloses Modell, sodass Sie sich auf Ihre spezifische Geschäftslogik konzentrieren können, während Azure sich um die Ausführung Ihres Codes kümmert. Wir waren positiv überrascht vom Interesse der Python-Community und von den praktischen Lösungen, die mit Python in Functions erschaffen wurden.

Workloads und Entwurfsmuster

Die folgende Liste ist bei Weitem nicht vollständig, aber sie zeigt einige Beispiele für Workloads und Entwurfsmuster, die sehr gut die Anwendung von Python in Azure Functions veranschaulichen.

Vereinfachte Data Science-Pipelines

Python eignet sich als Programmiersprache hervorragend für Data Science und maschinelles Lernen (ML). Sie können die Python-Unterstützung in Azure Functions nutzen, um Ihre intelligenten Anwendungen serverlos zu hosten. Einige Ideen:

  • Verwenden Sie Azure Functions für das Bereitstellen eines trainierten ML-Modells zusammen mit einem Bewertungsskript zum Erstellen einer Rückschlussanwendung.

Azure Functions-Rückschluss-App

  • Nutzen Sie Trigger und Datenbindungen zum Erfassen, Verschieben, Vorbereiten, Transformieren und Verarbeiten von Daten mit Functions.
  • Verwenden Sie Functions, um ereignisgesteuerte Trigger für Pipelines zum erneuten Trainieren und für Modellupdates einzufügen, wenn neue Datasets verfügbar werden.

Automatisierte Ressourcenverwaltung

Da immer mehr Ressourcen und Workloads in die Cloud verschoben werden, werden natürlich auch leistungsstärkere Möglichkeiten zum Verwalten, Steuern und Automatisieren der entsprechenden Cloudressourcen benötigt. Für solche Automatisierungsszenarien ist benutzerdefinierte Logik erforderlich, die mit Python sehr einfach umgesetzt werden kann. Einige häufige Szenarien:

  • Verarbeitung von Azure Monitor-Warnungen, die von Azure-Diensten generiert wurden
  • Reaktion auf Azure-Ereignisse, die von Azure Event Grid erfasst wurden, und Umsetzung der betrieblichen Anforderungen an Ressourcen

Ereignisgesteuerte, automatisierte Ressourcenverwaltung

  • Verwendung von Azure Logic Apps für Verbindungen mit externen Systemen wie IT-Service-Management, DevOps oder Überwachungssystemen während der Verarbeitung von Nutzlasten mit einer Python-Funktion
  • Durchführung geplanter betrieblicher Aufgaben für virtuelle Computer, SQL Server, Web-Apps und andere Azure-Ressourcen

Leistungsstarkes Programmiermodell

Für eine beschleunigte Python-Entwicklung bietet Azure Functions ein produktives Programmiermodell, das auf Ereignisauslösern und Datenbindungen basiert. Das Programmiermodell wird durch eine herausragende und umfassende Entwickleroberfläche gestützt, die alle Aspekte vom lokalen Erstellen und Debuggen bis zum Bereitstellen und Überwachen in der Cloud bietet.

Beim Entwurf des Programmiermodells wurde besonders auf eine vertraute Umgebung für Python-Entwickler geachtet, sodass Sie sehr schnell mit dem Entwickeln von Funktionen mit Codekonstrukten beginnen können, mit denen Sie bereits gearbeitet haben, und indem Sie vorhandene Python-Skripts und -Module importieren, um Ihre Funktion zu erstellen. So können Sie beispielsweise Ihre Funktionen als asynchrone Coroutinen implementieren, indem Sie den asynchronen def-Qualifizierer verwenden, oder die Überwachungsprotokolle mithilfe der Standardprotokollierungsmodule an den Host übermitteln. Zusätzliche Abhängigkeiten von „pip install“ können in der Datei „requirements.txt“ konfiguriert werden.

Azure Functions-Programmiermodell

Sie können mit dem ereignisgesteuerten Programmiermodell in Functions, das auf Triggern und Bindungen basiert, ganz einfach die Ereignisse konfigurieren, die die Funktionsausführung auslösen, sowie sämtliche Datenquellen, mit denen die Funktion orchestriert werden muss. Dieses Modell steigert die Produktivität bei der Entwicklung von Apps, die mit mehreren Datenquellen interagieren, da Sie weniger Codebausteine, SDKs und Abhängigkeiten verwalten und unterstützen müssen. Nach der Konfiguration können Sie sehr schnell Daten von den Bindungen abrufen oder zurückschreiben, indem Sie die Methodenattribute Ihrer Einstiegspunktfunktion nutzen. Das Python SDK für Azure Functions bietet eine umfangreiche API-Schicht für die Bindung an HTTP-Anforderungen, Timerereignisse und andere Azure-Dienste wie Azure Storage, Azure Cosmos DB, Service Bus, Event Hubs oder Event Grid. Außerdem können Sie Ihre Produktivität beim Schreiben Ihres Codes durch Funktionen wie AutoVervollständigen und IntelliSense steigern. Durch den Einsatz des Erweiterbarkeitsmodells von Azure Functions können Sie außerdem Ihre eigenen Bindungen für Ihre Funktion nutzen und z. B. Verbindungen mit anderen Datenströmen wie Kafka oder SignalR herstellen.

Beispiel für Azure Functions-Warteschlangentrigger

Vereinfachte Entwicklung

Als Python-Entwickler können Sie Ihre bevorzugten Tools für die Entwicklung Ihrer Funktionen verwenden. Die Azure Functions Core Tools ermöglichen Ihnen einen schnellen Einstieg in die Verwendung auslöserbasierter Vorlagen, die lokale Ausführung zum Testen von Echtzeitereignissen von den tatsächlichen Cloudquellen und die direkte Veröffentlichung in Azure. Darüber hinaus wird während der Bereitstellung automatisch ein serverseitiger Abhängigkeitsbuild aufgerufen. Für eine noch bessere Umgebung bei der Entwicklung können Sie die Core Tools zusammen mit Ihrer bevorzugten IDE oder Ihrem Text-Editor nutzen.

Außerdem können Sie die Vorteile der Azure Functions-Erweiterung für Visual Studio Code einsetzen, um eine nahtlose Einbindung Ihrer Bearbeitungsumgebung beim Erstellen neuer Apps, Hinzufügen von Funktionen und Bereitstellen zu erzielen – und das alle innerhalb von Minuten. Mit dem Ein-Klick-Debugging können Sie Ihre Funktionen lokal testen, Breakpoints im Code setzen und die Aufrufliste überprüfen, indem Sie einfach F5 drücken. Kombinieren Sie diese Funktionen mit der Python-Erweiterung für Visual Studio Code, und Sie haben eine umfassende Python-Entwicklungsumgebung inklusive AutoVervollständigen, IntelliSense, Linter und Debugging.

Azure Functions-Entwicklung in Visual Studio Code

Wenn Sie eine vollständige Continuous Delivery-Erfahrung benötigen, können Sie nun auch die Integration mit Azure Pipelines nutzen. Dies ist einer der Dienste in Azure DevOps, den Sie über eine für Azure Functions optimierte Aufgabe einbinden können, um Abhängigkeiten für Ihre App zu erstellen und in der Cloud zu veröffentlichen. Die Pipeline kann über eine Azure DevOps-Vorlage oder die Azure-Befehlszeilenschnittstelle konfiguriert werden.

Außerdem stehen für Funktionen, die in Python geschrieben wurden, auch erweiterte Einblicke und Überwachungsfunktionen über Azure Application Insights zur Verfügung. Sie können also Ihre Apps mithilfe des Livemetrikstreams überwachen, Daten sammeln, Ausführungsprotokolle abfragen und die verschiedenen Ablaufverfolgungen der einzelnen Dienste in Azure anzeigen.

Python-Apps mit Azure Functions hosten

Hosten Sie Ihre Python-Apps mit dem Verbrauchstarif von Azure Functions oder dem Premium-Tarif von Azure Functions unter Linux.

Der Verbrauchstarif ist jetzt für das Linux-basierte Hosting allgemein verfügbar und kann direkt für Produktionsworkloads verwendet werden. Dieser serverlose Tarif ermöglicht eine ereignisgesteuerte dynamische Skalierung, sodass Ihnen nur dann Computeressourcen berechnet werden, wenn Ihre Funktionen ausgeführt werden. Außerdem unterstützt der Linux-Tarif nun auch verwaltete Identitäten, sodass Ihre App nahtlos mit Azure-Ressourcen wie Azure Key Vault zusammenarbeiten kann, ohne dass Sie zusätzliche Geheimnisse bereitstellen müssen.

Linux-Verbrauchstarif in Azure Functions – verwaltete Identitäten

Der Verbrauchstarif für das Linux-Hosting umfasst auch eine Vorschauversion integrierter Remotebuilds zur Vereinfachung der Verwaltung von Abhängigkeiten. Diese neue Funktion ist als Option beim Veröffentlichen über die Azure Functions Core Tools verfügbar. Sie ermöglicht das Erstellen in der Cloud in derselben Umgebung, die Sie auch für das Hosten Ihrer Apps verwenden. Sie müssen also keine lokale Buildumgebung mehr erstellen und mit dem Azure Functions-Hosting abgleichen.

Python-Remotebuild mit Azure Functions

Workloads, die erweiterte Features wie eine leistungsstärkere Hardware, die Möglichkeit der dauerhaften Aktivierung von Instanzen und Konnektivität mit virtuellen Netzwerken erfordern, profitieren vom Premium-Tarif mit Linux-basiertem Hosting, der jetzt als Vorschauversion verfügbar ist.

Azure Functions-Premium-Tarif – Integration virtueller Netzwerke

Mit dem Premium-Tarif für das Linux-Hosting können Sie selbst entscheiden, ob Sie nur Ihren App-Code oder ein benutzerdefiniertes Docker-Image verwenden, um alle Abhängigkeiten zu kapseln. Dies schließt auch die Azure Functions-Runtime ein. Eine Beschreibung finden Sie in der Dokumentation Erstellen einer Funktion unter Linux mit einem benutzerdefinierten Image. Bei beiden Optionen wird ein Kaltstart vermieden, und die Skalierung erfolgt jeweils dynamisch basierend auf Ereignissen.

Azure Functions-Premium-Tarif – Hosten von Code oder Containern

Nächste Schritte

Die folgenden Ressourcen können Sie nutzen, um noch heute mit dem Erstellen eigener Python-Apps in Azure Functions zu beginnen:

Das ganze Azure Functions-Team möchte Ihnen eine nahtlose und produktive serverlose Umgebung für das Entwickeln und Hosten von Python-Anwendungen bieten. Bei so vielen aktuellen und anstehenden Releases, würden wir uns sehr über Ihr Feedback freuen und gerne erfahren, für welche Szenarien Sie diese einsetzen. Sie erreichen das Team bei Twitter und GitHub. Wir sind auch bei Stack Overflow und UserVoice aktiv, also fühlen Sie sich herzlich eingeladen, Fragen zu stellen oder Vorschläge einzureichen. Wir freuen uns darauf, von Ihnen zu hören!