إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا التشغيل السريع، يمكنك استخدام Azure App Configuration لمركزية التخزين وإدارة إعدادات التطبيق باستخدام مكتبة عميل موفر Azure App Configuration Go.
يبسط موفر App Configuration ل Go جهود تطبيق قيم المفاتيح من Azure App Configuration إلى تطبيق Go. وهو يمكن إعدادات الربط من بنية Go. يوفر ميزات مثل تكوين التكوين من تسميات متعددة، وقص بادئة المفتاح، والدقة التلقائية لمراجع Key Vault، وغيرها الكثير.
Prerequisites
- حساب Azure مع اشتراك نشط. أنشئ حسابًا مجانًا.
- متجر App Configuration. إنشاء متجر.
- انتقل إلى 1.21 أو أحدث. قم بتثبيت Go.
إضافة قيم رئيسية
أضف قيم المفاتيح التالية إلى متجر App Configuration. لمزيد من المعلومات حول كيفية إضافة قيم المفاتيح إلى مخزن باستخدام مدخل Microsoft Azure أو CLI، انتقل إلى إنشاء قيمة مفتاح.
| Key | Value | نوع المحتوى |
|---|---|---|
| Config.Message | مرحبا بالعالم! | اتركه فارغا |
| Config.App.Name | تطبيق وحدة التحكم Go | اتركه فارغا |
| Config.App.Debug | true | اتركه فارغا |
| Config.App.Settings | {"المهلة": 30، "retryCount": 3} | application/json |
الاتصال ب App Configuration
إنشاء دليل جديد للمشروع.
mkdir app-configuration-quickstart cd app-configuration-quickstartتهيئة وحدة نمطية Go جديدة.
go mod init app-configuration-quickstartأضف موفر Azure App Configuration كتبعية.
go get github.com/Azure/AppConfiguration-GoProvider/azureappconfigurationإنشاء ملف باسم
appconfig.goبالمحتوى التالي. يمكنك الاتصال بمخزن App Configuration باستخدام معرف 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 إلى نقطة نهاية متجر تكوين التطبيق الموجود ضمن نظرة عامة على متجرك في مدخل Microsoft Azure.
إذا كنت تستخدم موجه الأوامر Windows، فشغل الأمر التالي، ثم أعد تشغيل موجه الأوامر للسماح للتغيير بتنفيذ الأمر:
setx AZURE_APPCONFIG_ENDPOINT "<endpoint-of-your-app-configuration-store>"إذا كنت تستخدم PowerShell، فقم بتشغيل الأمر التالي:
$Env:AZURE_APPCONFIG_ENDPOINT = "<endpoint-of-your-app-configuration-store>"إذا كنت تستخدم macOS أو Linux، فقم بإجراء الأمر التالي:
export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'بالإضافة إلى ذلك، تأكد من تسجيل الدخول باستخدام 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!"}
تنظيف الموارد
إذا كنت لا تريد مواصلة استخدام الموارد التي تم إنشاؤها في هذه المقالة، يوصى بحذف مجموعة الموارد التي أنشأتها هنا لتجنب الرسوم.
Important
حذف مجموعة الموارد لا يمكن التراجع عنه. يتم حذف مجموعة الموارد وجميع الموارد المضمنة فيها نهائيًا. تأكد من عدم حذفك للموارد أو مجموعة المورد الخاطئة عن غير قصد. في حالة إنشاء الموارد لهذه المقالة داخل مجموعة موارد تشتمل على موارد أخرى تريد الاحتفاظ بها، احذف كل مورد على حدة من الجزء الخاص به بدلًا من حذف مجموعة الموارد.
- سجل الدخول إلى مدخل Microsoft Azure، وحدد Resource groups.
- في المربع تصفية حسب الاسم ، أدخل اسم مجموعة الموارد الخاصة بك.
- في قائمة النتائج، حدد اسم مجموعة الموارد لاستعراض نظرة عامة.
- حدد Delete resource group.
- يُطلب منك تأكيد حذف مجموعة الموارد. أدخل اسم مجموعة الموارد للتأكيد وحدد "Delete".
بعد بضع لحظات، يتم حذف مجموعة الموارد وكافة مواردها.
الخطوات التالية
في هذا التشغيل السريع، قمت بإنشاء متجر App Configuration جديد وتعلمت كيفية الوصول إلى قيم المفاتيح باستخدام موفر Azure App Configuration Go في تطبيق وحدة التحكم.
لمعرفة المزيد حول Azure App Configuration Go Provider، راجع المستند المرجعي.