Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве описано, как использовать конфигурацию приложений Azure для централизованного хранения и управления параметрами приложения с помощью клиентской библиотеки поставщика Azure App Configuration Go.
Поставщик конфигурации приложений для Go упрощает применение ключевых значений из конфигурации приложений Azure к приложению Go. Он позволяет связывать настройки с структурой Go. Предоставляются такие функции, как составление конфигурации из нескольких меток, обрезка префикса ключа, автоматическое разрешение ссылок на «Key Vault» и многое другое.
Предпосылки
- Учетная запись Azure с активной подпиской. Создайте его бесплатно.
- Хранилище конфигураций приложения. Создайте хранилище.
- Перейти 1.21 или более поздней версии. Установите Go.
Добавление ключевых значений
Добавьте следующие ключевые значения в хранилище Конфигурация приложений. Дополнительные сведения о добавлении значений ключей в хранилище с помощью портал Azure или ИНТЕРФЕЙСА командной строки см. в разделе "Создание значения ключа".
| Ключ | Ценность | Тип контента |
|---|---|---|
| Config.Message | Всем привет! | Оставьте пустым |
| Config.App.Name | Консольное приложение Go | Оставьте пустым |
| Config.App.Debug | истина | Оставьте пустым |
| Параметры Config.App.Settings | {"timeout": 30, "retryCount": 3} | application/json |
Подключение к Конфигурация приложений
Создайте новый каталог для проекта.
mkdir app-configuration-quickstart cd app-configuration-quickstartИнициализация нового модуля Go.
go mod init app-configuration-quickstartДобавьте поставщика конфигурации приложений Azure в качестве зависимости.
go get github.com/Azure/AppConfiguration-GoProvider/azureappconfigurationСоздайте файл
appconfig.goсо следующим содержимым: Вы можете подключиться к хранилищу Конфигурация приложений с помощью идентификатора Microsoft Entra (рекомендуется) или строка подключения.package main import ( "context" "log" "os" "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 }
Unmarshal
Этот Unmarshal метод предоставляет типобезопасный способ загрузки значений конфигурации в структуры Go. Этот подход предотвращает ошибки выполнения из-за неправильно введенных ключей конфигурации и делает ваш код более поддерживаемым.
Unmarshal особенно ценен для сложных конфигураций с вложенными структурами, различными типами данных или при работе с микрослужбами, для которых требуются четкие контракты конфигурации между компонентами.
Создайте файл с именем main.go со следующим содержимым:
package main
import (
"context"
"fmt"
"log"
"time"
)
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)
}
байты JSON
Метод GetBytes извлекает конфигурацию в виде необработанных данных JSON, предлагая гибкую альтернативу привязке структуры. Этот подход легко интегрируется с существующими библиотеками обработки JSON, такими как стандартный encoding/json пакет или платформы конфигурации, такие как viper. Это особенно полезно при работе с динамическими конфигурациями, когда необходимо временно хранить конфигурацию или при интеграции с существующими системами, ожидающими входные данные JSON. Использование GetBytes обеспечивает прямой доступ к конфигурации в универсально совместимом формате, но по-прежнему использует возможности централизованного управления конфигурацией приложений Azure.
Измените main.go, добавив следующее содержимое:
// Existing code in main.go
// ... ...
fmt.Printf("Timeout: %d seconds\n", config.App.Settings.Timeout)
fmt.Printf("Retry Count: %d\n", config.App.Settings.RetryCount)
// 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
// ...
Запуск приложения
Задайте переменную среды для проверки подлинности.
Установите переменную среды с именем AZURE_APPCONFIG_ENDPOINT на значение конечной точки вашего хранилища конфигураций приложений, найденной в разделе Обзор вашего хранилища в портале Azure.
Если вы используете командную строку Windows, выполните следующую команду и перезапустите командную строку, чтобы изменения вступили в силу:
setx AZURE_APPCONFIG_ENDPOINT "<AppConfigurationEndpoint>"Если вы используете PowerShell, выполните следующую команду:
$Env:AZURE_APPCONFIG_ENDPOINT = "<AppConfigurationEndpoint>"Если вы используете macOS или Linux, выполните следующую команду:
export AZURE_APPCONFIG_ENDPOINT='<AppConfigurationEndpoint>'Кроме того, убедитесь, что вы выполнили вход с помощью Azure CLI или используйте переменные среды для проверки подлинности Azure:
az loginПосле правильного задания переменной среды выполните следующую команду, чтобы запустить пример Unmarshal и GetBytes :
go mod tidy go run .Вы должны увидеть результат, аналогичный приведенному ниже:
Configuration Values: --------------------- Message: Hello World! App Name: Go Console App Debug Mode: true Timeout: 30 seconds Retry Count: 3 Raw JSON Configuration: ------------------------ {"App":{"Debug":true,"Name":"Go Console App","Settings":{"retryCount":3,"timeout":30}},"Message":"Hello World!"}
Очистите ресурсы
Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.
Это важно
Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все ресурсы в ней будут удалены безвозвратно. Убедитесь, что вы не удаляете случайно неправильную группу ресурсов или ресурсы. Если вы создали ресурсы для этой статьи внутри группы ресурсов, которая содержит другие ресурсы, которые вы хотите сохранить, удалите каждый ресурс индивидуально из его собственной панели, вместо того чтобы удалять группу ресурсов.
- Войдите на портал Azure и выберитеГруппы ресурсов.
- В поле Фильтр по имени введите название вашей группы ресурсов.
- В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
- Выберите команду Удалить группу ресурсов.
- Вам предлагается подтвердить удаление группы ресурсов. Введите имя вашей группы ресурсов для подтверждения и выберите Удалить.
Через несколько мгновений группа ресурсов и все ее ресурсы будут удалены.
Дальнейшие шаги
В этом кратком руководстве вы создали новое хранилище конфигурации приложений и узнали, как получить доступ к значениям ключей с помощью поставщика Azure App Configuration Go в консольном приложении.
Дополнительные сведения о поставщике Azure App Configuration Go см. в справочной документации.