التدريب
الوحدة النمطية
Configure and Activate Webhooks - Training
This module explains how to configure and activate webhooks.
لم يعد هذا المتصفح مدعومًا.
بادر بالترقية إلى Microsoft Edge للاستفادة من أحدث الميزات والتحديثات الأمنية والدعم الفني.
تمكنك خطافات الويب من الاستماع إلى أحداث Model Registry بحيث يمكن أن تؤدي عمليات التكامل الخاصة بك إلى تشغيل الإجراءات تلقائيا. يمكنك استخدام خطافات الويب لأتمتة ودمج مسار التعلم الآلي الخاص بك مع أدوات CI/CD الحالية وسير العمل. على سبيل المثال، يمكنك تشغيل إصدارات CI عند إنشاء إصدار نموذج جديد أو إعلام أعضاء الفريق من خلال Slack في كل مرة يتم فيها طلب انتقال نموذج إلى الإنتاج.
تتوفر خطافات الويب من خلال Databricks REST API أو عميل databricks-registry-webhooks
Python على PyPI.
ملاحظة
لا تتوفر خطافات الويب عند استخدام النماذج في كتالوج Unity. للحصول على بديل، راجع هل يمكنني استخدام طلبات انتقال المرحلة أو تشغيل خطافات الويب على الأحداث؟. إرسال خطافات الويب إلى نقاط النهاية الخاصة (نقاط النهاية التي لا يمكن الوصول إليها من الإنترنت العام) غير مدعوم.
يمكنك تحديد خطاف ويب لتشغيله على حدث واحد أو أكثر من هذه الأحداث:
هناك نوعان من خطافات الويب استنادا إلى أهداف المشغل الخاصة بهم:
هناك أيضا نوعان من خطافات الويب استنادا إلى نطاقها، مع متطلبات مختلفة للتحكم في الوصول:
model_name
الإنشاء. يجب أن يكون لديك أذونات مسؤول مساحة العمل لإنشاء خطافات الويب على مستوى السجل أو تعديلها أو حذفها أو اختبارها.يحتوي كل مشغل حدث على الحد الأدنى من الحقول المضمنة في الحمولة للطلب الصادر إلى نقطة نهاية خطاف الويب.
text
الحقل تكامل Slack. لإرسال رسالة Slack، قم بتوفير نقطة نهاية Slack webhook كعنون URL لخطاف الويب.تعتمد حمولة خطاف الويب الخاص بسجل الوظيفة على نوع المهمة ويتم إرسالها إلى jobs/run-now
نقطة النهاية في مساحة العمل الهدف.
تحتوي المهام أحادية المهمة على واحدة من ثلاث حمولات استنادا إلى نوع المهمة.
تحتوي مهام عجلة دفتر الملاحظات وPython على حمولة JSON مع قاموس معلمة يحتوي على حقل event_message
.
{
"job_id": 1234567890,
"notebook_params": {
"event_message": "<Webhook Payload>"
}
}
تحتوي مهام إرسال Python و JAR وSpark على حمولة JSON مع قائمة معلمات.
{
"job_id": 1234567890,
"python_params": ["<Webhook Payload>"]
}
تحتوي جميع أنواع الوظائف الأخرى على حمولة JSON بدون معلمات.
{
"job_id": 1234567890
}
تحتوي المهام متعددة المهام على حمولة JSON مع جميع المعلمات التي تم ملؤها لحساب أنواع المهام المختلفة.
{
"job_id": 1234567890,
"notebook_params": {
"event_message": "<Webhook Payload>"
},
"python_named_params": {
"event_message": "<Webhook Payload>"
},
"jar_params": ["<Webhook Payload>"],
"python_params": ["<Webhook Payload>"],
"spark_submit_params": ["<Webhook Payload>"]
}
Response
POST
/your/endpoint/for/event/model-versions/stage-transition
--data {
"event": "MODEL_VERSION_TRANSITIONED_STAGE",
"webhook_id": "c5596721253c4b429368cf6f4341b88a",
"event_timestamp": 1589859029343,
"model_name": "Airline_Delay_SparkML",
"version": "8",
"to_stage": "Production",
"from_stage": "None",
"text": "Registered model 'someModel' version 8 transitioned from None to Production."
}
Response
POST
/your/endpoint/for/event/model-versions/tag-set
--data {
"event": "MODEL_VERSION_TAG_SET",
"webhook_id": "8d7fc634e624474f9bbfde960fdf354c",
"event_timestamp": 1589859029343,
"model_name": "Airline_Delay_SparkML",
"version": "8",
"tags": [{"key":"key1","value":"value1"},{"key":"key2","value":"value2"}],
"text": "example@yourdomain.com set version tag(s) 'key1' => 'value1', 'key2' => 'value2' for registered model 'someModel' version 8."
}
Response
POST
/your/endpoint/for/event/comments/create
--data {
"event": "COMMENT_CREATED",
"webhook_id": "8d7fc634e624474f9bbfde960fdf354c",
"event_timestamp": 1589859029343,
"model_name": "Airline_Delay_SparkML",
"version": "8",
"comment": "Raw text content of the comment",
"text": "A user commented on registered model 'someModel' version 8."
}
للأمان، يتضمن Azure Databricks X-Databricks-Signature في العنوان المحسوب من الحمولة والمفتاح السري المشترك المرتبط بإخطار الويب باستخدام HMAC مع خوارزمية SHA-256.
بالإضافة إلى ذلك، يمكنك تضمين عنوان تخويل قياسي في الطلب الصادر عن طريق تحديد عنوان في HttpUrlSpec
خطاف الويب.
إذا تم تعيين سر مشترك، يجب على مستلم الحمولة التحقق من مصدر طلب HTTP باستخدام السر المشترك لترميز البيانات الأساسية HMAC، ثم مقارنة القيمة المرمزة مع X-Databricks-Signature
من العنوان. هذا مهم بشكل خاص إذا تم تعطيل التحقق من صحة شهادة SSL (أي إذا تم enable_ssl_verification
تعيين الحقل إلى false
).
ملاحظة
enable_ssl_verification
بشكل true
افتراضي. بالنسبة للشهادات الموقعة ذاتيا، يجب أن يكون false
هذا الحقل ، ويجب على الخادم الوجهة تعطيل التحقق من صحة الشهادة.
لأغراض الأمان، توصي Databricks بإجراء التحقق من صحة البيانات السرية مع الجزء المشفر بواسطة HMAC من الحمولة. إذا قمت بتعطيل التحقق من صحة اسم المضيف، فإنك تزيد من خطر توجيه طلب بشكل ضار إلى مضيف غير مقصود.
import hmac
import hashlib
import json
secret = shared_secret.encode('utf-8')
signature_key = 'X-Databricks-Signature'
def validate_signature(request):
if not request.headers.has_key(signature_key):
raise Exception('No X-Signature. Webhook not be trusted.')
x_sig = request.headers.get(signature_key)
body = request.body.encode('utf-8')
h = hmac.new(secret, body, hashlib.sha256)
computed_sig = h.hexdigest()
if not hmac.compare_digest(computed_sig, x_sig.encode()):
raise Exception('X-Signature mismatch. Webhook not be trusted.')
إذا تم تعيين عنوان التخويل، يجب على العملاء التحقق من مصدر طلب HTTP عن طريق التحقق من الرمز المميز للحامل أو بيانات اعتماد التخويل في رأس التخويل.
لاستخدام إخطار على الويب الذي يؤدي إلى تشغيل المهمة في مساحة عمل مختلفة تم تمكين قائمة السماح ل IP بها، يجب السماح بقائمة عناوين IP الخاصة بالمنطقة NAT حيث يوجد خطاف الويب لقبول الطلبات الواردة.
إذا كان الإخطار على الويب والمهمة في نفس مساحة العمل، فلن تحتاج إلى إضافة أي عناوين IP إلى قائمة السماح الخاصة بك.
إذا كانت وظيفتك موجودة في منطقة متعددة المستأجرين في Azure، فشاهد عناوين وحدة التحكم في Azure Databricks. بالنسبة لجميع المناطق الأخرى، اتصل بفريق حسابك لتحديد عناوين IP التي تحتاج إلى السماح بها.
إذا تم تمكين تسجيل التدقيق لمساحة العمل الخاصة بك، يتم تضمين الأحداث التالية في سجلات التدقيق:
بالنسبة للإخطارات على الويب مع نقاط نهاية HTTP، يتم تسجيل طلب HTTP المرسل إلى عنوان URL المحدد لخطاف الويب جنبا إلى جنب مع عنوان URL enable_ssl_verification
والقيم.
بالنسبة للإخطارات على الويب مع مشغلات الوظائف، job_id
يتم تسجيل القيم و workspace_url
.
يتضمن هذا القسم ما يلي:
عندما تكون نقطة نهاية HTTPS جاهزة لتلقي طلب حدث الإخطار على الويب، يمكنك إنشاء خطاف ويب باستخدام واجهة برمجة تطبيقات REST لخطاف الويب Databricks. على سبيل المثال، يمكن أن يشير عنوان URL الخاص بخطاف الويب إلى Slack لنشر الرسائل إلى قناة.
$ curl -X POST -H "Authorization: Bearer <access-token>" -d \
'{"model_name": "<model-name>",
"events": ["MODEL_VERSION_CREATED"],
"description": "Slack notifications",
"status": "TEST_MODE",
"http_url_spec": {
"url": "https://hooks.slack.com/services/...",
"secret": "anyRandomString"
"authorization": "Bearer AbcdEfg1294"}}' https://<databricks-instance>/api/2.0/mlflow/registry-webhooks/create
from databricks_registry_webhooks import RegistryWebhooksClient, HttpUrlSpec
http_url_spec = HttpUrlSpec(
url="https://hooks.slack.com/services/...",
secret="secret_string",
authorization="Bearer AbcdEfg1294"
)
http_webhook = RegistryWebhooksClient().create_webhook(
model_name="<model-name>",
events=["MODEL_VERSION_CREATED"],
http_url_spec=http_url_spec,
description="Slack notifications",
status="TEST_MODE"
)
Response
{"webhook": {
"id":"1234567890",
"creation_timestamp":1571440826026,
"last_updated_timestamp":1582768296651,
"status":"TEST_MODE",
"events":["MODEL_VERSION_CREATED"],
"http_url_spec": {
"url": "https://hooks.slack.com/services/...",
"enable_ssl_verification": True
}}}
يمكنك أيضا إنشاء خطاف ويب لسجل HTTP مع موفر Databricks Terraform databricks_mlflow_webhook.
تم إنشاء خطاف الويب السابق في TEST_MODE
، لذلك يمكن تشغيل حدث وهمي لإرسال طلب إلى عنوان URL المحدد. ومع ذلك، لا يتم تشغيل خطاف الويب على حدث حقيقي. ترجع نقطة نهاية الاختبار رمز الحالة المستلم والنص الأساسي من عنوان URL المحدد.
$ curl -X POST -H "Authorization: Bearer <access-token>" -d \
'{"id": "1234567890"}' \
https://<databricks-instance>/api/2.0/mlflow/registry-webhooks/test
from databricks_registry_webhooks import RegistryWebhooksClient
http_webhook = RegistryWebhooksClient().test_webhook(
id="1234567890"
)
Response
{
"status":200,
"body":"OK"
}
لتمكين خطاف الويب للأحداث الحقيقية، قم بتعيين حالته إلى ACTIVE
من خلال استدعاء تحديث، والذي يمكن استخدامه أيضا لتغيير أي من خصائصه الأخرى.
$ curl -X PATCH -H "Authorization: Bearer <access-token>" -d \
'{"id": "1234567890", "status": "ACTIVE"}' \
https://<databricks-instance>/api/2.0/mlflow/registry-webhooks/update
from databricks_registry_webhooks import RegistryWebhooksClient
http_webhook = RegistryWebhooksClient().update_webhook(
id="1234567890",
status="ACTIVE"
)
Response
{"webhook": {
"id":"1234567890",
"creation_timestamp":1571440826026,
"last_updated_timestamp":1582768296651,
"status": "ACTIVE",
"events":["MODEL_VERSION_CREATED"],
"http_url_spec": {
"url": "https://hooks.slack.com/services/...",
"enable_ssl_verification": True
}}}
لتعطيل خطاف الويب، قم بتعيين حالته إلى DISABLED
(باستخدام أمر تحديث مشابه كما هو موضح أعلاه)، أو احذفه.
$ curl -X DELETE -H "Authorization: Bearer <access-token>" -d \
'{"id": "1234567890"}' \
https://<databricks-instance>/api/2.0/mlflow/registry-webhooks/delete
from databricks_registry_webhooks import RegistryWebhooksClient
http_webhook = RegistryWebhooksClient().delete_webhook(
id="1234567890"
)
Response
{}
سير العمل لإدارة خطافات الويب الخاصة بسجل الوظائف مشابه لخطافات الويب الخاصة بسجل HTTP، مع الاختلاف الوحيد هو job_spec
الحقل الذي يحل محل http_url_spec
الحقل.
باستخدام خطافات الويب، يمكنك تشغيل المهام في نفس مساحة العمل أو في مساحة عمل مختلفة. يتم تحديد مساحة العمل باستخدام المعلمة workspace_url
الاختيارية . إذا لم يكن workspace_url
موجودا، فإن السلوك الافتراضي هو تشغيل وظيفة في نفس مساحة العمل مثل خطاف الويب.
ملاحظة
كأفضل ممارسة أمان، عند المصادقة باستخدام الأدوات والأنظمة والبرامج النصية والتطبيقات التلقائية، توصي Databricks باستخدام رموز الوصول الشخصية التي تنتمي إلى كيانات الخدمة بدلا من مستخدمي مساحة العمل. لإنشاء رموز مميزة لكيانات الخدمة، راجع إدارة الرموز المميزة لكيان الخدمة.
$ curl -X POST -H "Authorization: Bearer <access-token>" -d \ '{"model_name": "<model-name>",
"events": ["TRANSITION_REQUEST_CREATED"],
"description": "Job webhook trigger",
"status": "TEST_MODE",
"job_spec": {
"job_id": "1",
"workspace_url": "https://my-databricks-workspace.com",
"access_token": "dapi12345..."}}'
https://<databricks-instance>/api/2.0/mlflow/registry-webhooks/create
from databricks_registry_webhooks import RegistryWebhooksClient, JobSpec
job_spec = JobSpec(
job_id="1",
workspace_url="https://my-databricks-workspace.com",
access_token="dapi12345..."
)
job_webhook = RegistryWebhooksClient().create_webhook(
model_name="<model-name>",
events=["TRANSITION_REQUEST_CREATED"],
job_spec=job_spec,
description="Job webhook trigger",
status="TEST_MODE"
)
Response
{"webhook": {
"id":"1234567891",
"creation_timestamp":1591440826026,
"last_updated_timestamp":1591440826026,
"status":"TEST_MODE",
"events":["TRANSITION_REQUEST_CREATED"],
"job_spec": {
"job_id": "1",
"workspace_url": "https://my-databricks-workspace.com"
}}}
يمكنك أيضا إنشاء إخطار على الويب لسجل الوظائف باستخدام موفر Databricks Terraform databricks_mlflow_webhook.
$ curl -X GET -H "Authorization: Bearer <access-token>" -d \ '{"model_name": "<model-name>"}'
https://<databricks-instance>/api/2.0/mlflow/registry-webhooks/list
from databricks_registry_webhooks import RegistryWebhooksClient
webhooks_list = RegistryWebhooksClient().list_webhooks(model_name="<model-name>")
Response
{"webhooks": [{
"id":"1234567890",
"creation_timestamp":1571440826026,
"last_updated_timestamp":1582768296651,
"status": "ACTIVE",
"events":["MODEL_VERSION_CREATED"],
"http_url_spec": {
"url": "https://hooks.slack.com/services/...",
"enable_ssl_verification": True
}},
{
"id":"1234567891",
"creation_timestamp":1591440826026,
"last_updated_timestamp":1591440826026,
"status":"TEST_MODE",
"events":["TRANSITION_REQUEST_CREATED"],
"job_spec": {
"job_id": "1",
"workspace_url": "https://my-databricks-workspace.com"
}}]}
التدريب
الوحدة النمطية
Configure and Activate Webhooks - Training
This module explains how to configure and activate webhooks.