حذف كائن ثنائي كبير الحجم واستعادته باستخدام Go
توضح هذه المقالة كيفية حذف الكائنات الثنائية كبيرة الحجم باستخدام وحدة عميل 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 أو أعلى. لمعرفة المزيد، راجع إرشادات التخويل لحذف Blob (REST API) و Undelete Blob (REST API).
حذف كائن ثنائي كبير الحجم
إشعار
عند تمكين الحذف المبدئي للكائن الثنائي كبير الحجم لحساب تخزين، لا يمكنك إجراء حذف دائم باستخدام أساليب مكتبة العميل. باستخدام الأساليب الواردة في هذه المقالة، يظل الكائن الثنائي كبير الحجم المحذوف مبدئيا أو إصدار الكائن الثنائي كبير الحجم أو اللقطة متوفرا حتى تنتهي فترة الاستبقاء، وفي ذلك الوقت يتم حذفه نهائيا. لمعرفة المزيد حول عملية REST API الأساسية، راجع حذف Blob (REST API).
لحذف كائن ثنائي كبير الحجم، قم باستدعاء الأسلوب التالي:
يحذف المثال التالي كائن ثنائي كبير الحجم:
func deleteBlob(client *azblob.Client, containerName string, blobName string) {
// Delete the blob
_, err := client.DeleteBlob(context.TODO(), containerName, blobName, nil)
handleError(err)
}
إذا كان للكائن الثنائي كبير الحجم أي لقطات مقترنة، يجب حذف جميع اللقطات الخاصة به لحذف الكائن الثنائي كبير الحجم. يحذف المثال التالي كائن ثنائي كبير الحجم ولقطاته:
func deleteBlobWithSnapshots(client *azblob.Client, containerName string, blobName string) {
// Delete the blob and its snapshots
_, err := client.DeleteBlob(context.TODO(), containerName, blobName, &blob.DeleteOptions{
DeleteSnapshots: to.Ptr(blob.DeleteSnapshotsOptionTypeInclude),
})
handleError(err)
}
لحذف اللقطات فقط وليس الكائن الثنائي كبير الحجم نفسه، يمكنك تمرير القيمة DeleteSnapshotsOptionTypeOnly
إلى المعلمة DeleteSnapshots
.
استعادة كائن ثنائي محذوف
يعمل الحذف المبدئي للكائنات الثنائية كبيرة الحجم على حماية الكائن الفردي وإصداراته ولقطاته وبيانات تعريفه من الحذف العرضي أو عمليات الاستبدال، عن طريق الاحتفاظ بالبيانات المحذوفة في النظام لفترة زمنية محددة. خلال فترة الاستبقاء، يمكنك استعادة الكائن الثنائي كبير الحجم إلى حالته عند الحذف. بعد انتهاء فترة الاستبقاء، يتم حذف الكائن الثنائي كبير الحجم نهائيا. لمزيد من المعلومات حول الحذف المبدئي للكائن الثنائي كبير الحجم، راجع الحذف المبدئي للكائنات الثنائية كبيرة الحجم.
يمكنك استخدام مكتبات عملاء Azure Storage لاستعادة كائن ثنائي كبير الحجم أو لقطة محذوفة.
تعتمد كيفية استعادة كائن ثنائي كبير الحجم محذوف مبدئيا على ما إذا كان حساب التخزين الخاص بك قد تم تمكين إصدار الكائن الثنائي كبير الحجم أم لا. لمزيد من المعلوماَت حول تعيين إصدار النقاط، راجع تعيين إصدار Blob. راجع أحد الأقسام التالية، استنادا إلى السيناريو الخاص بك:
استعادة الكائنات الثنائية كبيرة الحجم المحذوفة مبدئيًا عند تعطيل تعيين الإصدار
لاستعادة الكائنات الثنائية كبيرة الحجم المحذوفة عند تعطيل تعيين الإصدار، قم باستدعاء الأسلوب التالي:
يستعيد هذا الأسلوب المحتوى وبيانات التعريف للكائن الثنائي كبير الحجم المحذوف مبدئيا وأي لقطات محذوفة مبدئيا مقترنة. استدعاء هذا الأسلوب لكائن ثنائي كبير الحجم لم يتم حذفه ليس له أي تأثير.
func restoreDeletedBlob(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Restore the deleted blob
_, err := blobClient.Undelete(context.TODO(), &blob.UndeleteOptions{})
handleError(err)
}
استعادة الكائنات المحذوفة مبدئيا عند تمكين تعيين الإصدار
إذا تم تكوين حساب تخزين لتمكين تعيين إصدار كائن ثنائي كبير الحجم، يؤدي حذف كائن ثنائي كبير الحجم إلى أن يصبح الإصدار الحالي من الكائن الثنائي كبير الحجم هو الإصدار السابق. لاستعادة كائن ثنائي كبير الحجم محذوف مبدئيًا عند تمكين تعيين الإصدار، انسخ إصدارًا سابقًا فوق الكائن الثنائي كبير الحجم الأساسي. يمكنك استخدام الأسلوب التالي:
يعرف مثال التعليمات البرمجية التالي إصدارا من كائن ثنائي كبير الحجم محذوف، ويستعيد هذا الإصدار عن طريق نسخه إلى الكائن الثنائي كبير الحجم الأساسي:
func restoreDeletedBlobVersion(client *azblob.Client, containerName string, blobName string, versionID string) {
// Reference the blob as a client object
baseBlobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
blobVersionClient, err := baseBlobClient.WithVersionID(versionID)
handleError(err)
// Restore the blob version by copying it to the base blob
_, err = baseBlobClient.StartCopyFromURL(context.TODO(), blobVersionClient.URL(), nil)
handleError(err)
}
إشعار
تهدف نماذج التعليمات البرمجية في هذا الدليل إلى مساعدتك في البدء في Azure Blob Storage وGo. يجب تعديل معالجة Context
الأخطاء والقيم لتلبية احتياجات التطبيق الخاص بك.
الموارد
لمعرفة المزيد حول كيفية حذف الكائنات الثنائية كبيرة الحجم واستعادة الكائنات الثنائية كبيرة الحجم المحذوفة باستخدام وحدة عميل Azure Blob Storage ل Go، راجع الموارد التالية.
نماذج التعليمات البرمجية
- عرض نماذج التعليمات البرمجية من هذه المقالة (GitHub)
عمليات واجهة برمجة تطبيقات REST
يحتوي Azure SDK for Go على مكتبات تستند إلى واجهة برمجة تطبيقات AZURE REST، مما يسمح لك بالتفاعل مع عمليات واجهة برمجة تطبيقات REST من خلال نماذج Go المألوفة. تستخدم أساليب مكتبة العميل لحذف الكائنات الثنائية كبيرة الحجم واستعادة الكائنات الثنائية كبيرة الحجم المحذوفة عمليات واجهة برمجة تطبيقات REST التالية:
- حذف كائن ثنائي كبير الحجم (واجهة برمجة تطبيقات REST)
- إلغاء حذف كائن ثنائي كبير الحجم (واجهة برمجة تطبيقات REST)
موارد وحدة العميل
(راجع أيضًا )
المحتوى ذو الصلة
- هذه المقالة هي جزء من دليل مطور Blob Storage ل Go. لمعرفة المزيد، راجع القائمة الكاملة لمقالات دليل المطور في إنشاء تطبيق Go.