إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تشرح هذه المقالة كيفية العمل مع مشغل < دالات Azure >مراكز أحداث Azure دالات Azure. يدعم دالات Azure روابط المشغل output لمراكز الأحداث.
للحصول على معلومات حول تفاصيل الإعداد والتكوين، راجع الاستعراض العام.
استخدم مشغل الوظيفة للرد على حدث تم إرساله إلى تدفق حدث مركز الحدث. تحتاج إلى الوصول للقراءة إلى مركز الأحداث الأساسي لإعداد المشغل. عند تشغيل الوظيفة، تتم كتابة الرسالة التي تم تمريرها إلى الوظيفة كسلسلة.
يتم اتخاذ قرارات تحجيم مراكز الأحداث لخطط الاستهلاك والمميز عبر التحجيم المستند إلى الهدف. لمزيد من المعلومات، راجع التحجيم المستند إلى الهدف.
للحصول على معلومات حول كيفية استجابة دالات Azure للأحداث المرسلة إلى دفق أحداث مركز الأحداث باستخدام المشغلات، راجع مركز الأحداث بوظائف بلا خادم على Azure.
هام
تستخدم هذه المقالة علامات التبويب لدعم إصدارات متعددة من نموذج البرمجة Node.js. يتوفر نموذج v4 بشكل عام وتم تصميمه للحصول على تجربة أكثر مرونة وبديهية لمطوري JavaScript وTypeScript. لمزيد من التفاصيل حول كيفية عمل نموذج v4، راجع دليل المطور دالات Azure Node.js. لمعرفة المزيد حول الاختلافات بين v3 وv4، راجع دليل الترحيل.
يدعم دالات Azure نموذجي برمجة Python. تعتمد الطريقة التي تحدد بها روابطك على نموذج البرمجة الذي اخترته.
يتيح لك نموذج برمجة Python v2 تحديد الروابط باستخدام المحسنات مباشرة في التعليمات البرمجية للدالة Python. لمزيد من المعلومات، راجع دليل المطور Python.
تدعم هذه المقالة كلا نموذجي البرمجة.
مثال
المثال التالي يوضح دالة C# التي يتم تشغيلها استنادًا إلى مركز الأحداث، إذ تتم كتابة سلسلة رسالة الإدخال إلى السجلات:
{
private readonly ILogger<EventHubsFunction> _logger;
public EventHubsFunction(ILogger<EventHubsFunction> logger)
{
_logger = logger;
}
[Function(nameof(EventHubFunction))]
[FixedDelayRetry(5, "00:00:10")]
[EventHubOutput("dest", Connection = "EventHubConnection")]
public string EventHubFunction(
[EventHubTrigger("src", Connection = "EventHubConnection")] string[] input,
FunctionContext context)
{
_logger.LogInformation("First Event Hubs triggered message: {msg}", input[0]);
var message = $"Output message created at {DateTime.Now}";
return message;
}
يوضح المثال التالي دالة TypeScript لمشغل مراكز الأحداث. تقرأ الدالة بيانات التعريف للحدث وتعمل على تسجيل الرسالة.
import { app, InvocationContext } from '@azure/functions';
export async function eventHubTrigger1(message: unknown, context: InvocationContext): Promise<void> {
context.log('Event hub function processed message:', message);
context.log('EnqueuedTimeUtc =', context.triggerMetadata.enqueuedTimeUtc);
context.log('SequenceNumber =', context.triggerMetadata.sequenceNumber);
context.log('Offset =', context.triggerMetadata.offset);
}
app.eventHub('eventHubTrigger1', {
connection: 'myEventHubReadConnectionAppSetting',
eventHubName: 'MyEventHub',
cardinality: 'one',
handler: eventHubTrigger1,
});
لتلقي الأحداث في دفعة، قم بتعيين cardinality إلى many، كما هو موضح في المثال التالي.
import { app, InvocationContext } from '@azure/functions';
export async function eventHubTrigger1(messages: unknown[], context: InvocationContext): Promise<void> {
context.log(`Event hub function processed ${messages.length} messages`);
for (let i = 0; i < messages.length; i++) {
context.log('Event hub message:', messages[i]);
context.log(`EnqueuedTimeUtc = ${context.triggerMetadata.enqueuedTimeUtcArray[i]}`);
context.log(`SequenceNumber = ${context.triggerMetadata.sequenceNumberArray[i]}`);
context.log(`Offset = ${context.triggerMetadata.offsetArray[i]}`);
}
}
app.eventHub('eventHubTrigger1', {
connection: 'myEventHubReadConnectionAppSetting',
eventHubName: 'MyEventHub',
cardinality: 'many',
handler: eventHubTrigger1,
});
يوضح المثال التالي دالة JavaScript مشغل مراكز الأحداث. تقرأ الدالة بيانات التعريف للحدث وتعمل على تسجيل الرسالة.
const { app } = require('@azure/functions');
app.eventHub('eventHubTrigger1', {
connection: 'myEventHubReadConnectionAppSetting',
eventHubName: 'MyEventHub',
cardinality: 'one',
handler: (message, context) => {
context.log('Event hub function processed message:', message);
context.log('EnqueuedTimeUtc =', context.triggerMetadata.enqueuedTimeUtc);
context.log('SequenceNumber =', context.triggerMetadata.sequenceNumber);
context.log('Offset =', context.triggerMetadata.offset);
},
});
لتلقي الأحداث في دفعة، قم بتعيين cardinality إلى many، كما هو موضح في المثال التالي.
const { app } = require('@azure/functions');
app.eventHub('eventHubTrigger1', {
connection: 'myEventHubReadConnectionAppSetting',
eventHubName: 'MyEventHub',
cardinality: 'many',
handler: (messages, context) => {
context.log(`Event hub function processed ${messages.length} messages`);
for (let i = 0; i < messages.length; i++) {
context.log('Event hub message:', messages[i]);
context.log(`EnqueuedTimeUtc = ${context.triggerMetadata.enqueuedTimeUtcArray[i]}`);
context.log(`SequenceNumber = ${context.triggerMetadata.sequenceNumberArray[i]}`);
context.log(`Offset = ${context.triggerMetadata.offsetArray[i]}`);
}
},
});
هنا رمز PowerShell:
param($eventHubMessages, $TriggerMetadata)
Write-Host "PowerShell eventhub trigger function called for message array: $eventHubMessages"
$eventHubMessages | ForEach-Object { Write-Host "Processed message: $_" }
يستخدم هذا المثال أنواع SDK للوصول مباشرة إلى الكائن الأساسي EventData الذي يوفره مشغل مراكز الأحداث:
تقرأ الدالة نص الحدث وتسجله.
import logging
import azure.functions as func
import azurefunctions.extensions.bindings.eventhub as eh
app = func.FunctionApp(http_auth_level=func.AuthLevel.FUNCTION)
@app.event_hub_message_trigger(
arg_name="event", event_hub_name="EVENTHUB_NAME", connection="EventHubConnection"
)
def eventhub_trigger(event: eh.EventData):
logging.info(
"Python EventHub trigger processed an event %s",
event.body_as_str()
)
للحصول على أمثلة لاستخدام نوع EventData، راجع نماذج EventData. للحصول على برنامج تعليمي خطوة بخطوة حول كيفية تضمين روابط من نوع SDK في تطبيق الوظائف، اتبع Python روابط SDK لعينة مراكز الأحداث.
إشعار
تتضمن القيود المعروفة ما يلي:
- الخاصية
enqueued_timeغير معتمدة. - دعم الرسائل الدفعية مدعوم مع إصدار وقت التشغيل 4.1039 أو أحدث.
لمعرفة المزيد، بما في ذلك روابط نوع SDK الأخرى المدعومة، راجع روابط نوع SDK.
يوضح المثال التالي ربط مشغل مراكز الأحداث ودالة Python التي تستخدم الربط. تقرأ الدالة بيانات التعريف للحدث وتعمل على تسجيل الرسالة. يعتمد المثال على ما إذا كنت تستخدم نموذج برمجة v1 أو v2 Python.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="EventHubTrigger1")
@app.event_hub_message_trigger(arg_name="myhub",
event_hub_name="<EVENT_HUB_NAME>",
connection="<CONNECTION_SETTING>")
def test_function(myhub: func.EventHubEvent):
logging.info('Python EventHub trigger processed an event: %s',
myhub.get_body().decode('utf-8'))
المثال التالي يوضح ربط مشغل مراكز الأحداث الذي يسجل نص الرسالة لمشغل مراكز الأحداث.
@FunctionName("ehprocessor")
public void eventHubProcessor(
@EventHubTrigger(name = "msg",
eventHubName = "myeventhubname",
connection = "myconnvarname") String message,
final ExecutionContext context )
{
context.getLogger().info(message);
}
في مكتبة وقت تشغيل الوظائف Java، استخدم التعليق التوضيحي EventHubTrigger على المعلمات التي تأتي قيمتها من مركز الحدث. تؤدي المعلمات مع هذه التعليقات التوضيحية إلى تشغيل الدالة عند وصول حدث. يمكن استخدام هذا التعليق التوضيحي مع أنواع Java الأصلية أو POJOs أو القيم التي تقبل القيم الخالية باستخدام Optional<T>.
يوضح المثال التالي الاستخدام المكثف لـ SystemProperties وخيارات الربط الأخرى لمزيد من التعمق في الحدث إلى جانب توفير مسار BlobOutput مكوّن بشكل جيد يتسم بالتسلسل الهرمي للتاريخ.
package com.example;
import java.util.Map;
import java.time.ZonedDateTime;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
/**
* Azure Functions with Event Hub trigger.
* and Blob Output using date in path along with message partition ID
* and message sequence number from EventHub Trigger Properties
*/
public class EventHubReceiver {
@FunctionName("EventHubReceiver")
@StorageAccount("bloboutput")
public void run(
@EventHubTrigger(name = "message",
eventHubName = "%eventhub%",
consumerGroup = "%consumergroup%",
connection = "eventhubconnection",
cardinality = Cardinality.ONE)
String message,
final ExecutionContext context,
@BindingName("Properties") Map<String, Object> properties,
@BindingName("SystemProperties") Map<String, Object> systemProperties,
@BindingName("PartitionContext") Map<String, Object> partitionContext,
@BindingName("EnqueuedTimeUtc") Object enqueuedTimeUtc,
@BlobOutput(
name = "outputItem",
path = "iotevents/{datetime:yy}/{datetime:MM}/{datetime:dd}/{datetime:HH}/" +
"{datetime:mm}/{PartitionContext.PartitionId}/{SystemProperties.SequenceNumber}.json")
OutputBinding<String> outputItem) {
var et = ZonedDateTime.parse(enqueuedTimeUtc + "Z"); // needed as the UTC time presented does not have a TZ
// indicator
context.getLogger().info("Event hub message received: " + message + ", properties: " + properties);
context.getLogger().info("Properties: " + properties);
context.getLogger().info("System Properties: " + systemProperties);
context.getLogger().info("partitionContext: " + partitionContext);
context.getLogger().info("EnqueuedTimeUtc: " + et);
outputItem.setValue(message);
}
}
السمات
تستخدم كل من مكتبات المعالجة والعامل المعزول C# السمة لتكوين المشغل. يستخدم البرنامج النصي C# بدلا من ذلك ملف تكوين function.json كما هو موضح في دليل البرمجة النصية C#.
استخدم EventHubTriggerAttribute لتعريف مشغل على مركز الأحداث، والذي يدعم الخصائص التالية.
| المعلمات | الوصف |
|---|---|
| EventHubName | اسم مركز الأحداث. عندما يكون اسم مركز الحدث موجودا أيضا في سلسلة الاتصال، تتجاوز هذه القيمة هذه الخاصية في وقت التشغيل. يمكن الرجوع إليها في إعدادات التطبيق، مثل %eventHubName% |
| مجموعة المستهلكين | خاصية اختيارية تعمل على تعيين مجموعة المستهلكين المستخدمة للاشتراك في الأحداث في المركز. عند حذفها، يتم استخدام مجموعة المستهلكين $Default. |
| اتصال | اسم إعداد التطبيق أو مجموعة الإعدادات التي تحدد طريقة الاتصال بمراكز الأحداث. لمعرفة المزيد، راجع الاتصالات. |
الديكور
Applies فقط إلى نموذج برمجة Python v2.
بالنسبة Python v2 التي تم تعريفها باستخدام مصمم الديكور، الخصائص التالية على event_hub_message_trigger:
| الخاصية | الوصف |
|---|---|
arg_name |
اسم المتغير الذي يمثل عنصر الحدث في التعليمات البرمجية للوظيفة. |
event_hub_name |
اسم مركز الأحداث. عندما يكون اسم مركز الحدث موجودا أيضا في سلسلة الاتصال، تتجاوز هذه القيمة هذه الخاصية في وقت التشغيل. |
connection |
اسم إعداد التطبيق أو مجموعة الإعدادات التي تحدد طريقة الاتصال بمراكز الأحداث. راجع الاتصالات. |
للحصول على Python الدالات المعرفة باستخدام function.json، راجع قسم Configuration.
تعليقات توضيحية
في مكتبة وقت تشغيل الوظائف Java، استخدم التعليق التوضيحي EventHubTrigger الذي يدعم الإعدادات التالية:
التكوين
Applies فقط إلى نموذج برمجة Python v1.
يوضح الجدول التالي الخصائص التي يمكنك تعيينها على الكائن الذي options تم تمريره app.eventHub() إلى الأسلوب .
| الخاصية | الوصف |
|---|---|
| eventHubName | اسم مركز الأحداث. عندما يكون اسم مركز الحدث موجودا أيضا في سلسلة الاتصال، تتجاوز هذه القيمة هذه الخاصية في وقت التشغيل. يمكن الرجوع إليها عبر إعدادات التطبيق %eventHubName% |
| مجموعة المستهلكين | خاصية اختيارية تعمل على تعيين مجموعة المستهلكين المستخدمة للاشتراك في الأحداث في المركز. عند حذفها، يتم استخدام مجموعة المستهلكين $Default. |
| اصل | قم بالتعيين على many لتمكين التجميع. إذا تم حذفها أو تعيينها إلى one، سيتم تمرير رسالة واحدة إلى الوظيفة. |
| الاتصال | اسم إعداد التطبيق أو مجموعة الإعدادات التي تحدد طريقة الاتصال بمراكز الأحداث. راجع الاتصالات. |
يوضح الجدول التالي خصائص تكوين المشغل التي قمت بتعيينها في ملف function.json، والذي يختلف باختلاف إصدار وقت التشغيل.
| خاصية function.json | الوصف |
|---|---|
| النوع | يجب تعيينه إلى eventHubTrigger. يتم تعيين هذه الخاصية تلقائيا عند إنشاء المشغل في مدخل Azure. |
| الاتجاه | يجب تعيينه إلى in. يتم تعيين هذه الخاصية تلقائيا عند إنشاء المشغل في مدخل Azure. |
| الاسم | اسم المتغير الذي يمثل عنصر الحدث في التعليمات البرمجية للوظيفة. |
| eventHubName | اسم مركز الأحداث. عندما يكون اسم مركز الحدث موجودا أيضا في سلسلة الاتصال، تتجاوز هذه القيمة هذه الخاصية في وقت التشغيل. يمكن الرجوع إليها عبر إعدادات التطبيق %eventHubName% |
| مجموعة المستهلكين | خاصية اختيارية تعمل على تعيين مجموعة المستهلكين المستخدمة للاشتراك في الأحداث في المركز. عند حذفها، يتم استخدام مجموعة المستهلكين $Default. |
| اصل | قم بالتعيين على many لتمكين التجميع. إذا تم حذفها أو تعيينها إلى one، سيتم تمرير رسالة واحدة إلى الوظيفة. |
| الاتصال | اسم إعداد التطبيق أو مجموعة الإعدادات التي تحدد طريقة الاتصال بمراكز الأحداث. راجع الاتصالات. |
| نوع البيانات | خاصية اختيارية تعين نوع إدخال المشغل. اختر string أو binary إذا كان الإدخال غير صالح JSON. |
عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values.
الاستخدام
لمعرفة المزيد حول كيفية تشغيل مراكز الأحداث ومقاييس مشغلات IoT Hub، راجع تكوين الأحداث باستخدام دالات Azure.
تدعم الوظائف أيضا Python روابط نوع SDK مراكز أحداث Azure، ما يتيح لك العمل مع البيانات باستخدام أنواع SDK الأساسية هذه:
هام
يتوفر دعم أنواع SDK لمراكز الأحداث في Python في المعاينة ويتم دعمه فقط لنموذج برمجة Python v2. لمزيد من المعلومات، راجع أنواع SDK في Python.
يعتمد نوع المعلمة الذي يدعمه ربط مخرجات مراكز الأحداث على إصدار وقت تشغيل الدوال وإصدار حزمة الامتداد ونمط C# المستخدم.
عندما تريد أن تعالج الدالة حدثا واحدا، يمكن ربط مشغل مراكز الأحداث بالأنواع التالية:
| النوع | الوصف |
|---|---|
string |
الحدث كسلسلة. استخدم عندما يكون الحدث نصا بسيطا. |
byte[] |
وحدات بايت الحدث. |
| أنواع قابلة للتسلسل إلى JSON | عندما يحتوي حدث على بيانات JSON، تحاول الدالات إلغاء تسلسل بيانات JSON إلى نوع كائن CLR (POCO) قديم عادي. |
| Azure. Messaging.EventHubs.EventData1 | كائن الحدث. إذا كنت تقوم بالترحيل من أي إصدارات قديمة من Event Hubs SDKs، فلاحظ أن هذا الإصدار يسقط الدعم للنوع القديم Body لصالح EventBody. |
عندما تريد أن تعالج الدالة دفعة من الأحداث، يمكن أن يرتبط مشغل مراكز الأحداث بالأنواع التالية:
| النوع | الوصف |
|---|---|
string[] |
صفيف من الأحداث من الدفعة، كسلاسل. يمثل كل إدخال حدثا واحدا. |
EventData[]
1 |
صفيف من الأحداث من الدفعة، كمثيلات Azure. Messaging.EventHubs.EventData. يمثل كل إدخال حدثا واحدا. |
T[] حيث T هو نوعJSON قابل للتسلسل 1 |
صفيف من الأحداث من الدفعة، كمثيلات لنوع POCO مخصص. يمثل كل إدخال حدثا واحدا. |
1 لاستخدام هذه الأنواع، تحتاج إلى الرجوع إلى Microsoft.Azure. Functions.Worker.Extensions.EventHubs 5.5.0 أو أحدث وتبعيات common لروابط نوع SDK.
يمكن أن يكون نوع المعلمة أحد الأنواع التالية:
- أي أنواع Java أصلية مثل int و String و byte[].
- القيم التي تقبل البيانات الفارغة باستخدام اختياري.
- أي نوع POJO.
لمعرفة المزيد، اطلع على مرجع EventHubTrigger.
بيانات تعريف الحدث
يوفر مشغل مراكز الأحداث العديد من خصائص بيانات التعريف. يمكن استخدام بيانات التعريف كجزء من تعبيرات الربط في روابط أخرى أو معلمات في التعليمات البرمجية الخاصة بك. تأتي الخصائص من فئة EventData.
| الخاصية | النوع | الوصف |
|---|---|---|
PartitionContext |
PartitionContext | المثيل PartitionContext. |
EnqueuedTimeUtc |
DateTime |
الوقت المحدد في UTC. |
Offset |
string |
إزاحة البيانات المتعلقة بتدفق قسم مركز الأحداث. تعد الإزاحة هي علامة أو معرف لحدث داخل دفق مراكز الأحداث. يعد المعرف فريدًا داخل قسم من دفق مراكز الأحداث. |
PartitionKey |
string |
القسم الذي يجب إرسال بيانات الحدث إليه. |
Properties |
IDictionary<String,Object> |
خصائص المستخدم لبيانات الحدث. |
SequenceNumber |
Int64 |
رقم التسلسل المنطقي للحدث. |
SystemProperties |
IDictionary<String,Object> |
خصائص النظام، بما في ذلك بيانات الحدث. |
راجع أمثلة التعليمات البرمجية التي تستخدم هذه الخصائص في هذه المقالة.
الاتصالات
تُعد الخاصية connection مرجعًا لتكوين البيئة التي تحدد كيفية اتصال التطبيق بمراكز الأحداث. ويجوز لها أن تحدد ما يلي:
- اسم إعداد تطبيق يحتوي على سلسلة الاتصال.
- اسم بادئة مشتركة لإعدادات تطبيق متعددة، مع تعريف اتصال هوية مدارة معا.
إذا كانت القيمة المكونة مطابقة بدقة لإعداد واحد ومطابقة لبادئة للإعدادات الأخرى، يتم استخدام المطابقة الدقيقة.
نصيحة
يوصى باتصالات الهوية المدارة عبر سلاسل الاتصال لتحسين الأمان. تتضمن سلاسل الاتصال بيانات الاعتماد التي يمكن كشفها، بينما تلغي الهويات المدارة الحاجة إلى إدارة الأسرار.
إذا كنت تستخدم version 5.x أو أعلى من الملحق، فبدلا من استخدام سلسلة الاتصال مع سر، يمكنك أن يكون التطبيق يستخدم هوية Microsoft Entra. للقيام بذلك، يمكنك تحديد الإعدادات تحت بادئة مشتركة والتي تقوم بالتعيين إلى خاصية connection في تكوين المشغل والربط.
في هذا الوضع، يتطلب الملحق إعدادات التطبيق التالية:
| الإعداد المستند إلى القالب | الوصف | نوع الهوية |
|---|---|---|
<CONNECTION_NAME_PREFIX>__fullyQualifiedNamespace |
مساحة اسم مراكز الأحداث المؤهلة بالكامل. | المعين من قبل النظام أو المعين من قبل المستخدم |
<CONNECTION_NAME_PREFIX>__credential |
يجب تعيينه إلى managedidentity. |
User-assigned |
<CONNECTION_NAME_PREFIX>__clientId |
معرف العميل للهوية المدارة المعينة من قبل المستخدم. | User-assigned |
يتم التعامل مع القيمة التي تقوم باستبدالها <CONNECTION_NAME_PREFIX> بواسطة ملحق الربط كاسم لإعداد الاتصال.
على سبيل المثال، إذا كان تكوين الربط الخاص بك محددا connection = "EventHubConnection" بهوية مدارة معينة من قبل المستخدم، يمكنك تكوين إعدادات التطبيق التالية:
{
"EventHubConnection__fullyQualifiedNamespace": "myeventhubns.servicebus.windows.net",
"EventHubConnection__credential": "managedidentity",
"EventHubConnection__clientId": "00000000-0000-0000-0000-000000000000"
}
نصيحة
استخدم الهويات المدارة المعينة من قبل المستخدم لسيناريوهات الإنتاج حيث تحتاج إلى تحكم دقيق في أذونات الهوية عبر موارد متعددة.
يمكنك استخدام إعدادات إضافية في القالب لتخصيص الاتصال بشكل أكبر. راجع الخصائص الشائعة للاتصالات المعتمدة على الهوية.
إشعار
عند استخدام تكوين Azure App أو Key Vault لتوفير إعدادات اتصالات الهوية المدارة، يجب أن تستخدم أسماء الإعدادات فاصل مفاتيح صالحا مثل : أو / بدلا من __ لضمان حل الأسماء بشكل صحيح.
على سبيل المثال: EventHubConnection:fullyQualifiedNamespace
عند استضافتها في خدمة دالات Azure، تستخدم الاتصالات المستندة إلى الهوية هوية مدارة . تستخدم الهوية المعينة من قبل النظام بشكل افتراضي على الرغم من إمكانية تحديد هوية معينة من قبل المستخدم مع خصائص credential و clientID. لاحظ أن تكوين هوية معينة من المستخدم باستخدام معرف مورد غير معتمد. عند التشغيل في سياقات أخرى، مثل التنمية المحلية، يتم استخدام هوية المطور الخاصة بك بدلًا من ذلك، على الرغم من أنه يمكن تخصيصها. راجع التطوير المحلي من خلال الاتصالات القائمة على الهوية.
منح الإذن للهوية
مهما كانت الهوية المستخدمة يجب أن يكون لديك أذونات لتنفيذ الإجراءات المقصودة. بالنسبة لمعظم خدمات Azure، يعني هذا أنك بحاجة إلى اخصص دور في Azure RBAC، باستخدام أدوار مضمنة أو مخصصة توفر هذه الأذونات.
هام
قد تعرض بعض الأذونات بواسطة الخدمة الهدف غير الضرورية لكافة السياقات. حيثما أمكن، الالتزام بمبدأ أقل امتيازومنح الهوية الامتيازات المطلوبة فقط. على سبيل المثال، إذا كان التطبيق يحتاج إلى أن يكون قادرًا على القراءة من مصدر بيانات فحسب، فاستخدم دورًا لديه إذن للقراءة فحسب. سيكون من غير المناسب إسناد دور يسمح أيضا بالكتابة إلى تلك الدائرة، لأن ذلك سيكون إذنًا مفرطًا لعملية قراءة. وبالمثل، قد ترغب في ضمان تحديد نطاق تعيين الدور فقط على الموارد التي تحتاج إلى قراءة.
ستحتاج إلى إنشاء تعيين دور يوفر الوصول إلى مركز الأحداث الخاص بك في وقت التشغيل. يمكن أن يكون نطاق تعيين الدور لمساحة اسم مراكز الأحداث أو مركز الأحداث نفسه. إن أدوار الإدارة، مثل Owner، غير كافية. يوضح الجدول التالي الأدوار المدمجة الموصى بها عند استخدام امتداد مراكز الأحداث في التشغيل العادي. قد يتطلب طلبك أذونات إضافية بناءً على الرمز الذي تكتبه.
| نوع الربط | مثال على الأدوار المضمنة |
|---|---|
| المشغِّل | مراكز أحداث Azure Data Receiver، مراكز أحداث Azure Data Owner |
| ربط بيانات الإخراج | مراكز أحداث Azure Data Sender |
إعدادات host.json
يحتوي ملف host.json على إعدادات تتحكم في سلوك مشغل مركز الأحداث. راجع إعدادات مضيف.json قسم للحصول على تفاصيل حول الإعدادات المتوفرة.