إنشاء ملفات الموارد واستخدامها

غالبا ما تتطلب مهمة Azure Batch بعض أنواع البيانات لمعالجتها. ملفات الموارد هي الطريقة لتوفير هذه البيانات إلى جهاز Batch الظاهري (VM) عبر مهمة. تدعم جميع أنواع المهام ملفات الموارد: المهام، مهام بدء التشغيل، مهام الإعداد الوظيفي، مهام تحرير الوظيفة، إلخ. وتغطي هذه المقالة بعض الطرق الشائعة عن كيفية إنشاء ملفات الموارد ووضعها على جهاز ظاهري.

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

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

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

أنواع ملفات الموارد

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

عنوان URL لحاوية التخزين

استخدام عنوان URL لحاوية التخزين يعني أنه، باستخدام الأذونات الصحيحة، يمكنك الوصول إلى الملفات في أي حاوية تخزين في Azure.

في مثال C# هذا، تم تحميل الملفات بالفعل إلى حاوية Azure Storage كمخزن للنقط. للوصول إلى البيانات اللازمة لإنشاء ملف مورد، نحتاج أولاً إلى الوصول إلى حاوية التخزين. يمكن القيام بذلك بعدة طرق.

توقيع الوصول المشترك

قم بإنشاء URI لتوقيع وصول مشترك (SAS) باستخدام الأذونات الصحيحة للوصول إلى حاوية التخزين. قم بتعيين وقت انتهاء الصلاحية والأذونات لـ SAS. في هذه الحالة، لا يتم تحديد أي وقت بدء تشغيل، بحيث يصبح SAS صالحًا فورًا وتنتهي صلاحيته بعد ساعتين من إنشائه.

SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy
{
    SharedAccessExpiryTime = DateTime.UtcNow.AddHours(2),
    Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.List
};

إشعار

للوصول إلى الحاوية، يجب أن يكون لديك أذونات كل من Read و List، بحيث لا تحتاج مع الوصول إلى النقطة إلا لإذن Read.

بمجرد تكوين الأذونات، قم بإنشاء الرمز SAS المميز وتنسيق SAS URL للوصول إلى حاوية التخزين. باستخدام SAS URL منسق لحاوية التخزين، قم بإنشاء ملف مورد باستخدام FromStorageContainerUrl.

CloudBlobContainer container = blobClient.GetContainerReference(containerName);

string sasToken = container.GetSharedAccessSignature(sasConstraints);
string containerSasUrl = String.Format("{0}{1}", container.Uri, sasToken);

ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(containerSasUrl);

إذا رغبت في ذلك، فيمكنك استخدام الخاصية blobPrefix للحد من التنزيلات إلى النقط التي يبدأ اسمها ببادئة محددة:

ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(containerSasUrl, blobPrefix = yourPrefix);

الهوية المُدارة

قم بإنشاء هوية مدارة معينة من قبل المستخدم وتعيين دور Storage Blob Data Reader لها من أجل حاوية Azure Storage. بعد ذلك، قم بتعيين الهوية المدارة إلى التجمع الخاص بك بحيث يمكن للأجهزة الظاهرية الوصول إلى الهوية. وأخيرًا، يمكنك الوصول إلى الملفات الموجودة في الحاوية الخاصة بك عن طريق تحديد هوية Batch لاستخدامها.

CloudBlobContainer container = blobClient.GetContainerReference(containerName);

ResourceFile inputFile = ResourceFile.FromStorageContainerUrl(container.Uri, identityReference: new ComputeNodeIdentityReference() { ResourceId = "/subscriptions/SUB/resourceGroups/RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name" });

الوصول العام

بديل إنشاء SAS URL أو استخدام هوية مدارة هو تمكين الوصول العام والمجهول من أجل القراءة إلى حاوية والنقط الخاصة به في تخزين Azure Blob. من خلال ذلك، يمكنك منح حق الوصول للقراءة فقط إلى هذه الموارد دون مشاركة مفتاح الحساب الخاص بك، ودون الحاجة إلى توقيع وصول مشترك (SAS). يتم استخدام الوصول العام عادةً للسيناريوهات حيث تريد توفر نقطة معين على الدوام للوصول للقراءة المجهول. إذا كان هذا السيناريو يناسب الحل الخاص بك، فراجع تكوين وصول القراءة العام المجهول للحاويات والنقط لمعرفة المزيد حول إدارة الوصول إلى بيانات النقط.

اسم حاوية التخزين (التخزين التلقائي)

بدلًا من تكوين وإنشاء SAS URL، يمكنك استخدام اسم حاوية Azure Storage للوصول إلى بيانات النقط. يجب أن تكون حاوية التخزين التي تستخدمها في حساب Azure Storage المرتبط بحساب Batch، ويشار إليها أحيانًا بحساب التخزين التلقائي. استخدام حاوية التخزين التلقائي يسمح لك بتجاوز تكوين وإنشاء SAS URL للوصول إلى حاوية تخزين. بدلاً من ذلك، يمكنك توفير اسم حاوية التخزين في حساب التخزين المرتبط.

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

يستخدم المثال التالي AutoStorageContainer لإنشاء الملف من البيانات في حساب التخزين التلقائي.

ResourceFile inputFile = ResourceFile.FromAutoStorageContainer(containerName);

كما هو الحال مع عنوان URL لحاوية التخزين، يمكنك استخدام خاصية blobPrefix لتحديد النقط التي سيتم تنزيلها:

ResourceFile inputFile = ResourceFile.FromAutoStorageContainer(containerName, blobPrefix = yourPrefix);

ملف مورد مفرد من نقطة نهاية الويب

لإنشاء ملف مورد مفرد، يمكنك تحديد عنوان HTTP URL صالح يحتوي على بيانات الإدخال. يتم توفير عنوان URL إلى Batch API، ثم يتم استخدام البيانات لإنشاء ملف مورد. يمكن استخدام هذه الطريقة سواء كانت البيانات لإنشاء ملف المورد في Azure Storage، أو في أي موقع ويب آخر، مثل نقطة نهاية GitHub.

يستخدم المثال التالي FromUrl لاسترداد الملف من سلسلة تحتوي على عنوان URL صالح، ثم ينشئ ملف مورد لاستخدامه من قبل المهمة الخاصة بك. لا تلزم أي بيانات اعتماد لهذا السيناريو. (بيانات الاعتماد مطلوبة إذا كنت تستخدم تخزين نقط، ما لم يتم تمكين وصول القراءة العام على حاوية النقط.)

ResourceFile inputFile = ResourceFile.FromUrl(yourURL, filePath);

يمكنك أيضًا استخدام سلسلة تعرفها على أنها عنوان URL (أو مجموعة من السلاسل التي تنشئ، معًا، عنوان URL كامل للملف).

ResourceFile inputFile = ResourceFile.FromUrl(yourDomain + yourFile, filePath);

إذا كان الملف في Azure Storage، فيمكنك استخدام هوية مدارة بدلاً من إنشاء توقيع وصول مشترك لملف المورد.

ResourceFile inputFile = ResourceFile.FromUrl(yourURLFromAzureStorage, 
    identityReference: new ComputeNodeIdentityReference() { ResourceId = "/subscriptions/SUB/resourceGroups/RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name"},
    filePath: filepath
);

إشعار

تعمل مصادقة الهوية المدارة فقط مع الملفات الموجودة في Azure Storage. تحتاج الهوية المدارة إلى Storage Blob Data Reader تعيين دور للحاوية المتضمنة للملف، ويجب أيضًا تعيينها إلى تجمع Pool.

نصائح واقتراحات

يمكن لمهام Azure Batch استخدام الملفات بطرق عديدة، ولهذا السبب توفر Batch خيارات مختلفة لإدارة الملفات على المهام. لا يقصد بالسيناريوهات التالية أن تكون شاملة، ولكنها تغطي بعض الحالات الشائعة وتقدم توصيات.

ملفات موارد متعددة

إذا تمت مشاركة ملفات المهام الشائعة بين العديد من المهام في مهمة Batch، فقد تحتاج إلى استخدام حزمة تطبيقات لاحتواء تلك الملفات. توفر حزم التطبيقات تحسين سرعة التنزيل، ويتم تخزين البيانات في حزم التطبيقات مؤقتًا بين المهام. مع حزم التطبيقات، لا تحتاج إلى إدارة ملفات موارد متعددة يدويًا أو إنشاء عناوين URL لـ SAS للوصول إلى الملفات في Azure Storage. تعمل Batch في الخلفية مع Azure Storage لتخزين حزم التطبيقات ونشرها لحساب العقد. إذا لم تتغير ملفات المهام في كثير من الأحيان، فقد تكون حزم التطبيقات مناسبة تمامًا للحل.

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

عدد ملفات الموارد لكل مهمة

عندما تحدد مهمة عددا كبيرا من ملفات الموارد، قد ترفض Batch المهمة على أنها كبيرة جدا. يعتمد هذا على الطول الإجمالي لأسماء الملفات أو عناوين URL (بالإضافة إلى مرجع الهوية) لجميع الملفات المضافة إلى المهمة. من الأفضل أن تبقي مهامك صغيرة عن طريق تقليل عدد ملفات الموارد على المهمة نفسها.

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

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