Aktivitas Web in Azure Data Factory dan Azure Synapse Analytics

BERLAKU UNTUK:Azure Data Factory Azure Synapse Analytics

Tip

Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!

Aktivitas Web dapat digunakan untuk memanggil titik akhir REST kustom dari alur Azure Data Factory atau Synapse. Anda dapat meneruskan himpunan data dan layanan tertaut untuk dipakai dan diakses oleh aktivitas.

Catatan

Aktivitas Web didukung untuk memanggil URL yang dihost di jaringan virtual pribadi juga dengan memanfaatkan runtime integrasi yang dihost sendiri. Runtime integrasi harus memiliki garis pandang ke titik akhir URL.

Catatan

Ukuran payload respons output maksimum yang didukung adalah 4 MB.

Membuat aktivitas Web dengan UI

Untuk menggunakan aktivitas Web dalam alur, selesaikan langkah-langkah berikut:

  1. Cari Web di panel Aktivitas alur, dan seret aktivitas Web ke kanvas alur.

  2. Pilih aktivitas Web baru di kanvas jika belum dipilih, dan tab Pengaturannya, untuk mengedit detail aktivitas.

    Shows the UI for a Web activity.

  3. Tentukan URL, yang bisa berupa ekspresi string URL literal, atau kombinasi ekspresi dinamis, fungsi, variabel sistem, atau output dari aktivitas lain. Berikan detail lain yang akan diajukan bersama permintaan.

  4. Gunakan output dari aktivitas sebagai input ke aktivitas lain, dan referensikan output di mana saja konten dinamis didukung dalam aktivitas tujuan.

Sintaks

{
   "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"
         }
      ]
   }
}

Properti jenis

Properti Deskripsi Nilai yang diizinkan Wajib
nama Nama aktivitas web String Ya
jenis Harus diatur ke WebActivity. String Ya
metode Metode Rest API untuk titik akhir target. String.

Jenis yang Didukung: "GET", "POST", "PUT", "PATCH", "DELETE"
Ya
url Titik akhir dan jalur target String (atau ekspresi dengan resultType string). Aktivitas akan menghabiskan waktu pada menit 1 dengan kesalahan jika tidak menerima respons dari titik akhir. Anda dapat meningkatkan batas waktu respons ini hingga 10 menit dengan memperbarui properti httpRequestTimeout Ya
httpRequestTimeout Durasi batas waktu respons jj:mm:dd dengan nilai maksimal sebagai 00:10:00. Jika tidak ditentukan secara eksplisit default ke 00:01:00 Tidak
header Headers yang dikirim ke permintaan. Misalnya, untuk mengatur bahasa pemrograman dan mengetik berdasarkan permintaan: "headers" : { "Accept-Language": "en-us", "Content-Type": "application/json" }. String (atau ekspresi dengan resultType string) Tidak
body Mewakili muatan yang dikirim ke titik akhir. String (atau ekspresi dengan resultType string).

Lihat skema permintaan payload di bagian Permintaan skema muatan.
Diperlukan untuk metode POST/PUT/PATCH. Opsional untuk metode HAPUS.
Autentikasi Metode autentikasi digunakan untuk memanggil titik akhir. Jenis yang Didukung adalah "Dasar, Sertifikat Klien, Identitas Terkelola yang Ditetapkan Sistem, Identitas Terkelola yang Ditetapkan Pengguna, Perwakilan Layanan." Untuk informasi selengkapnya, lihat bagian Autentikasi. Jika autentikasi tidak diperlukan, kecualikan properti ini. String (atau ekspresi dengan resultType string) Tidak
turnOffAsync Opsi untuk menonaktifkan pemanggilan HTTP GET pada bidang lokasi di header respons dari Respons HTTP 202. Jika diatur true, maka ia akan berhenti memanggil HTTP GET pada lokasi http yang diberikan di header respons. Jika diatur false maka ia akan terus memanggil panggilan HTTP GET pada lokasi yang diberikan di header respons http. Nilai yang diperbolehkan adalah false (default) dan true. Tidak
disableCertValidation Menghapus validasi sertifikat sisi server (tidak disarankan kecuali Anda menyambungkan ke server tepercaya yang tidak menggunakan sertifikasi OS standar). Nilai yang diperbolehkan adalah false (default) dan true. Tidak
datasets Daftar himpunan data diteruskan ke titik akhir. Array referensi himpunan data. Bisa menjadi array kosong. Ya
linkedServices Daftar layanan tertaut diteruskan ke titik akhir. Array referensi layanan tertaut. Bisa menjadi array kosong. Ya
connectVia Runtime integrasi yang akan digunakan untuk menyambungkan ke penyimpanan data. Anda dapat menggunakan runtime integrasi Azure atau runtime integrasi yang dihost sendiri (jika penyimpanan data Anda berada di jaringan privat). Jika properti ini tidak ditentukan, layanan menggunakan runtime integrasi Azure default. Referensi runtime integrasi. Tidak

Catatan

Titik akhir REST yang digunakan aktivitas web harus mengembalikan respons tipe JSON. Aktivitas akan menghabiskan waktu pada menit 1 dengan kesalahan jika tidak menerima respons dari titik akhir. Untuk titik akhir yang mendukung pola Request-Reply Asinkron, aktivitas web akan terus menunggu tanpa waktu habis (hingga 7 hari) atau hingga titik akhir menandai penyelesaian pekerjaan.

Tabel berikut ini memperlihatkan persyaratan untuk konten JSON:

Jenis nilai Isi permintaan Isi respons
Objek JSON Didukung Didukung
Array JSON Didukung
(Saat ini, array JSON tidak berfungsi sebagai akibat dari bug. Perbaikan sedang berlangsung.)
Tidak didukung
Nilai JSON Didukung Tidak didukung
Tipe non-JSON Tidak didukung Tidak didukung

Autentikasi

Di bawah ini adalah tipe autentikasi yang didukung dalam aktivitas web.

Tidak ada

Jika autentikasi tidak diperlukan, jangan sertakan properti "autentikasi".

Dasar

Tentukan nama pengguna dan kata sandi yang akan digunakan dengan autentikasi dasar.

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

Sertifikat klien

Tentukan konten yang dikodekan base64 dari file PFX dan kata sandi.

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

Sertifikat harus berupa sertifikat x509. Untuk konversi ke file PFX, Anda dapat menggunakan utilitas favorit Anda. Untuk pengodean base-64, Anda dapat menggunakan cuplikan PowerShell berikut.

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

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

Identitas Terkelola

Tentukan uri sumber daya yang token aksesnya akan diminta menggunakan identitas terkelola untuk pabrik data atau instans ruang kerja Synapse. Untuk memanggil Azure Resource Management API, gunakan https://management.azure.com/. Untuk informasi selengkapnya tentang identitas terkelola bekerja, lihat Identitas terkelola untuk gambaran umum sumber daya Azure.

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

Catatan

Jika pabrik data atau ruang kerja Synapse dikonfigurasi dengan repositori git, Anda harus menyimpan informasi masuk Anda di Azure Key Vault untuk menggunakan autentikasi sertifikat dasar atau klien. Layanan ini tidak menyimpan kata sandi di git.

Minta skema payload

Ketika Anda menggunakan metode POST/PUT, properti bodi mewakili muatan yang dikirim ke titik akhir. Anda dapat meneruskan layanan dan himpunan data tertaut sebagai bagian dari payload. Berikut adalah skema untuk payload:

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

Contoh

Dalam contoh ini, aktivitas web di alur memanggil titik akhir REST. Ini melewati layanan tertaut Azure SQL dan himpunan data Azure SQL ke titik akhir. Titik akhir REST menggunakan string koneksi Azure SQL untuk menyambungkan ke server SQL logis dan mengembalikan nama instans server SQL.

Definisi alur

{
    "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"
            }
        }
    }
}

Nilai parameter alur

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

Kode titik akhir layanan web


[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);
}

Lihat aktivitas alur kontrol yang didukung lainnya: