الاستعلام عن نقطة نهاية Blob Storage باستخدام مكتبة إدارة تخزين Azure

تشكل نقطة نهاية Blob Storage العنوان الأساسي لكافة الكائنات داخل حساب تخزين. عند إنشاء حساب تخزين، يمكنك تحديد نوع نقطة النهاية التي تريد استخدامها. يدعم Blob Storage نوعين من نقاط النهاية:

  • تتضمن نقطة النهاية القياسية اسم حساب التخزين الفريد مع اسم مجال ثابت. تنسيق نقطة النهاية القياسية هو https://<storage-account>.blob.core.windows.net.
  • تحدد نقطة نهاية منطقة Azure DNS (معاينة) منطقة Azure DNS ديناميكيا وتعينها إلى حساب التخزين عند إنشائها. تنسيق نقطة نهاية منطقة DNS Azure هو https://<storage-account>.z[00-99].blob.storage.azure.net.

عندما ينشئ التطبيق الخاص بك كائن عميل خدمة يتصل بموارد بيانات Blob Storage، يمكنك تمرير URI يشير إلى نقطة النهاية إلى منشئ عميل الخدمة. يمكنك إنشاء سلسلة URI يدويا، أو يمكنك الاستعلام عن نقطة نهاية الخدمة في وقت التشغيل باستخدام مكتبة إدارة تخزين Azure.

هام

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

يمكن تغيير CNAMEs المقترنة بنقطة نهاية حساب تخزين دون إشعار. يجب ألا يعتمد التطبيق الخاص بك على عدد سجلات CNAME أو المجالات الفرعية المقترنة بسجلات CNAME هذه.

بالإضافة إلى ذلك، يوصى بتكريم وقت البقاء (TTL) لسجل DNS وتجنب تجاوزه. قد يؤدي تجاوز DNS TTL إلى سلوك غير متوقع.

لمزيد من المعلومات، راجع سجلات CNAME والمجالات الفرعية وعناوين IP.

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

في هذه المقالة، ستتعلم كيفية الاستعلام عن نقطة نهاية Blob Storage باستخدام مكتبة إدارة تخزين Azure. ثم يمكنك استخدام نقطة النهاية هذه لإنشاء كائن BlobServiceClient للاتصال بموارد بيانات Blob Storage.

إعداد مشروعك

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

تثبيت الحزم

تثبيت الحزم للعمل مع المكتبات المستخدمة في هذا المثال.

قم بتثبيت الحزم التالية باستخدام dotnet add package:

dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager.Storage
dotnet add package Azure.Storage.Blobs

إعداد تعليمة برمجية للتطبيق

أضف التوجيهات أو import الضرورية using إلى التعليمات البرمجية. لاحظ أن أمثلة التعليمات البرمجية قد تقسم الوظائف بين الملفات، ولكن في هذا القسم يتم سرد جميع التوجيهات معا.

أضِف توجيهات using التالية:

using Azure.Core;
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.ResourceManager;
using Azure.ResourceManager.Resources;
using Azure.ResourceManager.Storage;

معلومات مكتبة العميل:

  • Azure.Identity: يوفر دعم مصادقة الرمز المميز ل Microsoft Entra عبر Azure SDK، وهو مطلوب للاتصالات بدون كلمة مرور بخدمات Azure.
  • Azure.ResourceManager.Storage: يدعم إدارة موارد Azure Storage، بما في ذلك مجموعات الموارد وحسابات التخزين.
  • Azure.Storage.Blobs: يحتوي على الفئات الأساسية التي يمكنك استخدامها للعمل مع موارد بيانات Blob Storage.

تسجيل موفر موارد التخزين مع اشتراك

يجب تسجيل موفر الموارد مع اشتراك Azure الخاص بك قبل أن تتمكن من العمل معه. يجب تنفيذ هذه الخطوة مرة واحدة فقط لكل اشتراك، ولا تنطبق إلا إذا لم يكن موفر الموارد Microsoft.Storage مسجلا حاليا في اشتراكك.

يمكنك تسجيل موفر موارد التخزين، أو التحقق من حالة التسجيل، باستخدام مدخل Azure أو Azure CLI أو Azure PowerShell.

يمكنك أيضا استخدام مكتبات إدارة Azure للتحقق من حالة التسجيل وتسجيل موفر موارد التخزين، كما هو موضح في الأمثلة التالية:

public static async Task RegisterSRPInSubscription(SubscriptionResource subscription)
{
    ResourceProviderResource resourceProvider = 
        await subscription.GetResourceProviderAsync("Microsoft.Storage");

    // Check the registration state of the resource provider and register, if needed
    if (resourceProvider.Data.RegistrationState == "NotRegistered")
        resourceProvider.Register();
}

إشعار

لتنفيذ عملية التسجيل، ستحتاج إلى أذونات لإجراء Azure RBAC التالي: Microsoft.Storage/register/action. يتم تضمين هذا الإذن في أدوار المساهم والمالك.

الاستعلام عن نقطة نهاية Blob Storage

لاسترداد نقطة نهاية Blob Storage لحساب تخزين معين، نحتاج إلى الحصول على خصائص حساب التخزين عن طريق استدعاء عملية Get Properties . تستخدم نماذج التعليمات البرمجية التالية كلا من مكتبات الوصول إلى البيانات والإدارة للحصول على نقطة نهاية Blob Storage لحساب تخزين محدد:

للحصول على خصائص حساب تخزين محدد، استخدم الأسلوب التالي من كائن StorageAccountCollection :

يقوم هذا الأسلوب بإرجاع كائن StorageAccountResource ، والذي يمثل حساب التخزين.

public static async Task<Uri> GetBlobServiceEndpoint(
    string storageAccountName,
    TokenCredential credential)
{
    // TODO: replace with your subscription ID and resource group name
    // You can locate your subscription ID on the Subscriptions blade
    // of the Azure portal (https://portal.azure.com)
    const string subscriptionId = "<subscription-id>";
    const string rgName = "<resource-group-name>";

    ArmClient armClient = new(credential);

    // Create a resource identifier, then get the subscription resource
    ResourceIdentifier resourceIdentifier = new($"/subscriptions/{subscriptionId}");
    SubscriptionResource subscription = armClient.GetSubscriptionResource(resourceIdentifier);

    // Get a resource group
    ResourceGroupResource resourceGroup = await subscription.GetResourceGroupAsync(rgName);

    // Get a collection of storage account resources
    StorageAccountCollection accountCollection = resourceGroup.GetStorageAccounts();

    // Get the properties for the specified storage account
    StorageAccountResource storageAccount = await accountCollection.GetAsync(storageAccountName);

    // Return the primary endpoint for the blob service
    return storageAccount.Data.PrimaryEndpoints.BlobUri;
}

إنشاء كائن عميل باستخدام نقطة النهاية

بمجرد أن يكون لديك نقطة نهاية Blob Storage لحساب تخزين، يمكنك إنشاء مثيل لكائن عميل للعمل مع موارد البيانات. ينشئ نموذج التعليمات البرمجية التالي كائنا BlobServiceClient باستخدام نقطة النهاية التي استردناها في المثال السابق:

// Create an instance of DefaultAzureCredential for authorization
TokenCredential credential = new DefaultAzureCredential();

// TODO: replace with your storage account name
string storageAccountName = "<storage-account-name>";

// Call out to our function that retrieves the blob service endpoint for the given storage account
Uri blobURI = await AccountProperties.GetBlobServiceEndpoint(storageAccountName, credential);
Console.WriteLine($"URI: {blobURI}");

// Now that we know the endpoint, create the client object
BlobServiceClient blobServiceClient = new(blobURI, credential);

// Do something with the storage account or its resources ...

الخطوات التالية

عرض نماذج التعليمات البرمجية الكاملة (GitHub):

لمعرفة المزيد حول إنشاء كائنات العميل، راجع إنشاء كائنات العميل التي تتفاعل مع موارد البيانات وإدارتها.