Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A képességek határozzák meg, hogy mit tehet egy Azure fejlesztői parancssori felület (azd) bővítmény az egyéni parancsok hozzáadásától az üzembehelyezési életciklushoz való csatlakoztatásig. Ez a cikk bemutatja, hogyan adhat hozzá képességeket a Contoso Resource Tagger mintabővítményhez a Mintabővítmény létrehozása rövid útmutatóból. Ugyanezeket a mintákat bármely bővítményre alkalmazhatja.
Minden képességhez két dologra van szükség: egy bejegyzésre a capabilitiesbővítményjegyzék tömbjében, és a bővítménykód megfelelő implementációjára.
Megjegyzés:
A azd bővítmény keretrendszere általánosan elérhető. Az egyes bővítmények vagy képességek saját előzetes verziós állapotúak lehetnek. A GA-részletekért lásd: Általánosan elérhető: Azure Fejlesztői CLI (azd) bővítmény-keretrendszer.
Elérhető képességek
azd a bővítmények a következő képességeket deklarálhatják:
-
custom-commands: Új parancsokat és parancscsoportokatazdad hozzá a bővítmény névteréhez. Például a mintabővítmény hozzáadja a(z)azd tagger showelemet. Ezzel a funkcióval elérhetővé teheti a felhasználók által közvetlenül a parancssorból futtatott feladatokat. -
lifecycle-events: Előfizet azokra az eseményekre, amelyekazdfutás közben merülnek fel, példáulpreprovision,postprovisionvagypostdeploy. A bővítmény ezeken a pontokon egyéni logikát futtat anélkül, hogy a felhasználó közvetlenül meghívná. A mintabővítmény például ellenőrzi a szükséges címkéket azpreprovisionerőforrások létrehozása előtt. -
service-target-provider: Regisztrál egy új telepítési célt, hogyazdtudja, hogyan kell csomagolni és telepíteni egy szolgáltatást egy olyan kiszolgálóra, amelyet alapértelmezetten nem támogat. A szolgáltatáscél a(z)hostértékre van leképezve a következőben:azure.yaml. Hozzáadhat például egy szolgáltatót, amely üzembe helyez egy szolgáltatást egy külső platformon vagy egy belső üzemeltetési környezetben. -
framework-service-provider: Egy nyelv vagy keretrendszer támogatását regisztrálja, ígyazdtudja, hogyan állíthatja vissza, állíthatja össze és csomagolhatja be a projekttípust. Ez alanguagetalálhatóazure.yamlértéknek felel meg. Hozzáadhat például buildtámogatást egy olyan nyelvhez, amelyazdalapértelmezés szerint nem ismer fel. -
provisioning-provider: Lecseréli, hogy aazdhogyan biztosítja az infrastruktúrát aazd provisionés aazd upsorán. A beépített Bicep vagy Terraform-folyamat helyett a bővítmény határozza meg, hogy mi történik. Integrálhat például egy másik, kódként használható infrastruktúrát vagy egyéni üzembehelyezési API-t. -
validation-provider: Hozzájárul aazdprojekten vagy környezeten futó ellenőrzési folyamat ellenőrzéséhez. Például ellenőrizheti, hogy az elnevezési konvenciók, a szükséges címkék vagy a biztonsági beállítások érvényben vannak-e az üzembe helyezés folytatása előtt. -
mcp-server: Modellkörnyezeti protokollként (MCP) teszi elérhetővé a bővítmény funkcióit, amelyeket az AI-ügynökök, például a GitHub Copilot képesek felderíteni és meghívni. A mintabővítmény például közzétehet egysuggest_tagseszközt. További információ: McP-kiszolgáló hozzáadása bővítményhez. -
metadata: Gazdagabb parancs- és konfigurációsazdmetaadatokat biztosít a bővítmény leírásához, például részletes parancsleírásokat és konfigurációs tippeket a súgó kimenetében és az IntelliSense-ben.
Ez a cikk a két leggyakoribb képességre összpontosít: az egyéni parancsokra és az életciklus-eseményekre. A funkcióról mcp-server további információt az MCP-kiszolgáló hozzáadása bővítményhez című témakörben talál. A szolgáltató képességeivel kapcsolatos részletes információkért tekintse meg a bővítmény-keretrendszer referenciáit.
Egyéni parancsok hozzáadása
A(z) custom-commands képesség lehetővé teszi, hogy a bővítmény új parancsokat regisztráljon egy névtér alatt a(z) azd elemben. A mintabővítmény már használja ezt a képességet a azd tagger show parancshoz.
Deklarálja a képességet a következőben
extension.yaml: .capabilities: - custom-commandsA parancsokat a
azdext.NewExtensionRootCommandsegéd használatával hozhatja létre, amely regisztrálja a szabványosazdjelzőket és a környezeti változók kezelését, így nem kell manuálisan deklarálnia őket:import "github.com/azure/azure-dev/cli/azd/pkg/azdext" func NewRootCommand() *cobra.Command { rootCmd, extCtx := azdext.NewExtensionRootCommand(azdext.ExtensionCommandOptions{ Name: "tagger", Use: "tagger <command> [options]", Short: "Standardize and report Azure resource tags.", }) rootCmd.AddCommand(newShowCommand(extCtx)) // Add other subcommands here. return rootCmd }A segéd egy olyan értéket
*ExtensionContextad vissza, amely elérhetővé teszi a standard jelzők feloldott értékeit, példáulEnvironmentésOutputFormat. Adja át a kontextust az alparancsoknak, és a szabványos jelzők újbóli deklarálása helyett olvassák ki azt aRunEkezelőkben.
Feliratkozás életciklus-eseményekre
A lifecycle-events funkció lehetővé teszi, hogy a bővítmény egyéni logikát futtasson a projekt- és szolgáltatáséletciklus-események, például preprovision vagy postdeploy. A mintakiterjesztéshez használjon egy eseményt preprovision annak ellenőrzésére, hogy a szükséges címkék be vannak-e állítva az erőforrások üzembe helyezése előtt azd .
Deklarálja a képességet a következőben
extension.yaml: .capabilities: - custom-commands - lifecycle-eventsAdjon hozzá egy parancsot
listena bővítményhez.azdmeghívja ezt a parancsot az eseményekhez használt kétirányú kapcsolat létrehozásához. Az eseménykezelők regisztrálása aazdext.NewExtensionHostszerkesztő használatával:func newListenCommand() *cobra.Command { return &cobra.Command{ Use: "listen", Short: "Starts the extension and listens for azd events.", Hidden: true, RunE: func(cmd *cobra.Command, args []string) error { ctx := azdext.WithAccessToken(cmd.Context()) azdClient, err := azdext.NewAzdClient() if err != nil { return fmt.Errorf("failed to create azd client: %w", err) } defer azdClient.Close() host := azdext.NewExtensionHost(azdClient). WithProjectEventHandler( "preprovision", func(ctx context.Context, args *azdext.ProjectEventArgs) error { fmt.Printf("Verifying required tags for project: %s\n", args.Project.Name) // Add your tag validation logic here. return nil }, ) // Run blocks until azd closes the connection. if err := host.Run(ctx); err != nil { return fmt.Errorf("failed to run extension: %w", err) } return nil }, } }Regisztrálja a
listenparancsot a gyökérparancson:rootCmd.AddCommand(newListenCommand())
Amikor egy felhasználó lefuttatja a azd provision vagy a azd up parancsot, a azd meghívja a bővítményt, és az erőforrások kiépítése előtt meghívja a preprovision kezelőt.
Szolgáltatásesemények szűrése
A szolgáltatásesemény-kezelők támogatják az opcionális szűrést, így csak bizonyos szolgáltatástípusokat kezelhet. Az eseményt például csak Python prepackage tárolóalkalmazás-szolgáltatások esetében kezelheti:
host := azdext.NewExtensionHost(azdClient).
WithServiceEventHandler(
"prepackage",
func(ctx context.Context, args *azdext.ServiceEventArgs) error {
fmt.Printf("Packaging service: %s\n", args.Service.Name)
return nil
},
&azdext.ServiceEventOptions{
Host: "containerapp",
Language: "python",
},
)
Újraépítés és tesztelés
Miután hozzáadott egy képességet, építse újra a bővítményt, és tesztelje az új viselkedést:
Ha a figyelőt használja, a módosításai automatikusan újraépülnek. Ellenkező esetben manuálisan készítse el a következőt:
azd x buildTesztelje a képességet. Életciklus-események esetén futtasson egy parancsot, amely elindítja az eseményt, például
azd provision.