انسخ البيانات من نقطة نهاية HTTP باستخدام Azure Data Factory أو Azure Synapse Analytics

ينطبق على: Azure Data Factory Azure Synapse Analytics

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

توضح هذه المقالة كيفية استخدام نسخ النشاط في Azure Data Factory وAzure Synapse لنسخ البيانات من نقطة نهاية HTTP. تعتمد هذه المقالة على مقالة نشاط النسخ التي تقدم نظرة عامة على نشاط النسخ.

الفرق بين موصل HTTP وموصل REST وموصل جدول الويب هو:

  • موصل REST يدعم بشكل خاص نسخ البيانات من واجهات برمجة التطبيقات RESTful؛
  • موصل HTTP عام لاسترداد البيانات من أي نقطة نهاية HTTP، على سبيل المثال لتحميل الملف. قبل أن يصبح موصل REST متاحًا، قد تستخدم موصل HTTP لنسخ البيانات من واجهات برمجة تطبيقات REST والتي تكون مدعومة ولكنها أقل فاعلية مقارنة بموصل REST.
  • موصل جدول ويب يستخرج محتوى جدول من صفحة ويب HTML.

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

موصل HTTP هذا مدعوم للإمكانيات التالية:

القدرات المدعومة IR
نشاط النسخ (مصدر/-) (1) (2)
نشاط البحث (1) (2)

① وقت تشغيل تكامل Azure ② وقت تشغيل التكامل المستضاف ذاتيًا

للحصول على قائمة مخازن البيانات المعتمدة كمصادر ومواضع تلقي، راجع مخازن البيانات المعتمدة.

يمكنك استخدام موصل HTTP هذا لإجراء ما يلي:

  • استرداد البيانات من نقطة نهاية HTTP/S باستخدام أساليب HTTP GET أو POST.
  • استرجع البيانات باستخدام أحد المصادقات التالية: Anonymous أو Basic أو Digest أو Windows أو ClientCertificate.
  • انسخ استجابة HTTP كما هي أو قم بتحليلها باستخدام تنسيقات الملفات المدعومة وبرامج ترميز الضغط.

تلميح

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

المتطلبات الأساسية

إذا كان مخزن البيانات الخاص بك موجوداً داخل شبكة محلية، أو شبكة Azure ظاهرية، أو Amazon Virtual Private Cloud، فأنت بحاجة إلى تكوين وقت تشغيل تكامل مستضاف ذاتياً للاتصال به.

إذا كان مخزن البيانات الخاص بك عبارة عن خدمة بيانات سحابية مُدارة، يمكنك استخدام Azure Integration Runtime. إذا كان الوصول مقتصراً على عناوين IP التي تمت الموافقة عليها في قواعد جدار الحماية، يمكنك إضافة عناوين IP لـ Azure Integration Runtime إلى قائمة السماح.

يمكنك أيضاً استخدام ميزة وقت تشغيل تكامل الشبكة الظاهرية المُدارة في Azure Data Factory للوصول إلى الشبكة المحلية دون تثبيت وقت تشغيل تكامل مستضاف ذاتياً وتكوينه.

لمزيد من المعلومات حول آليات وخيارات أمان الشبكة التي يدعمها Data Factory، راجع إستراتيجيات الوصول إلى البيانات.

الشروع في العمل

لتنفيذ نشاط النسخ باستخدام أحد المسارات، يمكنك استخدام إحدى الأدوات أو عدد تطوير البرامج التالية:

إنشاء خدمة مرتبطة بمصدر HTTP باستخدام واجهة المستخدم

استخدم الخطوات التالية لإنشاء خدمة مرتبطة بمصدر HTTP في واجهة مستخدم مدخل Microsoft Azure.

  1. استعرض للوصول إلى علامة التبويب "Manage" في مصنع بيانات Azure أو مساحة عمل Synapse، وحدد "Linked Services"، ثم انقر فوق "New":

  2. البحث عن HTTP وتحديد الرابط HTTP.

    لقطة شاشة لموصل HTTP.

  3. قم بتكوين تفاصيل الخدمة، واختبر الاتصال، وأنشئ الخدمة المرتبطة الجديدة.

    لقطة شاشة لتكوين خدمة مرتبطة بـ HTTP.

تفاصيل تكوين الموصل

توفر الأقسام التالية تفاصيل حول الخصائص التي يمكنك استخدامها لتعريف الكيانات الخاصة بموصل HTTP.

خصائص الخدمة المرتبطة

يتم اعتماد الخصائص التالية لخدمة HTTP المرتبطة:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع إلى: HttpServer. ‏‏نعم‬
عنوان URL عنوان URL الأساسي لخادم الويب. ‏‏نعم‬
enableServerCertificateValidation حدد ما إذا كنت تريد تمكين التحقق من صحة شهادة TLS/SSL للخادم عند الاتصال بنقطة نهاية HTTP. عندما يستخدم خادم HTTPS شهادة موقعة ذاتيًا، اضبطها على false. لا
(القيمة الافتراضية هي true)
نوع المصادقة تحديد نوع المصادقة. القيم المسموح بها هي: AnonymousوBasic وDigest وWindows وClientCertificate. يمكنك أيضاً تكوين رءوس المصادقة في الخاصية authHeader. راجع الأقسام التي تتبع هذا الجدول لمزيد من الخصائص ونماذج JSON لأنواع المصادقة هذه. ‏‏نعم‬
authHeaders رؤوس طلب HTTP إضافية للمصادقة.
على سبيل المثال، لاستخدام مصادقة مفتاح API، يمكنك تحديد نوع المصادقة ك "Anonymous" وتحديد مفتاح API في العنوان.
لا
connectVia وقت تشغيل التكامل المطلوب استخدامه للاتصال بمخزن البيانات. تعرف على المزيد من قسم المتطلبات الأساسية. إذا لم يتم التحديد، يتم استخدام وقت تشغيل تكامل Azure الافتراضي. لا

استخدام المصادقة الأساسية أو الموجزة أو Windows

تعيين خاصية authenticationType إلى Basic أو Digest أو Windows. بالإضافة إلى الخصائص العامة الموصوفة في القسم السابق، حدد الخصائص التالية:

الخاصية الوصف مطلوب
userName اسم المستخدم لاستخدام الوصول إلى نقطة النهاية HTTP. ‏‏نعم‬
كلمة المرور كلمة المرور للمستخدم (قيمة userName). وضع علامة على هذا الحقل كنوع SecureString لتخزينه بشكل آمن. يمكنك أيضاً الإشارة إلى سر مخزن في Azure Key Vault. ‏‏نعم‬

مثال

{
    "name": "HttpLinkedService",
    "properties": {
        "type": "HttpServer",
        "typeProperties": {
            "authenticationType": "Basic",
            "url" : "<HTTP endpoint>",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

استخدام مصادقة ClientCertificate

لاستخدام مصادقة ClientCertificate، قم بتعيين الخاصية authenticationType إلى ClientCertificate. بالإضافة إلى الخصائص العامة الموصوفة في القسم السابق، حدد الخصائص التالية:

الخاصية الوصف مطلوب
embeddedCertData بيانات الشهادة بترميز Base64. تحديد إما embeddedCertData أو certThumbprint.
certThumbprint بصمة الشهادة المثبتة في مخزن شهادات جهاز Integration Runtime Machine المستضاف ذاتيًا. يتم تطبيقه فقط عند تحديد نوع وقت تشغيل التكامل المُستضاف ذاتيًا في خاصية connectVia. تحديد إما embeddedCertData أو certThumbprint.
كلمة المرور كلمة المرور المرتبطة بالشهادة. وضع علامة على هذا الحقل كنوع SecureString لتخزينه بشكل آمن. يمكنك أيضاً الإشارة إلى سر مخزن في Azure Key Vault. لا

إذا كنت تستخدم certThumbprint للمصادقة وتم تثبيت الشهادة في المخزن الشخصي للكمبيوتر المحلي، فامنح أذونات القراءة لوقت تشغيل التكامل المستضاف ذاتيًا:

  1. افتح Microsoft Management Console (MMC). أضف Certificates الإضافية التي تستهدف Local Computer.
  2. قم بتوسيع Certificates>Personal، ثم حدد Certificates.
  3. انقر بزر الماوس الأيمن فوق الشهادة من المتجر الشخصي، ثم حدد All Tasks>Manage Private Keys.
  4. في علامة التبويب الأمان، أضف حساب المستخدم الذي تعمل ضمنه خدمة مضيف وقت تشغيل التكامل (DIAHostService)، مع إمكانية الوصول للقراءة إلى الشهادة.
  5. يقوم موصل HTTP بتحميل الشهادات الموثوقة فقط. إذا كنت تستخدم شهادة موقعة ذاتيا أو غير صادرة عن مرجع مصدق، لتمكين الثقة، يجب أيضا تثبيت الشهادة في أحد المتاجر التالية:
    • الأشخاص الموثوق بهم
    • المراجع مصدقة الجذر للجهات الخارجية
    • الشهادات الجذر الموثوقة

مثال 1: استخدام certThumbprint

{
    "name": "HttpLinkedService",
    "properties": {
        "type": "HttpServer",
        "typeProperties": {
            "authenticationType": "ClientCertificate",
            "url": "<HTTP endpoint>",
            "certThumbprint": "<thumbprint of certificate>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

مثال 2: استخدام embeddedCertData

{
    "name": "HttpLinkedService",
    "properties": {
        "type": "HttpServer",
        "typeProperties": {
            "authenticationType": "ClientCertificate",
            "url": "<HTTP endpoint>",
            "embeddedCertData": "<Base64-encoded cert data>",
            "password": {
                "type": "SecureString",
                "value": "password of cert"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

استخدام رءوس المصادقة

بالإضافة إلى ذلك، يمكنك تكوين رؤوس الطلبات للمصادقة مع أنواع المصادقة المضمنة.

مثال: استخدام مصادقة مفتاح API

{
    "name": "HttpLinkedService",
    "properties": {
        "type": "HttpServer",
        "typeProperties": {
            "url": "<HTTP endpoint>",
            "authenticationType": "Anonymous",
            "authHeader": {
                "x-api-key": {
                    "type": "SecureString",
                    "value": "<API key>"
                }
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

خصائص مجموعة البيانات

للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف مجموعات البيانات، راجع مقالة مجموعات البيانات.

يدعم Azure Data Factory تنسيقات الملفات التالية. راجع كل مقالة للاطلاع على الإعدادات المستندة إلى التنسيق.

تُدعم الخصائص التالية لـ HTTP ضمن locationالإعدادات في مجموعة البيانات المستندة إلى تنسيق:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع ضمن location في مجموعة البيانات إلى HTTPServerLocation. ‏‏نعم‬
relativeUrl عنوان "URL" نسبي للمورد الذي يحتوي على البيانات. ينسخ موصل HTTP البيانات من URL المجمع: [URL specified in linked service][relative URL specified in dataset]. لا

إشعار

حجم حمولة طلب HTTP المعتمدة حوالي 500 كيلوبايت. إذا كان حجم الحمولة التي تريد تمريرها إلى نقطة نهاية الويب أكبر من 500 كيلوبايت، ففكر في تجميع الحمولة في أجزاء أصغر.

مثال:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<HTTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "HttpServerLocation",
                "relativeUrl": "<relative url>"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

خصائص نشاط النسخ

يوفر هذا القسم قائمة بالخصائص التي يدعمها مصدر HTTP.

للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف الأنشطة، راجع المسارات.

HTTP كمصدر

يدعم Azure Data Factory تنسيقات الملفات التالية. راجع كل مقالة للاطلاع على الإعدادات المستندة إلى التنسيق.

تُدعم الخصائص التالية لـ HTTP ضمن storeSettingsالإعدادات في مصدر النسخ المستند إلى تنسيق:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع ضمن storeSettingsإلى HTTPReadSettings. ‏‏نعم‬
requestMethod أسلوب HTTP.
القيم المسموح بها هي true (default) وPOST.
لا
additionalHeaders رؤوس طلب HTTP إضافية. لا
requestBody النص الأساسي لطلب HTTP. لا
httpRequestTimeout المهلة (قيمة TimeSpan) لطلب HTTP للحصول على استجابة. هذه القيمة هي المهلة للحصول على استجابة، وليست المهلة لقراءة بيانات الاستجابة. القيمة الافتراضية هي 00:01:40. لا
maxConcurrentConnections الحد الأعلى للاتصالات المتزامنة التي تم إنشاؤها إلى مخزن البيانات أثناء تشغيل النشاط. حدد قيمة فقط عندما تريد تحديد الاتصالات المتزامنة. لا

مثال:

"activities":[
    {
        "name": "CopyFromHTTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "HttpReadSettings",
                    "requestMethod": "Post",
                    "additionalHeaders": "<header key: header value>\n<header key: header value>\n",
                    "requestBody": "<body for POST HTTP request>"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

بحث عن خصائص النشاط

لمعرفة تفاصيل حول الخصائص، تحقق من نشاط البحث.

النماذج القديمة

إشعار

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

نموذج مجموعة البيانات القديم

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مجموعة البيانات إلى HttpFile. ‏‏نعم‬
relativeUrl عنوان "URL" نسبي للمورد الذي يحتوي على البيانات. في حالة عدم تحديد هذه الخاصية، يتم استخدام عنوان URL المحدد في تعريف الخدمة المرتبط فقط. لا
requestMethod أسلوب HTTP. القيم المسموح بها هي true (default) وPOST. لا
additionalHeaders رؤوس طلب HTTP إضافية. لا
requestBody النص الأساسي لطلب HTTP. لا
format إذا كنت ترغب في استرداد البيانات من نقطة نهاية HTTP كما هي دون تحليلها، ثم نسخ البيانات إلى مخزن مستند إلى ملف، فتخط قسم التنسيق في كل من تعريفات مجموعة بيانات الإدخال والإخراج.

إذا كنت تريد تحليل محتوى استجابة HTTP أثناء النسخ، يتم دعم أنواع تنسيقات الملفات التالية: TextFormat، وJsonFormat، وAvroFormat، OrcFormat، وParquetFormat. قم بتعيين خاصية "type" ضمن التنسيق إلى إحدى هذه القيم. للحصول على مزيدٍ من المعلومات، انظر JSON format، وText format، وAvro format، وORC format، وParquet format.
لا
ضغط حدد نوع ضغط البيانات ومستواه. للحصول على مزيدٍ من المعلومات، راجع تنسيقات الملفات المدعومة وبرامج ضغط الوسائط وفكها.

الأنواع المدعومة: GZip وDeflate وBZip2، وZipDeflate.
المستويات المدعومة: Optimal وFastest.
لا

إشعار

حجم حمولة طلب HTTP المعتمدة حوالي 500 كيلوبايت. إذا كان حجم الحمولة التي تريد تمريرها إلى نقطة نهاية الويب أكبر من 500 كيلوبايت، ففكر في تجميع الحمولة في أجزاء أصغر.

مثال 1: استخدام الأسلوب Get (افتراضي)

{
    "name": "HttpSourceDataInput",
    "properties": {
        "type": "HttpFile",
        "linkedServiceName": {
            "referenceName": "<HTTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "relativeUrl": "<relative url>",
            "additionalHeaders": "Connection: keep-alive\nUser-Agent: Mozilla/5.0\n"
        }
    }
}

مثال 2: استخدام أسلوب Post

{
    "name": "HttpSourceDataInput",
    "properties": {
        "type": "HttpFile",
        "linkedServiceName": {
            "referenceName": "<HTTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "relativeUrl": "<relative url>",
            "requestMethod": "Post",
            "requestBody": "<body for POST HTTP request>"
        }
    }
}

نموذج مصدر نشاط النسخ القديم

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع لمصدر نشاط النسخ على HTTPSource. ‏‏نعم‬
httpRequestTimeout المهلة (قيمة TimeSpan) لطلب HTTP للحصول على استجابة. هذه القيمة هي المهلة للحصول على استجابة، وليست المهلة لقراءة بيانات الاستجابة. القيمة الافتراضية هي 00:01:40. لا

مثال

"activities":[
    {
        "name": "CopyFromHTTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<HTTP input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "HttpSource",
                "httpRequestTimeout": "00:01:00"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

للحصول على قائمة مخازن البيانات المعتمدة كمصادر ومواضع تلقٍّ، راجع مخازن البيانات المعتمدة والتنسيقات.