ربط مخرجات التخزين Azure Blob لوظائف Azure
يسمح لك ربط المخرجات بتعديل وحذف بيانات تخزين blob في دالة Azure.
للحصول على معلومات حول تفاصيل الإعداد والتكوين، راجع الاستعراض العام.
هام
تستخدم هذه المقالة علامات التبويب لدعم إصدارات متعددة من نموذج البرمجة Node.js. يتوفر نموذج v4 بشكل عام وتم تصميمه للحصول على تجربة أكثر مرونة وبديهية لمطوري JavaScript وTypeScript. لمزيد من التفاصيل حول كيفية عمل نموذج v4، راجع دليل مطور Azure Functions Node.js. لمعرفة المزيد حول الاختلافات بين v3 وv4، راجع دليل الترحيل.
تدعم Azure Functions نموذجي برمجة ل Python. تعتمد الطريقة التي تحدد بها روابطك على نموذج البرمجة الذي اخترته.
يتيح لك نموذج برمجة Python v2 تحديد الروابط باستخدام المحسنات مباشرة في التعليمات البرمجية لدالة Python. لمزيد من المعلومات، راجع دليل مطور Python.
تدعم هذه المقالة كلا نموذجي البرمجة.
مثال
يمكن إنشاء دالة C# باستخدام أحد أوضاع C# التالية:
- نموذج العامل المعزول: دالة C# المترجمة التي يتم تشغيلها في عملية عامل معزولة عن وقت التشغيل. عملية العامل المعزولة مطلوبة لدعم وظائف C# التي تعمل على إصدارات LTS وغير LTS .NET و.NET Framework. تستخدم
Microsoft.Azure.Functions.Worker.Extensions.*
ملحقات دالات عملية العامل المعزولة مساحات الأسماء. - نموذج قيد المعالجة: دالة C# المحولة برمجيا التي تعمل في نفس العملية مثل وقت تشغيل الوظائف. في تباين هذا النموذج، يمكن تشغيل الدالات باستخدام البرمجة النصية C#، والتي يتم دعمها بشكل أساسي لتحرير مدخل C#. تستخدم
Microsoft.Azure.WebJobs.Extensions.*
ملحقات الوظائف قيد المعالجة مساحات الأسماء.
هام
سينتهي الدعم للنموذج قيد التنفيذ في 10 نوفمبر 2026. نوصي بشدة بترحيل تطبيقاتك إلى نموذج العامل المعزول للحصول على الدعم الكامل.
المثال التالي هو دالة C# التي تعمل في عملية عامل معزولة وتستخدم مشغل كائن ثنائي كبير الحجم مع كل من إدخال الكائن الثنائي كبير الحجم وروابط blob الناتجة. يتم تشغيل الوظيفة من خلال إنشاء كائن ثنائي كبير الحجم في حاوية test-sample-trigger. يقرأ ملفا نصيا من حاوية test-samples-input وينشئ ملفا نصيا جديدا في حاوية إخراج استنادًا إلى اسم الملف الذي تم تشغيله.
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace SampleApp
{
public static class BlobFunction
{
[Function(nameof(BlobFunction))]
[BlobOutput("test-samples-output/{name}-output.txt")]
public static string Run(
[BlobTrigger("test-samples-trigger/{name}")] string myTriggerItem,
[BlobInput("test-samples-input/sample1.txt")] string myBlob,
FunctionContext context)
{
var logger = context.GetLogger("BlobFunction");
logger.LogInformation("Triggered Item = {myTriggerItem}", myTriggerItem);
logger.LogInformation("Input Item = {myBlob}", myBlob);
// Blob Output
return "blob-output content";
}
}
}
يحتوي هذا القسم على الأمثلة التالية:
مشغل HTTP، باستخدام إخراج OutputBinding (Java)
يظهر المثال التالي دالة Java التى تستخدم HttpTrigger
التعليق التوضيحي لتلقي معلمة تحتوي على اسم ملف في blob storage container. BlobInput
ثم يقرأ التعليق التوضيحي الملف ويمرر محتوياته إلى الدالة باسم abyte[]
. BlobOutput
يرتبط التعليق التوضيحي بOutputBinding outputItem
، والذي يتم استخدامه بعد ذلك بواسطة الدالة لكتابة محتويات blob الإدخال إلى حاوية التخزين المكونة.
@FunctionName("copyBlobHttp")
@StorageAccount("Storage_Account_Connection_String")
public HttpResponseMessage copyBlobHttp(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@BlobInput(
name = "file",
dataType = "binary",
path = "samples-workitems/{Query.file}")
byte[] content,
@BlobOutput(
name = "target",
path = "myblob/{Query.file}-CopyViaHttp")
OutputBinding<String> outputItem,
final ExecutionContext context) {
// Save blob to outputItem
outputItem.setValue(new String(content, StandardCharsets.UTF_8));
// build HTTP response with size of requested blob
return request.createResponseBuilder(HttpStatus.OK)
.body("The size of \"" + request.getQueryParameters().get("file") + "\" is: " + content.length + " bytes")
.build();
}
مشغل صف، باستخدام القيمة المرجعة للدالة (Java)
يظهر المثال التالي دالة Java التي تستخدمQueueTrigger
التعليق التوضيحي لتلقي رسالة تحتوي على اسم ملف في blob storage container. BlobInput
ثم يقرأ التعليق التوضيحي الملف ويمرر محتوياته إلى الدالة باسم abyte[]
. BlobOutput
يرتبط التعليق التوضيحي بالقيمة المرجعة للدالة، والذي يتم استخدامه بعد ذلك بواسطة الدالة لكتابة محتويات blob الإدخال إلى حاوية التخزين المكونة.
@FunctionName("copyBlobQueueTrigger")
@StorageAccount("Storage_Account_Connection_String")
@BlobOutput(
name = "target",
path = "myblob/{queueTrigger}-Copy")
public String copyBlobQueue(
@QueueTrigger(
name = "filename",
dataType = "string",
queueName = "myqueue-items")
String filename,
@BlobInput(
name = "file",
path = "samples-workitems/{queueTrigger}")
String content,
final ExecutionContext context) {
context.getLogger().info("The content of \"" + filename + "\" is: " + content);
return content;
}
في مكتبة وقت تشغيل وظائف Java، استخدم التعليق @BlobOutput
التوضيحي على معلمات الدالة التي تم كتابة قيمتها إلى عنصر في تخزين blob. يجب أن يكون OutputBinding<T>
نوع المعلمة ، حيث T
هو أي نوع Java أصلي أو POJO.
يظهر المثال التالي دالة TypeScript المشغلة في قائمة الانتظار التي تقوم بعمل نسخة من كائن ثنائي كبير الحجم. يتم تشغيل الدالة بواسطة رسالة قائمة انتظار تحتوي على blob للنسخ. تُسمى blob الجديدة {originalblobname}-Copy.
import { app, input, InvocationContext, output } from '@azure/functions';
const blobInput = input.storageBlob({
path: 'samples-workitems/{queueTrigger}',
connection: 'MyStorageConnectionAppSetting',
});
const blobOutput = output.storageBlob({
path: 'samples-workitems/{queueTrigger}-Copy',
connection: 'MyStorageConnectionAppSetting',
});
export async function storageQueueTrigger1(queueItem: unknown, context: InvocationContext): Promise<unknown> {
return context.extraInputs.get(blobInput);
}
app.storageQueue('storageQueueTrigger1', {
queueName: 'myqueue-items',
connection: 'MyStorageConnectionAppSetting',
extraInputs: [blobInput],
return: blobOutput,
handler: storageQueueTrigger1,
});
يوضح المثال التالي دالة JavaScript المشغلة في قائمة الانتظار التي تقوم بعمل نسخة من كائن ثنائي كبير الحجم. يتم تشغيل الدالة بواسطة رسالة قائمة انتظار تحتوي على blob للنسخ. تُسمى blob الجديدة {originalblobname}-Copy.
const { app, input, output } = require('@azure/functions');
const blobInput = input.storageBlob({
path: 'samples-workitems/{queueTrigger}',
connection: 'MyStorageConnectionAppSetting',
});
const blobOutput = output.storageBlob({
path: 'samples-workitems/{queueTrigger}-Copy',
connection: 'MyStorageConnectionAppSetting',
});
app.storageQueue('storageQueueTrigger1', {
queueName: 'myqueue-items',
connection: 'MyStorageConnectionAppSetting',
extraInputs: [blobInput],
return: blobOutput,
handler: (queueItem, context) => {
return context.extraInputs.get(blobInput);
},
});
يوضح المثال التالي كيفية إنشاء نسخة من blob واردة كما الإخراج من دالة PowerShell.
في ملف تكوين الوظيفة (function.json)، trigger
يتم استخدام خاصية بيانات التعريف لتحديد اسم blob في path
الخصائص.
إشعار
لتجنب الحلقات اللانهائية، تأكد من اختلاف مسارات الإدخال والإخراج.
{
"bindings": [
{
"name": "myInputBlob",
"path": "data/{trigger}",
"connection": "MyStorageConnectionAppSetting",
"direction": "in",
"type": "blobTrigger"
},
{
"name": "myOutputBlob",
"type": "blob",
"path": "data/copy/{trigger}",
"connection": "MyStorageConnectionAppSetting",
"direction": "out"
}
],
"disabled": false
}
هنا رمز PowerShell:
# Input bindings are passed in via param block.
param([byte[]] $myInputBlob, $TriggerMetadata)
Write-Host "PowerShell Blob trigger function Processed blob Name: $($TriggerMetadata.Name)"
Push-OutputBinding -Name myOutputBlob -Value $myInputBlob
يوضح المثال التالي روابط الإدخال والإخراج للكائنات الثنائية كبيرة الحجم. يعتمد المثال على ما إذا كنت تستخدم نموذج برمجة v1 أو v2 Python.
تنشئ التعليمات البرمجية نسخة من كائن ثنائي كبير الحجم.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="BlobOutput1")
@app.route(route="file")
@app.blob_input(arg_name="inputblob",
path="sample-workitems/test.txt",
connection="<BLOB_CONNECTION_SETTING>")
@app.blob_output(arg_name="outputblob",
path="newblob/test.txt",
connection="<BLOB_CONNECTION_SETTING>")
def main(req: func.HttpRequest, inputblob: str, outputblob: func.Out[str]):
logging.info(f'Python Queue trigger function processed {len(inputblob)} bytes')
outputblob.set(inputblob)
return "ok"
السمات
تستخدم كل من مكتبات المعالجة والعامل المعزول C# السمة لتعريف الدالة. يستخدم البرنامج النصي C# بدلا من ذلك ملف تكوين function.json كما هو موضح في دليل البرمجة النصية C#.
تأخذ الدالة BlobOutputAttribute
الإنشائية المعلمات التالية:
المعلمة | الوصف |
---|---|
BlobPath | المسار إلى كائن ثنائي كبير الحجم. |
Connection | اسم إعداد تطبيق أو مجموعة إعداد تحدد كيفية الاتصال بـ Azure Blobs. راجع الاتصالات. |
عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values
.
الديكور
ينطبق فقط على نموذج برمجة Python v2.
بالنسبة لوظائف Python v2 المحددة باستخدام المحسنات، تحدد الخصائص التالية على blob_input
ومصممي blob_output
الديكور مشغلات Blob Storage:
الخاصية | الوصف |
---|---|
arg_name |
اسم المتغير الذي يمثل blob في التعليمات البرمجية الدالة. |
path |
المسار إلى الكائن الثنائي كبير الحجم للمصمم blob_input ، هو قراءة الكائن الثنائي كبير الحجم. بالنسبة للمصمم blob_output ، إنه إخراج أو نسخة من كائن ثنائي كبير الحجم للإدخل. |
connection |
سلسلة الاتصال حساب التخزين. |
dataType |
بالنسبة للغات المكتوبة ديناميكيا، يحدد نوع البيانات الأساسي. القيم المُحتملة هي string وbinary أو stream . لللاطلاع على المزيد من التفاصيل، راجع مفاهيم المشغّلات والروابط. |
للحصول على وظائف Python المعرفة باستخدام function.json، راجع قسم التكوين.
تعليقات توضيحية
@BlobOutput
تمنحك السمة حق الوصول إلى blob الذي أدي إلى تشغيل الدالة. إذا كنت تستخدم byte array مع السمة، قم بتعيين dataType
إلى binary
. راجع مثال الإخراج للحصول على التفاصيل.
التكوين
ينطبق فقط على نموذج برمجة Python v1.
يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.
الخاصية | الوصف |
---|---|
النوع | يجب تعيينه إلى blob . |
الاتجاه | يجب التعيين لربط out المخرجات. تتم الإشارة إلى الاستثناءات في قسم الاستخدام. |
الاسم | اسم المتغير الذي يمثل blob في التعليمات البرمجية الدالة. تعيين $return إلى مرجع القيمة المرجعة للدالة. |
المسار | المسار إلى حاوية blob. |
الاتصال | اسم إعداد تطبيق أو مجموعة إعداد تحدد كيفية الاتصال بـ Azure Blobs. راجع الاتصالات. |
راجع قسم Example للحصول على أمثلة كاملة.
الاستخدام
تعتمد أنواع الربط التي يدعمها إخراج blob على إصدار حزمة الملحق وصيغة C# المستخدمة في تطبيق الوظائف.
عندما تريد أن تكتب الدالة إلى كائن ثنائي كبير الحجم واحد، يمكن ربط ربط إخراج الكائن الثنائي كبير الحجم بالأنواع التالية:
النوع | الوصف |
---|---|
string |
محتوى الكائن الثنائي كبير الحجم كسلسلة. استخدم عندما يكون محتوى الكائن الثنائي كبير الحجم نصا بسيطا. |
byte[] |
وحدات البايت لمحتوى الكائن الثنائي كبير الحجم. |
أنواع قابلة للتسلسل إلى JSON | كائن يمثل محتوى كائن ثنائي كبير الحجم JSON. تحاول الدالات تسلسل نوع كائن CLR (POCO) قديم عادي في بيانات JSON. |
عندما تريد أن تكتب الدالة إلى الكائنات الثنائية كبيرة الحجم المتعددة، يمكن ربط ربط إخراج الكائن الثنائي كبير الحجم بالأنواع التالية:
النوع | الوصف |
---|---|
T[] حيث T هو واحد من أنواع ربط إخراج كائن ثنائي كبير الحجم واحد |
صفيف يحتوي على محتوى لنقاط متعددة. يمثل كل إدخال محتوى كائن ثنائي كبير الحجم واحد. |
بالنسبة لسيناريوهات الإخراج الأخرى، قم بإنشاء واستخدام BlobClient أو BlobContainerClient مع أنواع أخرى من Azure.Storage.Blobs مباشرة. راجع تسجيل عملاء Azure للحصول على مثال لاستخدام إدخال التبعية لإنشاء نوع عميل من Azure SDK.
يُوصى بالربط بـ string
أو Byte[]
فقط عندما يكون حجم الكائن الثنائي كبير الحجم صغيرًا. ويُوصى بذلك نظرًا لتحميل محتويات الكائن الثنائي كبير الحجم بالكامل في الذاكرة. بالنسبة إلى معظم الكائنات الثنائية كبيرة الحجم، استخدم نوع Stream
أو BlobClient
. لمزيد من المعلومات، راجع استخدام التزامن والذاكرة.
إذا تلقيت رسالة خطأ عند محاولة الربط بأحد أنواع عدة تطوير برامج التخزين، فتأكد من أن لديك مرجعًا إلى الإصدار الصحيح من عدة تطوير برامج التخزين.
يمكنك أيضًا استخدام StorageAccountAttribute لتحديد حساب التخزين المُراد استخدامه. يمكنك تنفيذ ذلك عندما تحتاج إلى استخدام حساب تخزين مختلف عن الدوال الأخرى في المكتبة. تأخذ الدالة الإنشائية اسم إعداد تطبيق يحتوي على سلسلة اتصال تخزين. يمكن تطبيق السمة على مستوى المعلمة أو الأسلوب أو الفئة. يُظهر المثال التالي مستوى الفئة ومستوى الأسلوب:
[StorageAccount("ClassLevelStorageAppSetting")]
public static class AzureFunctions
{
[FunctionName("BlobTrigger")]
[StorageAccount("FunctionLevelStorageAppSetting")]
public static void Run( //...
{
....
}
يتم تحديد حساب التخزين للاستخدام بالترتيب التالي:
- خاصية
BlobTrigger
السمةConnection
. StorageAccount
السمة المطبقة على نفس المعلمة المماثلة لهاBlobTrigger
.- السمة
StorageAccount
المطبقة على الوظيفة. StorageAccount
السمة التي تم تطبيقها على الفئة.- حساب التخزين الافتراضي لتطبيق الدوال المُعرَّف في إعداد التطبيق
AzureWebJobsStorage
.
@BlobOutput
تمنحك السمة حق الوصول إلى blob الذي أدي إلى تشغيل الدالة. إذا كنت تستخدم byte array مع السمة، قم بتعيين dataType
إلى binary
. راجع مثال الإخراج للحصول على التفاصيل.
يمكنك الوصول إلى بيانات كائن ثنائي كبير الحجم عبر معلمة تطابق الاسم المعين بواسطة معلمة اسم الربط في ملفfunction.json.
يمكنك تعريف معلمات الدالة كالأنواع التالية للكتابة إلى تخزين blob:
- سلاسل ك
func.Out[str]
- مسارات ك
func.Out[func.InputStream]
راجع مثال الإخراج للحصول على التفاصيل.
الاتصالات
الخاصية connection
هي مرجع إلى تكوين البيئة الذي يحدد كيفية اتصال التطبيق ب Azure Blobs. ويجوز لها أن تحدد ما يلي:
- اسم أحد إعدادات التطبيق الذي يحتوي على سلسلة اتصال
- اسم بادئة مشتركة لإعدادات تطبيق متعددة، مع تعريف اتصال يستند إلى الهوية معًا.
إذا كانت القيمة المكونة مطابقة بدقة لإعداد واحد ومطابقة لبادئة للإعدادات الأخرى، يتم استخدام المطابقة الدقيقة.
سلسلة الاتصال
للحصول على سلسلة اتصال، اتبع الخطوات الموضحة في إدارة مفاتيح الوصول إلى حسابات التخزين. يجب أن تكون سلسلة الاتصال لحساب تخزين للأغراض العامة، وليست لـ حساب تخزين كائنات ثنائية كبيرة الحجم.
يجب تخزين سلسلة الاتصال هذه في إعداد تطبيق باسم يطابق القيمة المحددة بواسطة خاصية connection
لتكوين الربط.
إذا كان اسم إعداد التطبيق يبدأ بـ "AzureWebJobs"، يمكنك تحديد باقي الاسم هنا فقط. على سبيل المثال، إذا تم تعيين connection
إلى "MyStorage"، وقت تشغيل الدوال يبحث عن إعداد تطبيق يُسمى "MyStorage". إذا تركت connection
فارغة، سيستخدم وقت تشغيل الدوال سلسلة اتصال التخزين الافتراضية في إعدادات التطبيق التي تُسمى AzureWebJobsStorage
.
الاتصالات القائمة على الهوية
إذا كنت تستخدم الإصدار 5.x أو أعلى من الملحق (الحزمة 3.x أو أعلى لمكدسات اللغات non-.NET)، فبدلا من استخدام سلسلة الاتصال مع سر، يمكنك أن يكون التطبيق يستخدم هوية Microsoft Entra. لاستخدام هوية، يمكنك تعريف الإعدادات ضمن بادئة شائعة تعين إلى الخاصية connection
في تكوين المشغل والربط.
إذا كنت تقوم بإعداد connection
إلى "AzureWebJobsStorage"، فشاهد الاتصال باستضافة التخزين بهوية. لجميع الاتصالات الأخرى، يتطلب الملحق الخصائص التالية:
الخاصية | قالب متغير البيئة | الوصف | مثال للقيمة |
---|---|---|---|
URI لخدمة الكائنات الثنائية كبيرة الحجم | <CONNECTION_NAME_PREFIX>__serviceUri 1 |
عنوان URI لمستوى البيانات لخدمة الكائن الثنائي كبير الحجم التي تتصل بها، باستخدام نظام HTTPS. | https://<storage_account_name>.blob.core.windows.net |
يمكن استخدام 1 <CONNECTION_NAME_PREFIX>__blobServiceUri
ك اسم مستعار. إذا كان استخدام تكوين الاتصال سوف يتم بواسطة مشغل كائن ثنائي كبير الحجم، blobServiceUri
يجب أن يكون مصحوبًا أيضًا بـ queueServiceUri
. انظر أدناه.
serviceUri
لا يمكن استخدام النموذج عند استخدام تكوين الاتصال الكلي عبر الكائنات الثنائية كبيرة الحجم وقوائم الانتظار و/أو الجداول. يمكن ل URI تعيين خدمة الكائن الثنائي كبير الحجم فقط. كبديل، يمكنك توفير URI خصيصًا لكل خدمة، ما يسمح باستخدام اتصال واحد. إذا تم توفير كلا الإصدارين، يتم استخدام نموذج متعدد الخدمات. لتكوين الاتصال لخدمات متعددة، عيّن ما يلي بدلاً من <CONNECTION_NAME_PREFIX>__serviceUri
:
الخاصية | قالب متغير البيئة | الوصف | مثال للقيمة |
---|---|---|---|
URI لخدمة الكائنات الثنائية كبيرة الحجم | <CONNECTION_NAME_PREFIX>__blobServiceUri |
عنوان URI لمستوى البيانات لخدمة الكائن الثنائي كبير الحجم التي تتصل بها، باستخدام نظام HTTPS. | https://<storage_account_name>.blob.core.windows.net |
عنوان URI لخدمة قوائم الانتظار (مطلوب لمشغّلات الكائنات الثنائية كبيرة الحجم2) | <CONNECTION_NAME_PREFIX>__queueServiceUri |
URI لمستوى البيانات لخدمة قوائم انتظار، باستخدام نظام HTTPS. هذه القيمة مطلوبة فقط لمشغّلات الكائنات الثنائية كبيرة الحجم. | https://<storage_account_name>.queue.core.windows.net |
2 يعالج مشغّل الكائنات الثنائية كبيرة الحجم الفشل عبر عمليات إعادة المحاولة المتعددة عن طريق كتابة الكائنات الثنائية كبيرة الحجم السامة في قائمة انتظار. في نموذج serviceUri
، يُستخدم اتصال AzureWebJobsStorage
. ولكن عند تحديد blobServiceUri
، يجب أيضًا توفير URI لخدمة قوائم الانتظار إلى جانب queueServiceUri
. يوصى باستخدام الخدمة من نفس حساب التخزين مثل خدمة blob. تحتاج أيضا إلى التأكد من أن المشغل يمكنه قراءة الرسائل وكتابتها في خدمة قائمة الانتظار المكونة عن طريق تعيين دور مثل مساهم بيانات قائمة انتظار التخزين.
قد يتم تعيين خصائص أخرى لتخصيص الاتصال. راجع الخصائص الشائعة للاتصالات المعتمدة على الهوية.
عند استضافتها في خدمة Azure Functions، تستخدم الاتصالات المستندة إلى الهوية هوية مدارة. تستخدم الهوية المعينة من قبل النظام بشكل افتراضي على الرغم من إمكانية تحديد هوية معينة من قبل المستخدم مع خصائص credential
و clientID
. لاحظ أن تكوين هوية معينة من المستخدم باستخدام معرف مورد غير معتمد. عند التشغيل في سياقات أخرى، مثل التنمية المحلية، يتم استخدام هوية المطور الخاصة بك بدلًا من ذلك، على الرغم من أنه يمكن تخصيصها. راجع التطوير المحلي من خلال الاتصالات القائمة على الهوية.
منح الإذن للهوية
مهما كانت الهوية المستخدمة يجب أن يكون لديك أذونات لتنفيذ الإجراءات المقصودة. بالنسبة لمعظم خدمات Azure، يعني هذا أنك بحاجة إلى تعيين دور في Azure RBAC، باستخدام أدوار مضمنة أو مخصصة توفر هذه الأذونات.
هام
قد تعرض بعض الأذونات بواسطة الخدمة الهدف غير الضرورية لكافة السياقات. حيثما أمكن، الالتزام بمبدأ أقل امتيازومنح الهوية الامتيازات المطلوبة فقط. على سبيل المثال، إذا كان التطبيق يحتاج إلى أن يكون قادرًا على القراءة من مصدر بيانات فحسب، فاستخدم دورًا لديه إذن للقراءة فحسب. سيكون من غير المناسب إسناد دور يسمح أيضا بالكتابة إلى تلك الدائرة، لأن ذلك سيكون إذنًا مفرطًا لعملية قراءة. وبالمثل، قد ترغب في ضمان تحديد نطاق تعيين الدور فقط على الموارد التي تحتاج إلى قراءة.
تحتاج إلى إنشاء تعيين دور يوفر الوصول إلى حاوية الكائن الثنائي كبير الحجم في وقت التشغيل. أدوار الإدارة مثل المالك ليست كافية. يوضح الجدول التالي الأدوار المدمجة الموصى بها عند استخدام ملحق Blob Storage في التشغيل العادي. قد يتطلب تطبيقك أذونات إضافية استنادا إلى التعليمات البرمجية التي تكتبها.
نوع الربط | مثال على الأدوار المضمنة |
---|---|
المشغِّل | مالك بيانات كائن ثنائي كبير الحجم للتخزين والمساهم في بياناتقائمة انتظار التخزين 1 يجب أيضا منح أذونات إضافية لاتصال AzureWebJobsStorage.2 |
ربط بيانات الإدخال | قارئ بيانات للبيانات الثنائية الكبيرة للتخزين |
ربط بيانات الإخراج | مالك بيانات للبيانات الثنائية الكبيرة للتخزين |
1 يعالج مشغل الكائن الثنائي كبير الحجم الفشل عبر عمليات إعادة المحاولة المتعددة عن طريق كتابة الكائنات الثنائية كبيرة الحجم السامة إلى قائمة انتظار على حساب التخزين المحدد بواسطة الاتصال.
2 يتم استخدام اتصال AzureWebJobsStorage داخليًا للكائنات الثنائية كبيرة الحجم وقوائم الانتظار التي تمكن المشغل. إذا تم تكوينه لاستخدام اتصال قائم على الهوية، فإنه يحتاج إلى أذونات إضافية تتجاوز المتطلبات الافتراضية. تتم تغطية الأذونات المطلوبة من قبل مالك بيانات Storage Blob والمساهم في بيانات قائمة انتظار التخزين والمساهم في حساب التخزين. لمعرفة المزيد، راجع الاتصال بتخزين المضيف مع هوية.
الاستثناءات والتعليمات البرمجية للإرجاع
Binding | المرجع |
---|---|
كائن ثنائي كبير الحجم | رموز خطأ Blob |
كائن ثنائي كبير الحجم، جدول، قائمة الانتظار | رموز خطأ Storage |
كائن ثنائي كبير الحجم، جدول، قائمة الانتظار | استكشاف الأخطاء وإصلاحها |