سرد حاويات الكائنات الثنائية كبيرة الحجم باستخدام Go
عند سرد الحاويات في حساب Azure Storage من التعليمات البرمجية الخاصة بك، يمكنك تحديد عدة خيارات لإدارة كيفية إرجاع النتائج من Azure Storage. توضح هذه المقالة كيفية سرد الحاويات باستخدام وحدة عميل Azure Storage ل Go.
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاني
- حساب تخزين Azure - إنشاء حساب تخزين
- Go 1.18+
إعداد بيئتك
إذا لم يكن لديك مشروع موجود، يوضح هذا القسم كيفية إعداد مشروع للعمل مع وحدة عميل Azure Blob Storage ل Go. تتضمن الخطوات تثبيت الوحدة النمطية وإضافة import
المسارات وإنشاء كائن عميل معتمد. للحصول على التفاصيل، راجع بدء استخدام Azure Blob Storage وGo.
تثبيت الوحدات النمطية
تثبيت الوحدة النمطية azblob باستخدام الأمر التالي:
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
للمصادقة باستخدام معرف Microsoft Entra (مستحسن)، قم بتثبيت الوحدة النمطية azidentity
باستخدام الأمر التالي:
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
إضافة مسارات الاستيراد
في ملف التعليمات البرمجية، أضف مسارات الاستيراد التالية:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
تمثل مسارات الاستيراد هذه الحد الأدنى المطلوب للبدء. قد تتطلب بعض أمثلة التعليمات البرمجية في هذه المقالة مسارات استيراد إضافية. للحصول على تفاصيل محددة ومثال على الاستخدام، راجع نماذج التعليمات البرمجية.
إنشاء كائن عميل
لتوصيل تطبيق ب Blob Storage، قم بإنشاء كائن عميل باستخدام azblob. NewClient. يوضح المثال التالي كيفية إنشاء كائن عميل باستخدام DefaultAzureCredential
للتخويل:
func getServiceClientTokenCredential(accountURL string) *azblob.Client {
// Create a new service client with token credential
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
client, err := azblob.NewClient(accountURL, credential, nil)
handleError(err)
return client
}
التصريح
يجب أن يكون لآلية التخويل الأذونات اللازمة لسرد حاويات الكائن الثنائي كبير الحجم. للحصول على تخويل باستخدام معرف Microsoft Entra (مستحسن)، تحتاج إلى دور Azure RBAC المضمن في Storage Blob Data Contributor أو أعلى. لمعرفة المزيد، راجع إرشادات التخويل لحاويات القائمة (REST API).
حول خيارات سرد الحاوية
عند سرد الحاويات من التعليمات البرمجية الخاصة بك، يمكنك تحديد خيارات لإدارة كيفية إرجاع النتائج من Azure Storage. يمكنك تحديد عدد النتائج المراد إرجاعها في كل مجموعة من النتائج، ثم استرداد المجموعات اللاحقة. يمكنك أيضا تصفية النتائج حسب بادئة، وإرجاع بيانات تعريف الحاوية مع النتائج. يتم وصف هذه الخيارات في الأقسام التالية.
لسرد الحاويات في حساب تخزين، قم باستدعاء الطريقة التالية:
يقوم هذا الأسلوب بإرجاع Pager، والذي يسمح لتطبيقك بمعالجة صفحة واحدة من النتائج في كل مرة. يتم ترتيب الحاويات معجميا بالاسم.
يمكنك تحديد خيارات لإدراج الحاويات باستخدام بنية ListContainersOptions . تتضمن هذه البنية حقولا لإدارة عدد النتائج، والتصفية حسب البادئة، وتضمين معلومات الحاوية باستخدام ListContainersInclude.
إدارة عدد النتائج التي يتم إرجاعها
بشكل افتراضي، ترجع عملية إدخال القائمة ما يصل إلى 5000 نتيجة في كل مرة. لإرجاع مجموعة أصغر من النتائج، قم بتوفير قيمة غير صفرية للحقل MaxResults
في بنية ListContainersOptions .
تصفية النتائج باستخدام البادئة
لتصفية قائمة الحاويات، حدد سلسلة أو حرفا للحقل Prefix
في ListContainersOptions. يمكن أن تتضمن سلسلة البادئة حرفاً واحداً أو أكثر. ثم يقوم Azure Storage بإرجاع الحاويات التي تبدأ أسماؤها بهذه البادئة فقط.
تضمين بيانات تعريف الحاوية
لتضمين بيانات تعريف الحاوية مع النتائج، قم بتعيين Metadata
الحقل إلى true
كجزء من ListContainersInclude. يتضمن Azure Storage بيانات التعريف مع كل حاوية يتم إرجاعها، لذلك لا تحتاج إلى إحضار بيانات تعريف الحاوية بشكل منفصل.
تضمين الحاويات المحذوفة
لتضمين حاويات محذوفة مبدئيا مع النتائج، قم بتعيين Deleted
الحقل إلى true
كجزء من ListContainersInclude.
أمثلة على التعليمات البرمجية
يسرد المثال التالي جميع الحاويات وبيانات التعريف:
func listContainers(client *azblob.Client) {
// List the containers in the storage account and include metadata
pager := client.NewListContainersPager(&azblob.ListContainersOptions{
Include: azblob.ListContainersInclude{Metadata: true},
})
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, container := range resp.ContainerItems {
fmt.Println(*container.Name)
for k, v := range container.Metadata {
fmt.Printf("%v: %v\n", k, *v)
}
}
}
}
يسرد المثال التالي فقط الحاويات التي تبدأ بالبادئة المحددة:
func listContainersWithPrefix(client *azblob.Client, prefix string) {
// List the containers in the storage account with a prefix
pager := client.NewListContainersPager(&azblob.ListContainersOptions{
Prefix: &prefix,
})
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, container := range resp.ContainerItems {
fmt.Println(*container.Name)
}
}
}
يمكنك أيضا تحديد حد لعدد النتائج لكل صفحة. يمرر هذا المثال قيمة للنتائج MaxResults
ويقسمها إلى صفحات:
func listContainersWithMaxResults(client *azblob.Client, maxResults int32) {
// List the containers in the storage account with a maximum number of results
pager := client.NewListContainersPager(&azblob.ListContainersOptions{
MaxResults: &maxResults,
})
i := 0
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
// Show page number to demonstrate pagination with max results
i++
fmt.Printf("Page %d:\n", i)
for _, container := range resp.ContainerItems {
fmt.Println(*container.Name)
}
}
}
إشعار
تهدف نماذج التعليمات البرمجية في هذا الدليل إلى مساعدتك في البدء في Azure Blob Storage وGo. يجب تعديل معالجة Context
الأخطاء والقيم لتلبية احتياجات التطبيق الخاص بك.
الموارد
لمعرفة المزيد حول سرد الحاويات باستخدام وحدة عميل Azure Blob Storage ل Go، راجع الموارد التالية.
نماذج التعليمات البرمجية
- عرض نماذج التعليمات البرمجية من هذه المقالة (GitHub)
عمليات واجهة برمجة تطبيقات REST
يحتوي Azure SDK for Go على مكتبات تستند إلى واجهة برمجة تطبيقات AZURE REST، مما يسمح لك بالتفاعل مع عمليات واجهة برمجة تطبيقات REST من خلال نماذج Go المألوفة. تستخدم أساليب مكتبة العميل لإدراج الحاويات عملية REST API التالية:
- حاويات القائمة (REST API)
موارد وحدة العميل
(راجع أيضًا )
المحتوى ذو الصلة
- هذه المقالة هي جزء من دليل مطور Blob Storage ل Go. لمعرفة المزيد، راجع القائمة الكاملة لمقالات دليل المطور في إنشاء تطبيق Go.