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 bővítmények gRPC-kapcsolaton keresztül kommunikálnak a Azure fejlesztői parancssori felülettel azazd SDK használatávalazdext. Az SDK lehetővé teszi, hogy a bővítmény beolvassa a projekt- és környezeti adatokat, kérje meg a felhasználót, és hívja fel a azd szolgáltatásokat. Ez a cikk bemutatja, hogyan javíthatja a Contoso Resource Tagger mintabővítményét az SDK használatával a Mintabővítmény létrehozása rövid útmutatóból. Ugyanezeket a mintákat bármely bővítményre alkalmazhatja.
Megjegyzés:
azd bővítmények jelenleg bétaverzióban érhetők el.
A kommunikáció működése
A bővítmény futtatásakor azd elindít egy gRPC-kiszolgálót, és két értéket ad át a bővítménynek környezeti változókon keresztül:
-
AZD_SERVER: A gRPC-kiszolgáló címe, példáullocalhost:12345. -
AZD_ACCESS_TOKEN: JWT hozzáférési jogkivonat, amely engedélyezi a bővítmény kéréseit.
A bővítmény az azdext SDK használatával csatlakozik ehhez a kiszolgálóhoz, és meghívja azd a szolgáltatásokat. A token minden kérést azokra a képességekre korlátoz, amelyeket a bővítmény a manifestben deklarál.
Azd-ügyfél létrehozása
A azdext.NewAzdClient függvény létrehoz egy klienst, amely a azd által biztosított környezeti változók használatával csatlakozik a következőhöz: azd. Vegye körül a bejövő kontextust a(z) azdext.WithAccessToken elemmel, hogy az SDK minden kéréshez csatolja a hozzáférési tokent:
import (
"context"
"fmt"
"github.com/azure/azure-dev/cli/azd/pkg/azdext"
)
func run(ctx context.Context) error {
// Attach the AZD_ACCESS_TOKEN to outgoing requests.
ctx = azdext.WithAccessToken(ctx)
azdClient, err := azdext.NewAzdClient()
if err != nil {
return fmt.Errorf("failed to create azd client: %w", err)
}
defer azdClient.Close()
// Use azdClient to call azd services.
return nil
}
Projekt- és környezeti adatok olvasása
A Project és a környezeti szolgáltatások segítségével információkat olvashat az aktuális azd project és környezetről. A mintakiterjesztéshez olvassa el a projektet, hogy megvizsgálhassa az erőforrásait és címkéit:
// Get the current project.
getProject, err := azdClient.Project().Get(ctx, &azdext.EmptyRequest{})
if err != nil {
return fmt.Errorf("failed to get project: %w", err)
}
fmt.Printf("Project name: %s\n", getProject.Project.Name)
fmt.Printf("Project path: %s\n", getProject.Project.Path)
// Get the current environment.
getEnv, err := azdClient.Environment().GetCurrent(ctx, &azdext.EmptyRequest{})
if err != nil {
return fmt.Errorf("failed to get environment: %w", err)
}
fmt.Printf("Environment name: %s\n", getEnv.Environment.Name)
Környezeti értékek olvasása és írása
A Környezeti szolgáltatás beolvassa és megírja a környezeti értékeket. Ezek az értékek a .azure projekt könyvtárában maradnak. A mintabővítményhez tároljon egy szükséges címkeértéket, amelyet a felhasználó biztosít:
// Read an environment value.
getValue, err := azdClient.Environment().GetValue(ctx, &azdext.GetEnvRequest{
EnvName: getEnv.Environment.Name,
Key: "CONTOSO_COST_CENTER",
})
if err == nil {
fmt.Printf("Cost center: %s\n", getValue.Value)
}
// Write an environment value.
_, err = azdClient.Environment().SetValue(ctx, &azdext.SetEnvRequest{
EnvName: getEnv.Environment.Name,
Key: "CONTOSO_COST_CENTER",
Value: "CC-1001",
})
if err != nil {
return fmt.Errorf("failed to set environment value: %w", err)
}
Kérje meg a felhasználót
A Parancssor szolgáltatás konzisztens, interaktív utasításokat biztosít, amelyek megfelelnek a felhasználói élménynek azd . A mintabővítmény esetében kérje meg a felhasználót, hogy keressen hiányzó címkeértéket:
promptResponse, err := azdClient.Prompt().Prompt(ctx, &azdext.PromptRequest{
Options: &azdext.PromptOptions{
Message: "Enter the cost center tag value",
},
})
if err != nil {
return fmt.Errorf("failed to prompt for value: %w", err)
}
costCenter := promptResponse.Value
A Parancssor szolgáltatás emellett támogatja a kijelölési kéréseket, a megerősítési kéréseket és a többszörös kijelölési kéréseket is. Használja inkább ezeket a lehetőségeket a saját inputkezelés megírása helyett, hogy a bővítménye illeszkedjen a azd megjelenéséhez és működési élményéhez.
Elérhető szolgáltatások
Az azdext SDK az alábbi gRPC-szolgáltatásokat teszi elérhetővé az ügyfélen keresztül:
| Service | Description |
|---|---|
| Projekt | Beolvassa az aktuális projektkonfigurációt. |
| Környezet | Beolvassa és megírja a környezeteket és a környezeti értékeket. |
| UserConfig | Olvassa és írja a felhasználói szintű konfigurációt. |
| Üzembe helyezés | Beolvassa az üzembehelyezési környezetet és az eredményeket. |
| Account | Beolvassa Azure előfizetési és helyinformációkat. |
| Haladéktalan | Interaktív utasításokat jelenít meg. |
| AI-modell | A konfigurált AI-modelleket használja. |
| Event | Feliratkozik az életciklus-eseményekre. |
| Workflow | Munkafolyamatokat futtat azd . |
| Telemetry | A bővítmények használatát a(z) azdClient.Telemetry().ReportUsage használatával jelzi. |
A szolgáltatások és üzenetdefiníciók teljes listájáért tekintse meg a azure-dev adattár proto fájljait és a bővítmény-keretrendszer referenciáját.
Hibák jelentése
A parancskezelők hibáit adja vissza, így azd következetesen megjelenítheti őket, és beállíthatja a megfelelő kilépési kódot. Lásd el a hibákat környezettel a fmt.Errorf és a %w művelet használatával, hogy a hívók megvizsgálhassák a mögöttes hibát:
if err != nil {
return fmt.Errorf("failed to apply tags: %w", err)
}