Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste início rápido, você usará a Configuração de Aplicativos do Azure para centralizar o armazenamento e o gerenciamento das configurações do aplicativo usando a biblioteca de clientes do provedor Go da Configuração de Aplicativos do Azure.
O provedor de Configuração de Aplicativos para Go simplifica o esforço de aplicar valores-chave da Configuração de Aplicativos do Azure ao aplicativo Go. Ele habilita as configurações de associação para o struct Go. Oferece também recursos como composição de configuração com base em vários rótulos, corte de prefixo de chave, resolução automática de referências do Key Vault, entre outros.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie um gratuitamente.
- Um repositório de Configuração de Aplicativos. Criar um repositório.
- Go 1.18 ou posterior. Instale o Go.
Adicionar valores-chave
Adicione os seguintes valores-chave ao repositório de Configuração do Aplicativos. Para mais informações sobre como adicionar valores-chave a um repositório usando o portal do Azure ou a CLI, acesse Criar um valor-chave.
Chave | Valor | Tipo de conteúdo |
---|---|---|
Config.Message | Olá, Mundo! | Deixe o campo vazio |
Config.App.Name | App de Console Go | Deixe o campo vazio |
Config.App.Debug | verdadeiro | Deixe o campo vazio |
Config.App.Settings | {"timeout": 30, "retryCount": 3} | aplicativo/json |
Conectar-se à Configuração de Aplicativos
Crie um novo diretório para o projeto.
mkdir app-configuration-quickstart cd app-configuration-quickstart
Inicialize um novo módulo Go.
go mod init app-configuration-quickstart
Adicione o provedor de Configuração de Aplicativos do Azure como uma dependência.
go get github.com/Azure/AppConfiguration-GoProvider/azureappconfiguration
Crie um arquivo chamado
appconfig.go
com o conteúdo a seguir. Você pode se conectar ao seu armazenamento de configuração de aplicativo usando o Microsoft Entra ID (recomendado) ou uma cadeia de conexão.
package main
import (
"context"
"fmt"
"log"
"os"
"time"
"github.com/Azure/AppConfiguration-GoProvider/azureappconfiguration"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
)
func loadAzureAppConfiguration(ctx context.Context) (*azureappconfiguration.Azureappconfiguration, error) {
// Get the endpoint from environment variable
endpoint := os.Getenv("AZURE_APPCONFIG_ENDPOINT")
if endpoint == "" {
log.Fatal("AZURE_APPCONFIG_ENDPOINT environment variable is not set")
}
// Create a credential using DefaultAzureCredential
credential, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("Failed to create credential: %v", err)
}
// Set up authentication options with endpoint and credential
authOptions := azureappconfiguration.AuthenticationOptions{
Endpoint: endpoint,
Credential: credential,
}
// Configure which keys to load and trimming options
options := &azureappconfiguration.Options{
Selectors: []azureappconfiguration.Selector{
{
KeyFilter: "Config.*",
LabelFilter: "",
},
},
TrimKeyPrefixes: []string{"Config."},
}
// Load configuration from Azure App Configuration
appConfig, err := azureappconfiguration.Load(ctx, authOptions, options)
if err != nil {
log.Fatalf("Failed to load configuration: %v", err)
}
return appConfig, nil
}
Realizar unmarshaling
O método Unmarshal
fornece uma maneira fortemente tipada de carregar valores de configuração em structs Go. Essa abordagem impede erros de execução de chaves de configuração mal digitadas e torna seu código mais mantível.
Unmarshal
é particularmente valioso para configurações complexas com estruturas aninhadas, tipos de dados diferentes ou ao trabalhar com microsserviços que exigem contratos de configuração claros entre componentes.
Crie um arquivo nomeado unmarshal_sample.go
com o seguinte conteúdo:
package main
import (
"context"
"fmt"
"log"
"time"
)
// Configuration structure that matches your key-values in App Configuration
type Config struct {
Message string
App struct {
Name string
Debug bool
Settings struct {
Timeout int
RetryCount int
}
}
}
func main() {
// Create a context with timeout
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
// Load configuration
provider, err := loadAzureAppConfiguration(ctx)
if err != nil {
log.Fatalf("Error loading configuration: %v", err)
}
// Create a configuration object and unmarshal the loaded key-values into it
var config Config
if err := provider.Unmarshal(&config, nil); err != nil {
log.Fatalf("Failed to unmarshal configuration: %v", err)
}
// Display the configuration values
fmt.Println("\nConfiguration Values:")
fmt.Println("---------------------")
fmt.Printf("Message: %s\n", config.Message)
fmt.Printf("App Name: %s\n", config.App.Name)
fmt.Printf("Debug Mode: %t\n", config.App.Debug)
fmt.Printf("Timeout: %d seconds\n", config.App.Settings.Timeout)
fmt.Printf("Retry Count: %d\n", config.App.Settings.RetryCount)
}
Bytes JSON
O GetBytes
método recupera sua configuração como dados JSON brutos, oferecendo uma alternativa flexível à associação de struct. Essa abordagem integra-se perfeitamente com bibliotecas de processamento JSON existentes, como o pacote padrão encoding/json
ou estruturas de configuração, como viper
. É particularmente útil ao trabalhar com configurações dinâmicas, quando você precisa armazenar a configuração temporariamente ou ao integrar com sistemas existentes que esperam entrada JSON. O uso do GetBytes fornece acesso direto à sua configuração em um formato universalmente compatível, enquanto ainda se beneficia dos recursos de gerenciamento centralizado da Configuração de Aplicativos do Azure.
Crie um arquivo nomeado getbytes_sample.go
com o seguinte conteúdo:
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/spf13/viper"
)
func main() {
// Create a context with timeout
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
// Load configuration using the common function
provider, err := loadAzureAppConfiguration(ctx)
if err != nil {
log.Fatalf("Error loading configuration: %v", err)
}
// Get configuration as JSON bytes
jsonBytes, err := provider.GetBytes(nil)
if err != nil {
log.Fatalf("Failed to get configuration as bytes: %v", err)
}
fmt.Println("\nRaw JSON Configuration:")
fmt.Println("------------------------")
fmt.Println(string(jsonBytes))
// Initialize a new Viper instance
v := viper.New()
v.SetConfigType("json") // Set the config format to JSON
// Load the JSON bytes into Viper
if err := v.ReadConfig(bytes.NewBuffer(jsonBytes)); err != nil {
log.Fatalf("Failed to read config into viper: %v", err)
}
// Use viper to access your configuration
// ...
}
Executar o aplicativo
Defina a variável de ambiente para autenticação.
Defina a variável de ambiente denominada AZURE_APPCONFIG_ENDPOINT para o ponto de extremidade do repositório de Configuração de Aplicativos encontrado na Visão Geral do seu repositório no portal do Azure.
Se você usar o prompt de comando do Windows, execute o comando a seguir e reinicie o prompt de comando para permitir que a alteração entre em vigor:
setx AZURE_APPCONFIG_ENDPOINT "<endpoint-of-your-app-configuration-store>"
Se você usar o PowerShell, execute o seguinte comando:
$Env:AZURE_APPCONFIG_ENDPOINT = "<endpoint-of-your-app-configuration-store>"
Se você usa macOS ou Linux, execute o comando a seguir:
export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'
Além disso, verifique se você fez logon com a CLI do Azure ou use variáveis de ambiente para autenticação do Azure:
az login
Depois que a variável de ambiente for definida corretamente, execute o seguinte comando para executar o exemplo Unmarshal :
go run unmarshal_sample.go
Será exibida uma saída semelhante à seguinte:
Configuration Values: --------------------- Message: Hello World! App Name: Go Console App Debug Mode: true Timeout: 30 seconds Retry Count: 3
Execute o exemplo GetBytes :
go run getbytes_sample.go
Será exibida uma saída semelhante à seguinte:
Raw JSON Configuration: ------------------------ {"App":{"Debug":true,"Name":"Go Console App","Settings":{"retryCount":3,"timeout":30}},"Message":"Hello World!"}
Limpar os recursos
Se não deseja continuar usando os recursos criados neste artigo, exclua o grupo de recursos que você criou aqui para evitar encargos.
Importante
A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Certifique-se de não excluir o grupo de recursos ou os recursos incorretos acidentalmente. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que você deseja manter, exclua cada um individualmente do respectivo painel em vez de excluir o grupo de recursos.
- Entre no portal do Azure e selecione Grupos de recursos.
- Na caixa Filtrar por nome..., digite o nome do seu grupo de recursos.
- Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
- Selecione Excluir grupo de recursos.
- Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Insira o nome do grupo de recursos para confirmar e selecione Excluir.
Após alguns instantes, o grupo de recursos e todos os recursos dele são excluídos.
Próximas etapas
Neste início rápido, você criou um novo repositório de Configuração de Aplicativos e aprendeu a acessar valores-chave usando o provedor Go de Configuração de Aplicativo do Azure em um aplicativo de console.
Para saber mais sobre o Provedor Go de Configuração de Aplicativo do Azure, consulte o documento de referência.