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

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

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

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

  • تفترض هذه المقالة أن لديك بالفعل مشروعا تم إعداده للعمل مع مكتبة عميل Azure Blob Storage ل Python. للتعرف على إعداد مشروعك، بما في ذلك تثبيت الحزمة وإضافة import عبارات وإنشاء كائن عميل معتمد، راجع بدء استخدام Azure Blob Storage وPython.
  • يجب أن يكون لآلية التخويل أذونات لإنشاء حاوية كائن ثنائي كبير الحجم. لمعرفة المزيد، راجع إرشادات التخويل لعملية REST API التالية:

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

يجب أن يكون اسم الحاوية اسم 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 التالية:

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

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