إدارة خصائص الكائن الثنائي كبير الحجم وبيانات التعريف باستخدام Python
بالإضافة إلى البيانات التي تحتوي عليها، تدعم الكائنات ثنائية الحجم خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم. توضح هذه المقالة كيفية إدارة خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم باستخدام مكتبة عميل Azure Storage ل Python.
للتعرف على إدارة الخصائص وبيانات التعريف باستخدام واجهات برمجة التطبيقات غير المتزامنة، راجع تعيين بيانات تعريف الكائن الثنائي كبير الحجم بشكل غير متزامن.
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاني
- حساب تخزين Azure - إنشاء حساب تخزين
- Python 3.8+
إعداد بيئتك
إذا لم يكن لديك مشروع موجود، يوضح لك هذا القسم كيفية إعداد مشروع للعمل مع مكتبة عميل Azure Blob Storage ل Python. لمزيد من التفاصيل، راجع بدء استخدام Azure Blob Storage وPython.
لاستخدام أمثلة التعليمات البرمجية في هذه المقالة، اتبع هذه الخطوات لإعداد مشروعك.
تثبيت الحزم
قم بتثبيت الحزم التالية باستخدام pip install
:
pip install azure-storage-blob azure-identity
إضافة عبارات الاستيراد
أضف عبارات import
التالية:
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient, ContentSettings
التصريح
يجب أن يكون لآلية التخويل الأذونات اللازمة للعمل مع خصائص الحاوية أو بيانات التعريف. للحصول على تخويل باستخدام معرف 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 Storage، قم بإنشاء مثيل BlobServiceClient. يوضح المثال التالي كيفية إنشاء كائن عميل باستخدام DefaultAzureCredential
للتخويل:
# TODO: Replace <storage-account-name> with your actual storage account name
account_url = "https://<storage-account-name>.blob.core.windows.net"
credential = DefaultAzureCredential()
# Create the BlobServiceClient object
blob_service_client = BlobServiceClient(account_url, credential=credential)
يمكنك أيضا إنشاء كائنات العميل لحاويات أو كائنات ثنائية كبيرة الحجم معينة، إما مباشرة أو من BlobServiceClient
العنصر. لمعرفة المزيد حول إنشاء كائنات العميل وإدارتها، راجع إنشاء كائنات العميل التي تتفاعل مع موارد البيانات وإدارتها.
نبذة عن الخصائص وبيانات التعريف
خصائص النظام: توجد خصائص النظام على كل مورد تخزين Blob. يمكن قراءة بعضها أو تعيينها، بينما البعض الآخر للقراءة فقط. تحت الأغلفة، تتوافق بعض خصائص النظام مع بعض عناوين HTTP القياسية المعينة. تحتفظ مكتبة عميل Azure Storage ل Python بهذه الخصائص نيابة عنك.
بيانات التعريف المحددة مسبقًا من المستخدم: تتكون بيانات التعريف المحددة مسبقًا من المستخدم من زوج واحد أو أكثر من أزواج قيمة الاسم التي تحددها لمورد تخزين Blob. يمكنك استخدام بيانات التعريف لتخزين قيم إضافية مع المورد. قيم بيانات التعريف هي لأغراضك فقط، ولا تؤثر على كيفية تصرف المورد.
أزواج اسم/قيمة بيانات التعريف هي رؤوس HTTP صالحة ويجب أن تلتزم بجميع القيود التي تحكم رؤوس HTTP. لمزيد من المعلومات حول متطلبات تسمية بيانات التعريف، راجع أسماء بيانات التعريف.
إشعار
أيضاً توفر علامات فهرسة الكائنات الثنائية كبيرة الحجم القدرة على تخزين سمات المفاتيح/القيم المُعرّفة من قِبل المستخدم جنباً إلى جنب مع مورد مساحة تخزين Azure Blob. بينما تتشابه علامات فهرسة الكائنات الثنائية كبيرة الحجم مع بيانات التعريف، فهي تختلف في أنه تتم فهرستها تلقائياً وتصبح قابلة للبحث بواسطة الخدمة الأصلية للكائنات الثنائية كبيرة الحجم. لا يمكن فهرسة بيانات التعريف والاستعلام عنها إلا إذا كنت تستخدم خدمة منفصلة، مثل Azure Search.
للتعرّف على المزيد حول هذه الميزة، راجع إدارة البيانات والعثور عليها على مساحة تخزين Azure Blob باستخدام فهرس كائنات ثنائية كبيرة الحجم (معاينة).
تعيين الخصائص واستردادها
لتعيين خصائص على كائن ثنائي كبير الحجم، استخدم الأسلوب التالي:
يتم مسح أي خصائص لم يتم تعيينها صراحة. للاحتفاظ بأي خصائص موجودة، يمكنك أولا استرداد خصائص الكائن الثنائي كبير الحجم، ثم استخدامها لتعبئة العناوين التي لم يتم تحديثها.
يعين مثال التعليمات البرمجية content_type
التالي خصائص النظام و content_language
على كائن ثنائي كبير الحجم، مع الحفاظ على الخصائص الموجودة:
def set_properties(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Get the existing blob properties
properties = blob_client.get_blob_properties()
# Set the content_type and content_language headers, and populate the remaining headers from the existing properties
blob_headers = ContentSettings(content_type="text/plain",
content_encoding=properties.content_settings.content_encoding,
content_language="en-US",
content_disposition=properties.content_settings.content_disposition,
cache_control=properties.content_settings.cache_control,
content_md5=properties.content_settings.content_md5)
blob_client.set_http_headers(blob_headers)
لاسترداد الخصائص على كائن ثنائي كبير الحجم، استخدم الأسلوب التالي:
يحصل مثال التعليمات البرمجية التالي على خصائص نظام كائن ثنائي كبير الحجم ويعرض بعض القيم:
def get_properties(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
properties = blob_client.get_blob_properties()
print(f"Blob type: {properties.blob_type}")
print(f"Blob size: {properties.size}")
print(f"Content type: {properties.content_settings.content_type}")
print(f"Content language: {properties.content_settings.content_language}")
تعيين بيانات التعريف واستردادها
يمكنك تحديد بيانات التعريف كزوج واحد أو أكثر من أزواج قيمة الاسم على مورد النقطة أو الحاوية. لتعيين بيانات التعريف، أرسل قاموسا يحتوي على أزواج قيمة الاسم باستخدام الأسلوب التالي:
يعين مثال التعليمات البرمجية التالي بيانات التعريف على كائن ثنائي كبير الحجم:
def set_metadata(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Retrieve existing metadata, if desired
blob_metadata = blob_client.get_blob_properties().metadata
more_blob_metadata = {'docType': 'text', 'docCategory': 'reference'}
blob_metadata.update(more_blob_metadata)
# Set metadata on the blob
blob_client.set_blob_metadata(metadata=blob_metadata)
لاسترداد بيانات التعريف، قم باستدعاء أسلوب get_blob_properties على الكائن الثنائي كبير الحجم لملء مجموعة بيانات التعريف، ثم اقرأ القيم، كما هو موضح في المثال أدناه. يسترد get_blob_properties
الأسلوب خصائص الكائن الثنائي كبير الحجم وبيانات التعريف عن طريق استدعاء كل من عملية Get Blob Properties والعملية Get Blob Metadata .
يقرأ مثال التعليمات البرمجية التالي بيانات التعريف على كائن ثنائي كبير الحجم ويطبع كل زوج مفتاح/قيمة:
def get_metadata(self, blob_service_client: BlobServiceClient, container_name):
blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt")
# Retrieve existing metadata, if desired
blob_metadata = blob_client.get_blob_properties().metadata
for k, v in blob_metadata.items():
print(k, v)
تعيين بيانات تعريف الكائن الثنائي كبير الحجم بشكل غير متزامن
تدعم مكتبة عميل Azure Blob Storage ل Python إدارة خصائص الكائن الثنائي كبير الحجم وبيانات التعريف بشكل غير متزامن. لمعرفة المزيد حول متطلبات إعداد المشروع، راجع البرمجة غير المتزامنة.
اتبع هذه الخطوات لتعيين بيانات تعريف الكائن الثنائي كبير الحجم باستخدام واجهات برمجة التطبيقات غير المتزامنة:
إضافة عبارات الاستيراد التالية:
import asyncio from azure.identity.aio import DefaultAzureCredential from azure.storage.blob.aio import BlobServiceClient
أضف التعليمات البرمجية لتشغيل البرنامج باستخدام
asyncio.run
. تقوم هذه الدالة بتشغيل coroutine الذي تم تمريره،main()
في مثالنا، وتديرasyncio
حلقة الحدث. يتم الإعلان عن Coroutines باستخدام بناء الجملة غير المتزامن/انتظار. في هذا المثال،main()
يقوم coroutine أولا بإنشاء المستوىBlobServiceClient
الأعلى باستخدامasync with
، ثم يستدعي الأسلوب الذي يعين بيانات تعريف الكائن الثنائي كبير الحجم. لاحظ أن عميل المستوى الأعلى فقط يحتاج إلى استخدامasync with
، حيث يشارك العملاء الآخرون الذين تم إنشاؤهم منه نفس تجمع الاتصال.async def main(): sample = BlobSamples() # TODO: Replace <storage-account-name> with your actual storage account name account_url = "https://<storage-account-name>.blob.core.windows.net" credential = DefaultAzureCredential() async with BlobServiceClient(account_url, credential=credential) as blob_service_client: await sample.set_metadata(blob_service_client, "sample-container") if __name__ == '__main__': asyncio.run(main())
إضافة تعليمة برمجية لتعيين بيانات تعريف الكائن الثنائي كبير الحجم. التعليمات البرمجية هي نفس المثال المتزامن، باستثناء أن الأسلوب يتم تعريفه باستخدام
async
الكلمة الأساسية ويتمawait
استخدام الكلمة الأساسية عند استدعاء الأسلوبينget_blob_properties
وset_blob_metadata
.async def set_metadata(self, blob_service_client: BlobServiceClient, container_name): blob_client = blob_service_client.get_blob_client(container=container_name, blob="sample-blob.txt") # Retrieve existing metadata, if desired properties = await blob_client.get_blob_properties() blob_metadata = properties.metadata more_blob_metadata = {'docType': 'text', 'docCategory': 'reference'} blob_metadata.update(more_blob_metadata) # Set metadata on the blob await blob_client.set_blob_metadata(metadata=blob_metadata)
مع هذا الإعداد الأساسي في مكانه، يمكنك تنفيذ أمثلة أخرى في هذه المقالة ك coroutines باستخدام بناء الجملة غير المتزامن/انتظار.
الموارد
لمعرفة المزيد حول كيفية إدارة خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم باستخدام مكتبة عميل Azure Blob Storage ل Python، راجع الموارد التالية.
نماذج التعليمات البرمجية
- عرض نماذج التعليمات البرمجية المتزامنة أو غير المتزامنة من هذه المقالة (GitHub)
عمليات واجهة برمجة تطبيقات REST
يحتوي Azure SDK ل Python على مكتبات تستند إلى واجهة برمجة تطبيقات AZURE REST، مما يسمح لك بالتفاعل مع عمليات REST API من خلال نماذج Python المألوفة. تستخدم أساليب مكتبة العميل لإدارة خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم عمليات REST API التالية:
- تعيين خصائص Blob (REST API)
- الحصول على خصائص Blob (REST API)
- تعيين بيانات تعريف Blob (REST API)
- الحصول على بيانات تعريف Blob (REST API)
موارد مكتبة العميل
المحتوى ذو الصلة
- هذه المقالة هي جزء من دليل مطور Blob Storage ل Python. لمعرفة المزيد، راجع القائمة الكاملة لمقالات دليل المطور في إنشاء تطبيق Python.