مشاركة عبر


إنشاء حاوية كائن ثنائي كبير الحجم باستخدام Python

يتم تنظيم الكائنات الثنائية في تخزين Azure ضمن حاويات. قبل أن تتمكن من تحميل كائن ثنائي كبير الحجم، عليك أولاً إنشاء حاوية. توضح هذه المقالة كيفية إنشاء حاويات باستخدام مكتبة عميل Azure Storage ل Python.

للتعرف على إنشاء حاويات كائن ثنائي كبير الحجم باستخدام واجهات برمجة التطبيقات غير المتزامنة، راجع إنشاء حاوية بشكل غير متزامن.

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

إعداد بيئتك

إذا لم يكن لديك مشروع موجود، يوضح لك هذا القسم كيفية إعداد مشروع للعمل مع مكتبة عميل Azure Blob Storage ل Python. لمزيد من التفاصيل، راجع بدء استخدام Azure Blob Storage وPython.

لاستخدام أمثلة التعليمات البرمجية في هذه المقالة، اتبع هذه الخطوات لإعداد مشروعك.

تثبيت الحزم

قم بتثبيت الحزم التالية باستخدام pip install:

pip install azure-storage-blob azure-identity

إضافة عبارات الاستيراد

أضف عبارات import التالية:

from azure.core.exceptions import ResourceExistsError
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

التصريح

يجب أن يكون لآلية التخويل الأذونات اللازمة لإنشاء حاوية. للحصول على تخويل باستخدام معرف Microsoft Entra (مستحسن)، تحتاج إلى دور Azure RBAC المضمن في Storage Blob Data Contributor أو أعلى. لمعرفة المزيد، راجع إرشادات التخويل لإنشاء حاوية (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 العنصر. لمعرفة المزيد حول إنشاء كائنات العميل وإدارتها، راجع إنشاء كائنات العميل التي تتفاعل مع موارد البيانات وإدارتها.

حول تسمية الحاوية

يجب أن يكون اسم الحاوية اسم DNS صالحاً، لأنه يشكل جزءاً من عنوان URI الفريد المستخدم لمعالجة الحاوية أو كائناتها الثنائية كبيرة الحجم. اتبع هذه القواعد عند تسمية حاوية:

  • يمكن اختيار أسماء الحاويات بحيث يتراوح طولها بين 3 أحرف و63 حرفاً.
  • يجب أن تبدأ أسماء الحاويات بحرف أو رقم، ويمكن أن تحتوي فقط على أحرف صغيرة و أرقام وحرف الشرطة (-).
  • لا يسمح بأحرف الشرطة المتتالية في أسماء الحاويات.

يتم تنسيق URI لمورد حاوية كما يلي:

https://my-account-name.blob.core.windows.net/my-container-name

إنشاء حاوية

لإنشاء حاوية، قم باستدعاء الأسلوب التالي من فئة BlobServiceClient :

يمكنك أيضا إنشاء حاوية باستخدام الأسلوب التالي من فئة ContainerClient :

يتم إنشاء الحاويات مباشرةً أسفل حساب التخزين. ليس من الممكن وضع حاوية واحدة أسفل أخرى. يُسمح باستثناء إذا وُجدت بالفعل حاوية تحمل الاسم نفسه.

ينشئ المثال التالي حاوية من كائن BlobServiceClient :

def create_blob_container(self, blob_service_client: BlobServiceClient, container_name):
    try:
        container_client = blob_service_client.create_container(name=container_name)
    except ResourceExistsError:
        print('A container with this name already exists')

إنشاء حاوية الجذر

تعمل حاوية الجذر كحاوية افتراضية لحساب التخزين الخاص بك. قد يحتوي كل حساب تخزين على حاوية جذر واحدة، والتي يجب تسميتها «$root». يجب إنشاء حاوية الجذر أو حذفها بشكل صريح.

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

https://accountname.blob.core.windows.net/default.html

ينشئ المثال التالي كائنا جديدا ContainerClient باسم الحاوية $root، ثم ينشئ الحاوية إذا لم تكن موجودة بالفعل في حساب التخزين:

def create_blob_root_container(self, blob_service_client: BlobServiceClient):
    container_client = blob_service_client.get_container_client(container="$root")

    # Create the root container if it doesn't already exist
    if not container_client.exists():
        container_client.create_container()

قم بإنشاء حاوية بشكل غير متزامن

تدعم مكتبة عميل Azure Blob Storage ل Python إنشاء حاوية كائن ثنائي كبير الحجم بشكل غير متزامن. لمعرفة المزيد حول متطلبات إعداد المشروع، راجع البرمجة غير المتزامنة.

اتبع هذه الخطوات لإنشاء حاوية باستخدام واجهات برمجة التطبيقات غير المتزامنة:

  1. إضافة عبارات الاستيراد التالية:

    import asyncio
    
    from azure.identity.aio import DefaultAzureCredential
    from azure.storage.blob.aio import BlobServiceClient
    from azure.core.exceptions import ResourceExistsError
    
  2. أضف التعليمات البرمجية لتشغيل البرنامج باستخدام asyncio.run. تقوم هذه الدالة بتشغيل coroutine الذي تم تمريره، main() في مثالنا، وتدير asyncio حلقة الحدث. يتم الإعلان عن Coroutines باستخدام بناء الجملة غير المتزامن/انتظار. في هذا المثال، main() يقوم coroutine أولا بإنشاء المستوى BlobServiceClient الأعلى باستخدام async with، ثم يستدعي الأسلوب الذي ينشئ الحاوية. لاحظ أن عميل المستوى الأعلى فقط يحتاج إلى استخدام async with، حيث يشارك العملاء الآخرون الذين تم إنشاؤهم منه نفس تجمع الاتصال.

    async def main():
        sample = ContainerSamples()
    
        # 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.create_blob_container(blob_service_client, "sample-container")
    
    if __name__ == '__main__':
        asyncio.run(main())
    
  3. إضافة تعليمة برمجية لإنشاء حاوية. التعليمات البرمجية هي نفس المثال المتزامن، باستثناء أن الأسلوب يتم تعريفه باستخدام async الكلمة الأساسية ويتم await استخدام الكلمة الأساسية عند استدعاء create_container الأسلوب .

    async def create_blob_container(self, blob_service_client: BlobServiceClient, container_name):
        try:
            container_client = await blob_service_client.create_container(name=container_name)
        except ResourceExistsError:
            print('A container with this name already exists')
    

مع هذا الإعداد الأساسي في مكانه، يمكنك تنفيذ أمثلة أخرى في هذه المقالة ك coroutines باستخدام بناء الجملة غير المتزامن/انتظار.

الموارد

لمعرفة المزيد حول إنشاء حاوية باستخدام مكتبة عميل Azure Blob Storage ل Python، راجع الموارد التالية.

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

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

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

موارد مكتبة العميل

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