Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Özellikler, özel komutlar eklemeden dağıtım yaşam döngüsüne bağlanmaya kadar bir Azure Geliştirici CLI (azd) uzantısının neler yapabileceğini tanımlar. Bu makalede, Örnek uzantı oluşturma hızlı başlangıcından Contoso Resource Tagger örnek uzantısına nasıl özellik ekleyebileceğiniz gösterilmektedir. Aynı desenleri herhangi bir uzantıya uygulayabilirsiniz.
Her özellik iki şey gerektirir: capabilities dizisindeki bir giriş ve uzantı kodunuzda buna karşılık gelen uygulama.
Note
azd Uzantı çerçevesi genel olarak kullanılabilir. Tek tek uzantıların veya özelliklerin kendi önizleme durumları olabilir. GA ayrıntıları için bkz. Genel Kullanıma Sunuldu: Azure Developer CLI (azd) Uzantı Çerçevesi.
Kullanılabilir özellikler
azd uzantılar aşağıdaki özellikleri bildirebilir:
-
custom-commands: Uzantınızın ad alanı altına yeni komutlar ve komut gruplarıazdekler. Örneğin, örnek uzantıazd tagger showekler. Kullanıcıların doğrudan komut satırından çalıştıracakları görevleri kullanıma açmak için bu özelliği kullanın. -
lifecycle-events: Çalışırkenazdtarafından tetiklenen,preprovision,postprovisionveyapostdeploygibi olaylara abone olur. Uzantınız, kullanıcı doğrudan çağırmadan bu noktalarda özel mantık çalıştırır. Örneğin, örnek uzantı herhangi bir kaynak oluşturulmadan önce gereklipreprovisionetiketleri denetler. -
service-target-provider: Yeni bir dağıtım hedefi kaydeder; böyleceazd, kutudan çıktığı haliyle desteklemediği bir ana bilgisayara bir hizmetin nasıl paketlenip dağıtılacağını bilir. Bir hizmet hedefi,hostiçindekiazure.yamldeğerine eşlenir. Örneğin, bir hizmeti üçüncü taraf platforma veya iç barındırma ortamına dağıtan bir sağlayıcı ekleyebilirsiniz. -
framework-service-provider: Bir dil veya çerçeve için destek kaydeder, böyleceazdbu proje türünün nasıl geri yüklendiğini, derlendiğini ve paketlendiğini bilir. Bu,languageiçindekiazure.yamldeğerine karşılık gelir. Örneğin, varsayılan olarak tanınmayanazdbir dil için derleme desteği ekleyebilirsiniz. -
provisioning-provider:azdveazd provisionsırasındaazd up'in altyapıyı sağlama biçimini değiştirir. Uzantınız yerleşik Bicep veya Terraform akışı yerine ne olacağını tanımlar. Örneğin, farklı bir altyapıyı kodla yönetme aracını veya özel bir dağıtım API'sini entegre edebilirsiniz. -
validation-provider: Bir proje veya ortama karşı çalışan doğrulama işlem hattınaazddenetimleri ekler. Örneğin, bir dağıtım devam etmeden önce adlandırma kurallarının, gerekli etiketlerin veya güvenlik ayarlarının yerinde olduğunu doğrulayabilirsiniz. -
mcp-server: Uzantınızın, GitHub Copilot gibi yapay zeka aracılarının bulabildiği ve çağırabildiği Model Bağlam Protokolü (MCP) araçları olarak işlevselliğini kullanıma sunar. Örneğin, örnek uzantı birsuggest_tagsaracı kullanıma açabilir. Daha fazla bilgi için bkz. Uzantıya MCP sunucusu ekleme. -
metadata:azdöğesinin uzantınızı açıklamak için kullandığı, yardım çıkışında ve IntelliSense'te gösterilen ayrıntılı komut açıklamaları ile yapılandırma ipuçları gibi daha zengin komut ve yapılandırma meta verileri sağlar.
Bu makale en yaygın iki özelliğe odaklanır: özel komutlar ve yaşam döngüsü olayları.
mcp-server Özellik için bkz. Uzantıya MCP sunucusu ekleme. Sağlayıcının yetenekleri hakkında tüm ayrıntılar için uzantı çerçevesi referansına bakın.
Özel komutlar ekleme
Bu custom-commands özellik, uzantınızın içindeki bir ad alanı azdaltına yeni komutlar kaydetmesini sağlar. Örnek uzantı, azd tagger show komutu için bu yeteneği zaten kullanıyor.
Özelliği
extension.yamliçinde bildirin.capabilities: - custom-commandsStandart bayrakları ve ortam değişkeni işlemesini
azdext.NewExtensionRootCommandazdkaydeden yardımcıyı kullanarak komutlarınızı derleyin, böylece bunları el ile bildirmeniz gerekmez: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 }Yardımcı,
*ExtensionContextveEnvironmentgibi standart bayrakların çözümlenen değerlerini erişime sunan birOutputFormatdöndürür. Bağlamı alt komutlarınıza iletin ve standart bayrakları yeniden tanımlamak yerine, bunlarıRunEişleyicilerinin içinde bu bağlamdan okuyun.
Yaşam döngüsü olaylarına abone olma
Bu lifecycle-events özelliği, uzantınızın preprovision veya postdeploy gibi proje ve hizmet yaşam döngüsü olayları sırasında özel mantık çalıştırmasına olanak tanır. Örnek uzantı için, preprovision herhangi bir kaynak sağlamadan önce gerekli etiketlerin ayarlandığını doğrulamak üzere bir azd olayını kullanın.
Özelliği
extension.yamliçinde bildirin.capabilities: - custom-commands - lifecycle-eventsUzantınıza bir
listenkomut ekleyin.azdolaylar için kullanılan çift yönlü bağlantıyı kurmak için bu komutu çağırır. Olay işleyicilerinizi kaydetmek için oluşturucuyuazdext.NewExtensionHostkullanın: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 }, } }listenKomutunu kök komutunuzda kaydedin:rootCmd.AddCommand(newListenCommand())
Bir kullanıcı azd provision veya azd up çalıştırdığında, azd uzantınızı çağırır ve kaynakları sağlamadan önce preprovision işleyicisini çağırır.
Hizmet olaylarını filtreleme
Hizmet olayı işleyicileri isteğe bağlı filtrelemeyi destekler, bu nedenle yalnızca belirli hizmet türlerini işlersiniz. Örneğin, olayı yalnızca Python kapsayıcı uygulaması hizmetleri için işleyebilirsinizprepackage:
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",
},
)
Yeniden oluşturma ve test
Bir özellik ekledikten sonra uzantıyı yeniden derleyin ve yeni davranışı test edin:
İzleyiciyi kullanıyorsanız değişiklikleriniz otomatik olarak yeniden derlenir. Aksi takdirde manuel olarak derleyin:
azd x buildÖzelliği test edin. Yaşam döngüsü olayları için olayı tetikleyen bir komut çalıştırın, örneğin
azd provision.