إدارة خصائص الكائن الثنائي كبير الحجم وبيانات التعريف باستخدام Go

بالإضافة إلى البيانات التي تحتوي عليها، تدعم الكائنات ثنائية الحجم خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم. توضح هذه المقالة كيفية إدارة خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم باستخدام وحدة عميل Azure Storage ل Go.

المتطلبات الأساسية

إعداد بيئتك

إذا لم يكن لديك مشروع موجود، يوضح هذا القسم كيفية إعداد مشروع للعمل مع وحدة عميل 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 Reader أو أعلى لعمليات الحصول ، وStorage Blob Data Contributor أو أعلى لعمليات المجموعة . لمعرفة المزيد، راجع إرشادات التخويل لتعيين خصائص Blob (REST API) أو Get Blob Properties (REST API) أو Set Blob Metadata (REST API) أو Get Blob Metadata (REST API).

نبذة عن الخصائص وبيانات التعريف

  • خصائص النظام: توجد خصائص النظام على كل مورد تخزين Blob. يمكن قراءة بعضها أو تعيينها، بينما البعض الآخر للقراءة فقط. تحت الأغلفة، تتوافق بعض خصائص النظام مع بعض عناوين HTTP القياسية المعينة. تحتفظ مكتبة عميل Azure Storage ل Go بهذه الخصائص نيابة عنك.

  • بيانات التعريف المحددة مسبقًا من المستخدم: تتكون بيانات التعريف المحددة مسبقًا من المستخدم من زوج واحد أو أكثر من أزواج قيمة الاسم التي تحددها لمورد تخزين Blob. يمكنك استخدام بيانات التعريف لتخزين قيم إضافية مع المورد. قيم بيانات التعريف هي لأغراضك فقط، ولا تؤثر على كيفية تصرف المورد.

    أزواج اسم/قيمة بيانات التعريف هي رؤوس HTTP صالحة ويجب أن تلتزم بجميع القيود التي تحكم رؤوس HTTP. لمزيد من المعلومات حول متطلبات تسمية بيانات التعريف، راجع أسماء بيانات التعريف.

إشعار

أيضاً توفر علامات فهرسة الكائنات الثنائية كبيرة الحجم القدرة على تخزين سمات المفاتيح/القيم المُعرّفة من قِبل المستخدم جنباً إلى جنب مع مورد مساحة تخزين Azure Blob. بينما تتشابه علامات فهرسة الكائنات الثنائية كبيرة الحجم مع بيانات التعريف، فهي تختلف في أنه تتم فهرستها تلقائياً وتصبح قابلة للبحث بواسطة الخدمة الأصلية للكائنات الثنائية كبيرة الحجم. لا يمكن فهرسة بيانات التعريف والاستعلام عنها إلا إذا كنت تستخدم خدمة منفصلة، مثل Azure Search.

للتعرّف على المزيد حول هذه الميزة، راجع إدارة البيانات والعثور عليها على مساحة تخزين Azure Blob باستخدام فهرس كائنات ثنائية كبيرة الحجم (معاينة).

تعيين الخصائص واستردادها

لتعيين خصائص على كائن ثنائي كبير الحجم، قم باستدعاء الأسلوب التالي من كائن عميل كائن ثنائي كبير الحجم:

يتم مسح أي خصائص لم يتم تعيينها صراحة. للاحتفاظ بأي خصائص موجودة، يمكنك أولا استرداد خصائص الكائن الثنائي كبير الحجم، ثم استخدامها لتعبئة العناوين التي لم يتم تحديثها.

يعين مثال التعليمات البرمجية BlobContentType التالي خصائص النظام و BlobContentLanguage على كائن ثنائي كبير الحجم، مع الحفاظ على الخصائص الموجودة:

func setBlobProperties(client *azblob.Client, containerName string, blobName string) {
    // Reference the blob as a client object
    blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)

    // Get the existing blob properties
    resp, err := blobClient.GetProperties(context.TODO(), nil)
    handleError(err)

    // Set the new blob properties and include existing properties
    _, err = blobClient.SetHTTPHeaders(context.TODO(), blob.HTTPHeaders{
        BlobContentType:        to.Ptr("text/plain"),
        BlobContentLanguage:    to.Ptr("en-us"),
        BlobContentEncoding:    resp.ContentEncoding,
        BlobContentDisposition: resp.ContentDisposition,
        BlobCacheControl:       resp.CacheControl,
    }, nil)
    handleError(err)
}

لاسترداد الخصائص على كائن ثنائي كبير الحجم، قم باستدعاء الأسلوب التالي من كائن عميل كائن ثنائي كبير الحجم:

يحصل مثال التعليمات البرمجية التالي على خصائص نظام كائن ثنائي كبير الحجم ويعرض بعض القيم:

func getBlobProperties(client *azblob.Client, containerName string, blobName string) {
    // Reference the blob as a client object
    blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)

    // Get the blob properties
    resp, err := blobClient.GetProperties(context.TODO(), nil)
    handleError(err)

    // Print the blob properties
    fmt.Printf("Content type: %v\n", *resp.ContentType)
    fmt.Printf("Content language: %v\n", *resp.ContentLanguage)
}

تعيين بيانات التعريف واستردادها

يمكنك تحديد بيانات التعريف كزوج واحد أو أكثر من أزواج قيمة الاسم على مورد النقطة أو الحاوية. لتعيين بيانات التعريف، أرسل خريطة تحتوي على أزواج قيمة الاسم باستخدام الأسلوب التالي من كائن عميل كائن ثنائي كبير الحجم:

يعين مثال التعليمات البرمجية التالي بيانات التعريف على كائن ثنائي كبير الحجم:

func setBlobMetadata(client *azblob.Client, containerName string, blobName string) {
    // Reference the blob as a client object
    blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)

    // Set the blob metadata
    var metadata = make(map[string]*string)
    metadata["key1"] = to.Ptr("value1")
    metadata["key2"] = to.Ptr("value2")

    _, err := blobClient.SetMetadata(context.TODO(), metadata, nil)
    handleError(err)
}

لاسترداد بيانات التعريف، قم باستدعاء الأسلوب GetProperties من كائن عميل كائن ثنائي كبير الحجم، والوصول إلى Metadata الحقل في الاستجابة. يسترد GetProperties الأسلوب خصائص الكائن الثنائي كبير الحجم وبيانات التعريف عن طريق استدعاء كل من عملية Get Blob Properties والعملية Get Blob Metadata .

يقرأ مثال التعليمات البرمجية التالي بيانات التعريف على كائن ثنائي كبير الحجم ويطبع كل زوج مفتاح/قيمة:

func getBlobMetadata(client *azblob.Client, containerName string, blobName string) {
    // Reference the blob as a client object
    blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)

    // Get the blob properties, which includes metadata
    resp, err := blobClient.GetProperties(context.TODO(), nil)
    handleError(err)

    // Print the blob metadata
    for k, v := range resp.Metadata {
        fmt.Printf("%v: %v\n", k, *v)
    }
}

إشعار

تهدف نماذج التعليمات البرمجية في هذا الدليل إلى مساعدتك في البدء في Azure Blob Storage وGo. يجب تعديل معالجة Context الأخطاء والقيم لتلبية احتياجات التطبيق الخاص بك.

الموارد

لمعرفة المزيد حول كيفية إدارة خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم باستخدام وحدة عميل Azure Blob Storage ل Go، راجع الموارد التالية.

نماذج التعليمات البرمجية

عمليات واجهة برمجة تطبيقات REST

يحتوي Azure SDK for Go على مكتبات تستند إلى واجهة برمجة تطبيقات AZURE REST، مما يسمح لك بالتفاعل مع عمليات واجهة برمجة تطبيقات REST من خلال نماذج Go المألوفة. تستخدم أساليب مكتبة العميل لإدارة خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم عمليات REST API التالية:

موارد وحدة العميل

  • هذه المقالة هي جزء من دليل مطور Blob Storage ل Go. لمعرفة المزيد، راجع القائمة الكاملة لمقالات دليل المطور في إنشاء تطبيق Go.