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.
Azure Developer CLI (azd) Erweiterungen fügen neue Befehle hinzu, automatisieren Workflows und integrieren andere Dienste in azd. In diesem Artikel werden die Konzepte erläutert, die Sie verstehen müssen, bevor Sie eine Erweiterung erstellen, z. B. die Entwicklertools, das Software Development Kit (SDK) und die azd Kommunikation mit einer ausgeführten Erweiterung. Informationen dazu, welche Erweiterungen aus Benutzerperspektive stammen, finden Sie in der Übersicht über Erweiterungen.
Die Entwicklererweiterung
Die schnellste Möglichkeit zum Erstellen von Erweiterungen ist die Verwendung der azd Entwicklererweiterung (microsoft.azd.extensions). Die Entwicklererweiterung fügt im Namespace azd x eine Reihe von Befehlen hinzu, mit denen Sie das Grundgerüst Ihrer Erweiterung erstellen, sie bauen, paketieren und veröffentlichen können:
| Command | Description |
|---|---|
azd x init |
Erstellt die Grundstruktur für ein neues Erweiterungsprojekt in der Sprache Ihrer Wahl. |
azd x build |
Erstellt die Binärdatei der Erweiterung für die lokale Entwicklung. |
azd x watch |
Überwacht das Projekt auf Änderungen und erstellt die Erweiterung automatisch neu und installiert sie. |
azd x pack |
Erstellt ein Paket aus den Artefakten der Erweiterung, um sie zur Veröffentlichung vorzubereiten. |
azd x release |
Erstellt eine GitHub Version für die Erweiterung. |
azd x publish |
Aktualisiert eine Erweiterungsregistrierung mit den neuen Erweiterungsmetadaten. |
In der Schnellstartanleitung zum Erstellen einer Beispielerweiterung wird gezeigt, wie Sie die Entwicklererweiterung installieren und das Gerüst für Die erste Erweiterung erstellen.
Die Entwicklererweiterung unterstützt registrierungsbasierte Veröffentlichungsworkflows und portierbare Bundleverteilung. Verwenden Sie azd x pack, um Plattformartefakte für die Veröffentlichung und zur Veröffentlichung in einer Registry zu erstellen, oder erstellen Sie ein eigenständiges .zip-Paket, wenn Sie eine Erweiterung freigeben müssen, ohne selbst eine Registry zu hosten. Bundles können aus einer lokalen Datei installiert oder remote unter einer HTTPS-URL gehostet werden. Eine schrittweise Anleitung finden Sie unter Veröffentlichen einer Erweiterung.
Das Erweiterungsframework und gRPC
azd und Erweiterungen werden als separate Prozesse ausgeführt, die über gRPC kommunizieren. Wenn Sie einen Erweiterungsbefehl aufrufen, treten die folgenden Schritte auf:
-
azdstartet einen gRPC-Server auf einem zufälligen Port und legt dieAZD_SERVERUmgebungsvariable mit der Serveradresse fest. -
azdlegt die Umgebungsvariable fest, bei derAZD_ACCESS_TOKENes sich um ein signiertes JSON-Webtoken (JWT) handelt, das den Erweiterungszugriff aufazdDienste für die Lebensdauer des Befehls gewährt. -
azdruft den Erweiterungsbefehl auf und übergibt die aktuellen Argumente, Flags und Umgebungsvariablen. - Ihre Erweiterung verwendet einen gRPC-Client, um über die Framework-Dienste mit
azdzu kommunizieren, beispielsweise um den Benutzer zu einer Eingabe aufzufordern oder die Projektkonfiguration zu lesen. -
azdwartet, bis der Befehl abgeschlossen ist, und meldet einen Exitcode ungleich null als Fehler.
Mit diesem Modell können Erweiterungen auf konsistente und sichere Weise mit azd interagieren, ohne direkt auf den internen azd-Zustand zuzugreifen.
Anforderungen an Erweiterungen auf Projektebene
Projekte können die Erweiterungen, die sie benötigen, in azure.yaml deklarieren. Verwenden Sie den requiredVersions.extensions Abschnitt, um Erweiterungs-IDs und Versionsbeschränkungen aufzulisten, damit azd die Versionen aufgelöst werden können, die dem Projekt entsprechen.
requiredVersions:
extensions:
azure.ai.agents: ">=1.0.0"
contoso.azd.tagger: "^2.0.0"
Deklarieren Sie die erforderlichen Erweiterungen, wenn ein Projekt von von Erweiterungen bereitgestellten Hosts, Anbietern, Lebenszyklushandlern, Überprüfungen oder Befehlen abhängt. Die genaue Schemasyntax und die unterstützte Versionssyntax finden Sie unter requiredVersions.
Das Azdext SDK
Das azdext Paket ist das Go SDK für das Erweiterungsframework. Es stellt einen gRPC-Client und Hilfsprogramme bereit, die die Kommunikationsdetails für Sie verarbeiten, damit Sie sich auf Ihre Erweiterungslogik konzentrieren können. Das SDK enthält Hilfsfunktionen für Folgendes:
- Erstellen Sie einen Stammbefehl, der die Standardkennzeichnungen
azdund die Behandlung von Umgebungsvariablen registriert. - Fügen Sie das
azdZugriffstoken ausgehenden Anfragen hinzu. - Framework-Dienste
azdwie den Diensten Projekt, Umgebung, Konto und Prompt aufrufen. - Melden Sie benannte Verwendungsereignisse über die
TelemetryService.ReportUsagegRPC-API für offizielle Quellerweiterungen. Details zur API-Verwendung finden Sie unter "Kommunizieren mit azd" mithilfe des SDK. - Registrieren von Lebenszyklusereignishandlern und benutzerdefinierten Anbietern über einen Erweiterungshost.
Informationen zum Aufrufen azd von Diensten aus Ihrer Erweiterung finden Sie unter "Kommunizieren mit azd" mithilfe des SDK.
Erweiterungsfunktionen
Funktionen deklarieren, was eine Erweiterung tun kann. Führe die Fähigkeiten einer Erweiterung im extension.yaml Manifest auf, und azd erteilt die entsprechenden Berechtigungen zur Laufzeit. Zu den verfügbaren Funktionen gehören:
-
custom-commands: Fügen Sie neue Befehlsgruppen und Befehle hinzu.azd -
lifecycle-events: Abonnieren Sie Projekt- und Servicelebenszyklusereignisse, z. B.preprovisionundpostdeploy. -
mcp-server: Bereitstellen von MCP-Tools (Model Context Protocol) für KI-Agents. -
service-target-provider: Bereitstellen benutzerdefinierter Dienstbereitstellungsziele. -
framework-service-provider: Stellen Sie unterstützung für benutzerdefinierte Sprachen und Framework-Builds bereit. -
provisioning-provider: Stellen Sie einen benutzerdefinierten Ablauf für die Infrastrukturbereitstellung bereit. -
validation-provider: Validierungsprüfungen zurazdValidierungspipeline beitragen. -
metadata: Stellen Sie umfangreiche Befehls- und Konfigurationsmetadaten für die Hilfeausgabe und IntelliSense bereit.
Informationen zum Hinzufügen von Funktionen zu einer Erweiterung finden Sie unter Hinzufügen von Erweiterungsfunktionen.
Unterstützte Sprachen
Sie können Erweiterungen in jeder Sprache erstellen azd , die gRPC unterstützt, und azd x init Startvorlagen für mehrere Sprachen enthält. Go verfügt über den vollständigsten Support, einschließlich erstklassiger SDK-Hilfsprogramme azdext , sodass die Artikel in diesem Abschnitt go für alle Beispiele verwenden.
| Language | Supportstufe |
|---|---|
| Go | Optimale Unterstützung und erstklassige SDK-Hilfsprogramme. |
| .NET (C#) | Starke Integration mit einer Startvorlage. |
| Python | Gute Integration mit einer Startvorlage. |
| JavaScript | Grundlegende Integration mit einer Startervorlage. |
Für Erweiterungen, die in anderen Sprachen als Go erstellt wurden, können Sie gRPC-Clients aus den Protodateien im azure/azure-dev Repository generieren. Den aktuellen Status der Sprachunterstützung finden Sie in der Dokumentation zum upstream-Erweiterungsframework.
Erweiterungsregister
Sie verteilen Erweiterungen über Registrierungsquellen oder Erweiterungspakete. Registrierungsquellen sind URL-basierte oder dateibasierte Manifeste, die verfügbare Erweiterungen und ihre Artefakte beschreiben. Erweiterungs-Bundles sind eigenständige .zip Pakete, die Sie direkt aus einer lokalen Datei installieren oder per HTTPS-URL remote hosten können, wenn Sie keine Registry betreiben möchten.
- Die offizielle Registry ist in
azdvorkonfiguriert und enthält geprüfte Erweiterungen des Erstanbieters. Offizielle Erweiterungen werden in einer Verzweigung des Azure/Azure-Dev-Repositorys entwickelt. - URL-basierte Quellen ermöglichen die Installation aus öffentlichen oder privaten Remote-Registrierungsmanifesten.
- Mit dateibasierten Quellen können Sie aus lokalen Registrierungsmanifesten für Entwicklungs-, Test- oder Offlineszenarien installieren.
- Die Entwicklungs- und Nightly-Registries sind optionale Quellen für noch in Arbeit befindliche und automatisch erstellte Erstanbieter-Erweiterungen. Erweiterungen in der Dev-Registrierung sind nicht signiert, werden nicht vom Azure-Support abgedeckt und können ohne Vorankündigung geändert oder entfernt werden.
Informationen zum Veröffentlichen einer Erweiterung in einer Registrierung finden Sie unter Veröffentlichen einer Erweiterung.