Azure Data Factory ve Azure Synapse Analytics'te web etkinliği

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

Bahşiş

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

Web Etkinliği, Azure Data Factory veya Synapse işlem hattından özel rest uç noktasını çağırmak için kullanılabilir. Etkinlik tarafından kullanılacak ve erişilecek veri kümelerini ve bağlı hizmetleri geçirebilirsiniz.

Dekont

Web Etkinliği hem özel sanal ağda barındırılan URL'leri çağırmak için hem de şirket içinde barındırılan tümleştirme çalışma zamanı tarafından desteklenir. Tümleştirme çalışma zamanının URL uç noktasında bir görüş alanı olmalıdır.

Dekont

Desteklenen çıktı yanıtı yük boyutu üst sınırı 4 MB'tır.

Kullanıcı arabirimiyle Web etkinliği oluşturma

İşlem hattında Web etkinliği kullanmak için aşağıdaki adımları tamamlayın:

  1. İşlem hattı Etkinlikleri bölmesinde Web'i arayın ve bir Web etkinliğini işlem hattı tuvaline sürükleyin.

  2. Tuvalde henüz seçili değilse yeni Web etkinliğini ve ayrıntılarını düzenlemek için Ayarlar sekmesini seçin.

    Shows the UI for a Web activity.

  3. Değişmez BIR URL dizesi veya dinamik ifadelerin, işlevlerin, sistem değişkenlerinin veya diğer etkinliklerden gelen çıkışların herhangi bir bileşimi olabilecek bir URL belirtin. İstekle birlikte gönderilecek diğer ayrıntıları sağlayın.

  4. Etkinliğin çıkışını başka herhangi bir etkinliğe giriş olarak kullanın ve hedef etkinlikte dinamik içeriğin desteklendiği her yerde çıkışa başvurun.

Sözdizimi

{
   "name":"MyWebActivity",
   "type":"WebActivity",
   "typeProperties":{
      "method":"Post",
      "url":"<URLEndpoint>",
      "httpRequestTimeout": "00:01:00"
      "connectVia": {
          "referenceName": "<integrationRuntimeName>",
          "type": "IntegrationRuntimeReference"
      }
      "headers":{
         "Content-Type":"application/json"
      },
      "authentication":{
         "type":"ClientCertificate",
         "pfx":"****",
         "password":"****"
      },
      "datasets":[
         {
            "referenceName":"<ConsumedDatasetName>",
            "type":"DatasetReference",
            "parameters":{
               ...
            }
         }
      ],
      "linkedServices":[
         {
            "referenceName":"<ConsumedLinkedServiceName>",
            "type":"LinkedServiceReference"
         }
      ]
   }
}

Tür özellikleri

Özellik Açıklama İzin verilen değerler Zorunlu
name Web etkinliğinin adı String Evet
type WebActivity olarak ayarlanmalıdır. String Evet
yöntemi Hedef uç nokta için REST API yöntemi. Dize.

Desteklenen Türler: "GET", "POST", "PUT", "PATCH", "DELETE"
Evet
url Hedef uç nokta ve yol Dize (veya dizenin resultType değeriyle ifade). Etkinlik uç noktadan yanıt almazsa, 1 dakikanın sonunda zaman aşımına uğrar ve hata verir. httpRequestTimeout özelliğini güncelleştirerek bu yanıt zaman aşımını 10 dk'ya kadar artırabilirsiniz Evet
httpRequestTimeout Yanıt zaman aşımı süresi En yüksek değer 00:10:00 olarak hh:mm:ss. Açıkça belirtilmezse varsayılan değer 00:01:00'dır No
üst bilgiler İsteğe gönderilen üst bilgiler. Örneğin, bir isteğin dilini ve türünü ayarlamak için: "headers" : { "Accept-Language": "en-us", "Content-Type": "application/json" }. Dize (veya dizenin resultType değeriyle ifade) No
gövde Uç noktaya gönderilen yükü temsil eder. Dize (veya dizenin resultType değeriyle ifade).

İstek yükü şemasını İstek yükü şeması bölümünde bulabilirsiniz.
POST/PUT/PATCH yöntemleri için gereklidir. DELETE yöntemi için isteğe bağlı.
kimlik doğrulaması Uç noktayı çağırmak için kullanılan kimlik doğrulama yöntemi. Desteklenen Türler şunlardır: "Temel, İstemci Sertifikası, Sistem Tarafından Atanan Yönetilen Kimlik, Kullanıcı Tarafından Atanan Yönetilen Kimlik, Hizmet Sorumlusu." Daha fazla bilgi için kimlik doğrulaması bölümüne bakın. Kimlik doğrulaması gerekli değilse bu özelliği hariç tutun. Dize (veya dizenin resultType değeriyle ifade) No
turnOffAsync HTTP 202 Yanıtının yanıt üst bilgisinde konum alanında HTTP GET çağırmayı devre dışı bırakma seçeneği. True olarak ayarlanırsa, yanıt üst bilgisinde verilen http konumunda HTTP GET çağrısını durdurur. False olarak ayarlanırsa http yanıt üst bilgilerinde verilen konumda HTTP GET çağrısını çağırmaya devam eder. İzin verilen değerler false (varsayılan) ve true değerleridir. No
disableCertValidation Sunucu tarafı sertifika doğrulamasını kaldırır (standart CA sertifikası kullanmayan güvenilir bir sunucuya bağlanmıyorsanız önerilmez). İzin verilen değerler false (varsayılan) ve true değerleridir. No
veri kümeleri Uç noktaya geçirilen veri kümelerinin listesi. Veri kümesi başvuruları dizisi. Boş bir dizi olabilir. Evet
linkedServices Uç noktaya geçirilen bağlı hizmetlerin listesi. Bağlı hizmet başvuruları dizisi. Boş bir dizi olabilir. Evet
connectVia Veri deposuna bağlanmak için kullanılacak tümleştirme çalışma zamanı . Azure tümleştirme çalışma zamanını veya şirket içinde barındırılan tümleştirme çalışma zamanını (veri deponuz özel bir ağdaysa) kullanabilirsiniz. Bu özellik belirtilmezse, hizmet varsayılan Azure tümleştirme çalışma zamanını kullanır. Tümleştirme çalışma zamanı başvurusu. No

Dekont

Web etkinliğinin çağırdığı REST uç noktaları JSON türünde bir yanıt döndürmelidir. Etkinlik uç noktadan yanıt almazsa, 1 dakikanın sonunda zaman aşımına uğrar ve hata verir. Zaman Uyumsuz İstek-Yanıt düzenini destekleyen uç noktalar için web etkinliği zaman aşımına uğramadan (7 güne kadar) veya uç noktalar işin tamamlandığını belirtene kadar beklemeye devam eder.

Aşağıdaki tabloda JSON içeriğinin gereksinimleri gösterilmektedir:

Değer türü Request body Yanıt gövdesi
JSON nesnesi Desteklenir Desteklenir
JSON dizisi Desteklenen
(Şu anda JSON dizileri bir hatanın sonucu olarak çalışmıyor. Bir düzeltme devam ediyor.)
Desteklenmeyen
JSON değeri Desteklenir Desteklenmeyen
JSON olmayan tür Desteklenmeyen Desteklenmeyen

Kimlik Doğrulaması

Aşağıda web etkinliğinde desteklenen kimlik doğrulama türleri yer almaktadır.

Hiçbiri

Kimlik doğrulaması gerekli değilse , "authentication" özelliğini eklemeyin.

Temel

Temel kimlik doğrulamasıyla kullanılacak kullanıcı adını ve parolayı belirtin.

"authentication":{
   "type":"Basic",
   "username":"****",
   "password":"****"
}

İstemci sertifikası

PFX dosyasının base64 ile kodlanmış içeriğini ve parolasını belirtin.

"authentication":{
   "type":"ClientCertificate",
   "pfx":"****",
   "password":"****"
}

Sertifikanın bir x509 sertifikası olması gerekir. PFX dosyasına dönüştürme için sık kullandığınız yardımcı programı kullanabilirsiniz. Base-64 kodlaması için aşağıdaki PowerShell kod parçacığını kullanabilirsiniz.

$fileContentBytes = get-content 'enr.dev.webactivity.pfx' -AsByteStream

[System.Convert]::ToBase64String($fileContentBytes) | Out-File ‘pfx-encoded-bytes.txt’

Yönetilen Kimlik

Veri fabrikası veya Synapse çalışma alanı örneği için yönetilen kimlik kullanılarak erişim belirtecinin isteneceği kaynak uri'sini belirtin. Azure Kaynak Yönetimi API'sini çağırmak için kullanın https://management.azure.com/. Yönetilen kimliklerin nasıl çalıştığı hakkında daha fazla bilgi için Azure kaynakları için yönetilen kimliklere genel bakış sayfasına bakın.

"authentication": {
	"type": "MSI",
	"resource": "https://management.azure.com/"
}

Dekont

Veri fabrikanız veya Synapse çalışma alanınız bir git deposuyla yapılandırılmışsa, temel veya istemci sertifikası kimlik doğrulamasını kullanmak için kimlik bilgilerinizi Azure Key Vault'ta depolamanız gerekir. Hizmet, parolaları git'te depolamaz.

İstek yükü şeması

POST/PUT yöntemini kullandığınızda gövde özelliği uç noktaya gönderilen yükü temsil eder. Yükün bir parçası olarak bağlı hizmetleri ve veri kümelerini geçirebilirsiniz. Yükün şeması aşağıdadır:

{
    "body": {
        "myMessage": "Sample",
        "datasets": [{
            "name": "MyDataset1",
            "properties": {
                ...
            }
        }],
        "linkedServices": [{
            "name": "MyStorageLinkedService1",
            "properties": {
                ...
            }
        }]
    }
}

Örnek

Bu örnekte, işlem hattındaki web etkinliği bir REST uç noktası çağırır. Uç noktaya bir Azure SQL bağlı hizmeti ve bir Azure SQL veri kümesi geçirir. REST uç noktası, mantıksal SQL sunucusuna bağlanmak için Azure SQL bağlantı dizesi kullanır ve SQL server örneğinin adını döndürür.

İşlem hattı tanımı

{
    "name": "<MyWebActivityPipeline>",
    "properties": {
        "activities": [
            {
                "name": "<MyWebActivity>",
                "type": "WebActivity",
                "typeProperties": {
                    "method": "Post",
                    "url": "@pipeline().parameters.url",
                    "headers": {
                        "Content-Type": "application/json"
                    },
                    "authentication": {
                        "type": "ClientCertificate",
                        "pfx": "*****",
                        "password": "*****"
                    },
                    "datasets": [
                        {
                            "referenceName": "MySQLDataset",
                            "type": "DatasetReference",
                            "parameters": {
                                "SqlTableName": "@pipeline().parameters.sqlTableName"
                            }
                        }
                    ],
                    "linkedServices": [
                        {
                            "referenceName": "SqlLinkedService",
                            "type": "LinkedServiceReference"
                        }
                    ]
                }
            }
        ],
        "parameters": {
            "sqlTableName": {
                "type": "String"
            },
            "url": {
                "type": "String"
            }
        }
    }
}

İşlem hattı parametre değerleri

{
    "sqlTableName": "department",
    "url": "https://adftes.azurewebsites.net/api/execute/running"
}

Web hizmeti uç noktası kodu


[HttpPost]
public HttpResponseMessage Execute(JObject payload)
{
    Trace.TraceInformation("Start Execute");

    JObject result = new JObject();
    result.Add("status", "complete");

    JArray datasets = payload.GetValue("datasets") as JArray;
    result.Add("sinktable", datasets[0]["properties"]["typeProperties"]["tableName"].ToString());

    JArray linkedServices = payload.GetValue("linkedServices") as JArray;
    string connString = linkedServices[0]["properties"]["typeProperties"]["connectionString"].ToString();

    System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection(connString);

    result.Add("sinkServer", sqlConn.DataSource);

    Trace.TraceInformation("Stop Execute");

    return this.Request.CreateResponse(HttpStatusCode.OK, result);
}

Desteklenen diğer denetim akışı etkinliklerine bakın: