تصفية الأحداث لشبكة الأحداث
توضح هذه المقالة كيفية تصفية الأحداث عند إنشاء اشتراك شبكة أحداث. للتعرف على خيارات تصفية الأحداث، راجع فهم تصفية الأحداث لاشتراكات شبكة الأحداث.
تصفية حسب نوع الحدث
عند إنشاء اشتراك شبكة الأحداث، يمكنك تحديد أنواع الأحداث المراد إرسالها إلى نقطة النهاية. تُنشئ الأمثلة الموجودة في هذا القسم اشتراكات أحداث لمجموعة موارد ولكنها تحد من الأحداث التي يتم إرسالها إلى Microsoft.Resources.ResourceWriteFailure
وMicrosoft.Resources.ResourceWriteSuccess
. إذا كنت بحاجة إلى مزيد من المرونة عند تصفية الأحداث حسب أنواع الأحداث، فشاهد التصفية حسب عوامل التشغيل والبيانات.
Azure PowerShell
بالنسبة إلى PowerShell، استخدم المعلمة -IncludedEventType
عند إنشاء الاشتراك.
$includedEventTypes = "Microsoft.Resources.ResourceWriteFailure", "Microsoft.Resources.ResourceWriteSuccess"
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToResourceGroup `
-ResourceGroupName myResourceGroup `
-Endpoint <endpoint-URL> `
-IncludedEventType $includedEventTypes
Azure CLI
في واجهة سطر الأوامر Azure CLI، استخدم المعلمة --included-event-types
. يستخدم المثال التالي Azure CLI في Bash shell:
includedEventTypes="Microsoft.Resources.ResourceWriteFailure Microsoft.Resources.ResourceWriteSuccess"
az eventgrid event-subscription create \
--name demoSubToResourceGroup \
--resource-group myResourceGroup \
--endpoint <endpoint-URL> \
--included-event-types $includedEventTypes
مدخل Azure
أثناء إنشاء اشتراك حدث لموضوع نظام، استخدم القائمة المنسدلة لتحديد أنواع الأحداث كما هو موضح في الصورة التالية.
بالنسبة إلى اشتراك موجود في موضوع نظام، استخدم علامة التبويب عوامل التصفية في صفحة اشتراك الحدث كما هو موضح في الصورة التالية.
يمكنك تحديد عوامل التصفية أثناء إنشاء موضوع مخصص عن طريق تحديد ارتباط إضافة نوع الحدث كما هو موضح في الصورة التالية.
لتحديد عامل تصفية لاشتراك موجود في موضوع مخصص، استخدم علامة التبويب عوامل التصفية في صفحة اشتراك الحدث.
قالب Azure Resource Manager
بالنسبة لقالب إدارة الموارد، استخدم الخاصية includedEventTypes
.
"resources": [
{
"type": "Microsoft.EventGrid/eventSubscriptions",
"name": "[parameters('eventSubName')]",
"apiVersion": "2018-09-15-preview",
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('endpoint')]"
}
},
"filter": {
"subjectBeginsWith": "",
"subjectEndsWith": "",
"isSubjectCaseSensitive": false,
"includedEventTypes": [
"Microsoft.Resources.ResourceWriteFailure",
"Microsoft.Resources.ResourceWriteSuccess"
]
}
}
}
]
إشعار
لمعرفة المزيد عن عوامل التصفية هذه (أنواع الأحداث والموضوع والمتقدم)، راجع فهم تصفية الأحداث لاشتراكات شبكة الأحداث.
تصفية حسب الموضوع
يمكنك تصفية الأحداث حسب الموضوع في بيانات الحدث. يمكنك تحديد قيمة لمطابقتها مع بداية الموضوع أو نهايته. إذا كنت بحاجة إلى مزيد من المرونة عند تصفية الأحداث حسب الموضوع، فشاهد التصفية حسب عوامل التشغيل والبيانات.
في مثال PowerShell التالي، تُنشئ اشتراك حدث يُجري التصفية حسب بداية الموضوع. يمكنك استخدام المعلمة -SubjectBeginsWith
لقصر الأحداث على تلك الخاصة بمورد معين. تمرر معرف المورد لمجموعة أمان الشبكة.
Azure PowerShell
$resourceId = (Get-AzResource -ResourceName demoSecurityGroup -ResourceGroupName myResourceGroup).ResourceId
New-AzEventGridSubscription `
-Endpoint <endpoint-URL> `
-EventSubscriptionName demoSubscriptionToResourceGroup `
-ResourceGroupName myResourceGroup `
-SubjectBeginsWith $resourceId
ينشئ مثال PowerShell التالي اشتراكًا لوحدة تخزين blob. حيث يقصر الأحداث على تلك التي تنتهي بـ .jpg
.
$storageId = (Get-AzStorageAccount -ResourceGroupName myResourceGroup -AccountName $storageName).Id
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToStorage `
-Endpoint <endpoint-URL> `
-ResourceId $storageId `
-SubjectEndsWith ".jpg"
Azure CLI
في مثال Azure CLI التالي، تُنشئ اشتراك حدث يُجري التصفية حسب بداية الموضوع. يمكنك استخدام المعلمة --subject-begins-with
لقصر الأحداث على تلك الخاصة بمورد معين. تمرر معرف المورد لمجموعة أمان الشبكة.
resourceId=$(az network nsg show -g myResourceGroup -n demoSecurityGroup --query id --output tsv)
az eventgrid event-subscription create \
--name demoSubscriptionToResourceGroup \
--resource-group myResourceGroup \
--endpoint <endpoint-URL> \
--subject-begins-with $resourceId
ينشئ مثال Azure CLI التالي اشتراكًا لوحدة تخزين blob. حيث يقصر الأحداث على تلك التي تنتهي بـ .jpg
.
storageid=$(az storage account show --name $storageName --resource-group myResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--resource-id $storageid \
--name demoSubToStorage \
--endpoint <endpoint-URL> \
--subject-ends-with ".jpg"
مدخل Azure
لاشتراك حدث موجود:
في صفحة اشتراك الأحداث، حدد تمكين تصفية الموضوع.
أدخل قيمًا لواحد أو أكثر من الحقول التالية: يبدأ الموضوع بـ وينتهي الموضوع بـ . في الخيارات التالية يتم تحديد كلا الخيارين.
حدد خيار مطابقة موضوع حساس لحالة الأحرف إذا كنت تريد أن يتطابق موضوع الحدث مع حالة عوام التصفية المحددة.
عند إنشاء اشتراك حدث، استخدم علامة التبويب عوامل التصفية في معالج الإنشاء.
قالب Azure Resource Manager
في مثال نموذج Resource Manager التالي، تُنشئ اشتراك حدث يُجري التصفية حسب بداية الموضوع. يمكنك استخدام خاصية subjectBeginsWith
لقصر الأحداث على تلك الخاصة بمورد معين. تمرر معرف المورد لمجموعة أمان الشبكة.
"resources": [
{
"type": "Microsoft.EventGrid/eventSubscriptions",
"name": "[parameters('eventSubName')]",
"apiVersion": "2018-09-15-preview",
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('endpoint')]"
}
},
"filter": {
"subjectBeginsWith": "[resourceId('Microsoft.Network/networkSecurityGroups','demoSecurityGroup')]",
"subjectEndsWith": "",
"isSubjectCaseSensitive": false,
"includedEventTypes": [ "All" ]
}
}
}
]
ينشئ مثال قالب Resource Manager التالي اشتراكًا لتخزين blob. حيث يقصر الأحداث على تلك التي تنتهي بـ .jpg
.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts/providers/eventSubscriptions",
"name": "[concat(parameters('storageName'), '/Microsoft.EventGrid/', parameters('eventSubName'))]",
"apiVersion": "2018-09-15-preview",
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('endpoint')]"
}
},
"filter": {
"subjectEndsWith": ".jpg",
"subjectBeginsWith": "",
"isSubjectCaseSensitive": false,
"includedEventTypes": [ "All" ]
}
}
}
]
إشعار
لمعرفة المزيد عن عوامل التصفية هذه (أنواع الأحداث والموضوع والمتقدم)، راجع فهم تصفية الأحداث لاشتراكات شبكة الأحداث.
تصفية حسب المشغلين والبيانات
للحصول على مزيدٍ من المرونة في التصفية، يمكنك استخدام عوامل التشغيل وخصائص البيانات لتصفية الأحداث.
اشترك مع عوامل التصفية المتقدمة
للتعرف على عوامل التشغيل والمفاتيح التي يمكنك استخدامها للتصفية المتقدمة، راجع التصفية المتقدمة.
تُنشئ هذه الأمثلة موضوعًا مخصصًا. تشترك في الموضوع المخصص وتُجري التصفية حسب القيمة في كائن البيانات. تُرسَل الأحداث التي تم تعيين خاصية اللون لها على الأزرق أو الأحمر أو الأخضر إلى الاشتراك.
Azure PowerShell
بالنسبة إلى PowerShell، استخدم:
$topicName = <your-topic-name>
$endpointURL = <endpoint-URL>
New-AzResourceGroup -Name gridResourceGroup -Location eastus2
New-AzEventGridTopic -ResourceGroupName gridResourceGroup -Location eastus2 -Name $topicName
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name $topicName).Id
$expDate = '<mm/dd/yyyy hh:mm:ss>' | Get-Date
$AdvFilter1=@{operator="StringIn"; key="Data.color"; Values=@('blue', 'red', 'green')}
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint $endpointURL `
-ExpirationDate $expDate `
-AdvancedFilter @($AdvFilter1)
Azure CLI
بالنسبة إلى Azure CLI، استخدم:
topicName=<your-topic-name>
endpointURL=<endpoint-URL>
az group create -n gridResourceGroup -l eastus2
az eventgrid topic create --name $topicName -l eastus2 -g gridResourceGroup
topicid=$(az eventgrid topic show --name $topicName -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
-n demoAdvancedSub \
--advanced-filter data.color stringin blue red green \
--endpoint $endpointURL \
--expiration-date "<yyyy-mm-dd>"
لاحظ أنه تم تعيين تاريخ انتهاء الصلاحية للاشتراك.
مدخل Azure
في صفحة اشتراك الحدث، حدد إضافة عامل تصفية جديد في قسم عوامل التصفية المتقدمة.
حدد مفتاحا أو عامل تشغيل أو قيمة أو قيمًا لمقارنتها. في المثال التالي، يُستخدم data.color كمفتاح، ويتم استخدام String كعامل تشغيل، وتُحدد قيم الأزرق والأحمر والأخضر للقيم.
إشعار
لمعرفة المزيد عن عوامل التصفية المتقدمة، راجع فهم تصفية الأحداث لاشتراكات شبكة الأحداث.
اختبار عامل التصفية
لاختبار عامل التصفية، أرسل حدثا مع تعيين حقل اللون على اللون الأخضر. نظرًا لأن اللون الأخضر هو إحدى القيم الموجودة في عامل التصفية، يتم تسليم الحدث إلى نقطة النهاية.
Azure PowerShell
بالنسبة إلى PowerShell، استخدم:
$endpoint = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name $topicName).Endpoint
$keys = Get-AzEventGridTopicKey -ResourceGroupName gridResourceGroup -Name $topicName
$eventID = Get-Random 99999
$eventDate = Get-Date -Format s
$htbody = @{
id= $eventID
eventType="recordInserted"
subject="myapp/vehicles/cars"
eventTime= $eventDate
data= @{
model="SUV"
color="green"
}
dataVersion="1.0"
}
$body = "["+(ConvertTo-Json $htbody)+"]"
Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
لاختبار سيناريو لا يتم فيه إرسال الحدث، أرسل حدثًا مع تعيين حقل اللون على اللون الأصفر. اللون الأصفر ليس أحد القيم المحددة في الاشتراك، لذا لا يتم تسليم الحدث إلى اشتراكك.
$htbody = @{
id= $eventID
eventType="recordInserted"
subject="myapp/vehicles/cars"
eventTime= $eventDate
data= @{
model="SUV"
color="yellow"
}
dataVersion="1.0"
}
$body = "["+(ConvertTo-Json $htbody)+"]"
Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Azure CLI
بالنسبة إلى Azure CLI، استخدم:
topicEndpoint=$(az eventgrid topic show --name $topicName -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicName -g gridResourceGroup --query "key1" --output tsv)
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/cars", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "model": "SUV", "color": "green"},"dataVersion": "1.0"} ]'
curl -X POST -H "aeg-sas-key: $key" -d "$event" $topicEndpoint
لاختبار سيناريو لا يتم فيه إرسال الحدث، أرسل حدثًا مع تعيين حقل اللون على اللون الأصفر. اللون الأصفر ليس أحد القيم المحددة في الاشتراك، لذا لا يتم تسليم الحدث إلى اشتراكك.
بالنسبة إلى Azure CLI، استخدم:
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/cars", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "model": "SUV", "color": "yellow"},"dataVersion": "1.0"} ]'
curl -X POST -H "aeg-sas-key: $key" -d "$event" $topicEndpoint
الخطوات التالية
لمعرفة المزيد عن عوامل التصفية (أنواع الأحداث والموضوع والمتقدم)، راجع فهم تصفية الأحداث لاشتراكات شبكة الأحداث.