Kommunikáció az azd-vel az SDK használatával

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ául localhost: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)
}