Membuat pekerjaan Stream Analytics menggunakan Azure PowerShell

Modul Azure PowerShell digunakan untuk membuat dan mengelola sumber daya Azure menggunakan cmdlet atau skrip PowerShell. Mulai cepat ini menunjukkan cara menggunakan modul Azure PowerShell untuk menyebarkan dan menjalankan pekerjaan Azure Stream Analytics.

Sampel pekerjaan membaca data streaming dari perangkat IoT Hub. Data input dihasilkan oleh simulator online Raspberry Pi. Pekerjaan Azure Stream Analytics mengubah data menggunakan bahasa kueri Azure Stream Analytics untuk memfilter pesan dengan suhu lebih besar dari 27°. Kemudian, ia menulis peristiwa output yang dihasilkan ke dalam file dalam penyimpanan blob.

Sebelum Anda mulai

  • Jika Anda tidak memiliki langganan Azure, buat akun gratis.
  • Mulai cepat ini memerlukan modul Azure PowerShell. Jalankan Get-Module -ListAvailable Az untuk menemukan versi yang terpasang di mesin lokal Anda. Jika Anda perlu memasang atau meningkatkan, lihat Pasang modul Azure PowerShell.
  • Beberapa tindakan IoT Hub tidak didukung oleh Azure PowerShell dan harus diselesaikan menggunakan Azure CLI versi 2.0.70 atau yang lebih baru dan ekstensi IoT untuk Azure CLI. Pasang Azure CLI dan az extension add --name azure-iot gunakan untuk memasang ekstensi IoT.

Masuk ke Azure

Masuk ke langganan Azure Anda dengan Connect-AzAccount perintah, dan masukkan kredensial Azure Anda di browser pop-up:

# Connect to your Azure account
Connect-AzAccount

Jika Anda memiliki lebih dari satu langganan, pilih langganan yang ingin Anda gunakan untuk mulai cepat ini dengan menjalankan cmdlet berikut. Pastikan untuk mengganti <your subscription name> dengan nama langganan Anda:

# List all available subscriptions.
Get-AzSubscription

# Select the Azure subscription you want to use to create the resource group and resources.
Get-AzSubscription -SubscriptionName "<your subscription name>" | Select-AzSubscription

Membuat grup sumber daya

Buat grup sumber daya Azure menggunakan New-AzResourceGroup. Grup sumber daya adalah kontainer logis tempat sumber daya Azure disebarkan dan dikelola.

$resourceGroup = "StreamAnalyticsRG"
$location = "WestUS2"
New-AzResourceGroup `
    -Name $resourceGroup `
    -Location $location

Menyiapkan data input

Sebelum menetapkan pekerjaan Stream Analytics, siapkan data yang dikonfigurasi sebagai input ke pekerjaan.

Blok kode Azure CLI berikut memiliki banyak perintah untuk menyiapkan data input yang diperlukan oleh pekerjaan. Tinjau bagian berikut untuk memahami kode.

  1. Di jendela PowerShell Anda, jalankan az login perintah untuk masuk ke akun Azure Anda.

    Saat Anda berhasil masuk, Azure CLI mengembalikan daftar langganan Anda. Salin langganan yang Anda gunakan untuk mulai cepat ini dan jalankan perintah untuk memilih langganan tersebut az account set . Pilih langganan yang sama dengan yang Anda pilih di bagian sebelumnya dengan PowerShell. Pastikan untuk mengganti <your subscription name> dengan nama langganan Anda:

    az login
    
    az account set --subscription "<your subscription>"
    
  2. Buat IoT Hub menggunakan az iot hub create perintah . Contoh ini membuat IoT Hub yang disebut MyASAIoTHub. Karena nama IoT Hub unik, Anda harus membuat nama IoT Hub Anda sendiri. Atur SKU ke F1 untuk menggunakan tingkat gratis jika tersedia dengan langganan Anda. Jika tidak, pilih tingkat terendah berikutnya.

    az iot hub create --name "MyASAIoTHub" --resource-group $resourceGroup --sku S1
    

    Setelah hub IoT dibuat, dapatkan string koneksi Azure IoT Hub menggunakan perintah az iot hub show-connection-string. Salin seluruh string koneksi dan simpan. Anda memerlukannya saat menambahkan IoT Hub sebagai input ke pekerjaan Azure Stream Analytics Anda.

    az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
    
  3. Tambahkan perangkat untuk IoT Hub menggunakan az iot hub device-identity create perintah . Contoh ini membuat perangkat bernama MyASAIoTDevice.

    az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
    
  4. Dapatkan string koneksi perangkat menggunakan az iot hub device-identity connection-string show perintah . Salin seluruh string koneksi dan simpan saat Anda membuat simulator Raspberry Pi.

    az iot hub device-identity connection-string show --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice" --output table
    

    Contoh output:

    HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
    

Membuat penyimpanan blob

Blok kode Azure PowerShell berikut menggunakan perintah untuk membuat penyimpanan blob yang digunakan untuk output pekerjaan. Tinjau bagian terkait untuk memahami kodenya.

  1. Buat akun penyimpanan tujuan umum standar menggunakan cmdlet New-AzStorageAccount. Contoh ini membuat akun penyimpanan yang disebut myasaquickstartstorage dengan penyimpanan redundan lokal (LRS) dan enkripsi blob (diaktifkan secara default).

  2. Dapatkan konteks akun penyimpanan $storageAccount.Context yang menentukan akun penyimpanan yang akan digunakan. Saat bertindak di akun penyimpanan, Anda mereferensikan konteksnya, bukan berulang kali memberikan kredensial.

  3. Buat kontainer penyimpanan menggunakan New-AzStorageContainer.

  4. Salin kunci penyimpanan yang dihasilkan oleh kode, dan simpan kunci tersebut untuk membuat output pekerjaan streaming di kemudian hari.

    $storageAccountName = "myasaquickstartstorage"
    $storageAccount = New-AzStorageAccount `
      -ResourceGroupName $resourceGroup `
      -Name $storageAccountName `
      -Location $location `
      -SkuName Standard_LRS `
      -Kind Storage
    
    $ctx = $storageAccount.Context
    $containerName = "container1"
    
    New-AzStorageContainer `
      -Name $containerName `
      -Context $ctx
    
    $storageAccountKey = (Get-AzStorageAccountKey `
      -ResourceGroupName $resourceGroup `
      -Name $storageAccountName).Value[0]
    
    Write-Host "The <storage account key> placeholder needs to be replaced in your output json files with this key value:"
    Write-Host $storageAccountKey -ForegroundColor Cyan
    

Membuat pekerjaan Azure Stream Analytics

Buat pekerjaan Stream Analytics dengan cmdlet New-AzStreamAnalyticsJob. Cmdlet ini mengambil nama pekerjaan, nama grup sumber daya, lokasi, dan nama sku sebagai parameter. Nama pekerjaan bisa menjadi nama ramah yang mengidentifikasi pekerjaan Anda. Cmdlet hanya dapat berisi karakter alfanumerik, tanda hubung, dan garis bawah dan harus berisi 3 hingga 63 karakter.

Jalankan cmdlet New-AzStreamAnalyticsJob.

$jobName = "MyStreamingJob"
New-AzStreamAnalyticsJob `
  -ResourceGroupName $resourceGroup `
  -Name $jobName `
  -Location centralus `
  -SkuName Standard

Konfigurasikan input ke pekerjaan

Tambahkan input ke pekerjaan Anda dengan menggunakan cmdlet New-AzStreamAnalyticsInput. Cmdlet ini mengambil nama pekerjaan, nama input pekerjaan, nama grup sumber daya, dan definisi input pekerjaan sebagai parameter. Definisi input pekerjaan adalah file JSON yang berisi properti yang diperlukan untuk mengonfigurasi input pekerjaan. Dalam contoh ini, Anda membuat penyimpanan blob sebagai input.

Di komputer lokal Anda, buat file bernama JobInputDefinition.json dan tambahkan data JSON berikut ke dalamnya.

Penting

  • Ganti accesspolicykey dengan SharedAccessKey bagian string koneksi IoT Hub yang Anda simpan di bagian sebelumnya.
  • Jika Anda menggunakan nama yang berbeda untuk hub IoT, perbarui nilai untuk iotHubNamespace.
{
    "properties": {
        "type": "Stream",
        "datasource": {
            "type": "Microsoft.Devices/IotHubs",
            "properties": {
                "iotHubNamespace": "MyASAIoTHub",
                "sharedAccessPolicyName": "iothubowner",
                "sharedAccessPolicyKey": "accesspolicykey",
                "endpoint": "messages/events",
                "consumerGroupName": "$Default"
                }
        },
        "compression": {
            "type": "None"
        },
        "serialization": {
            "type": "Json",
            "properties": {
                "encoding": "UTF8"
            }
        }
    },
    "name": "IoTHubInput",
    "type": "Microsoft.StreamAnalytics/streamingjobs/inputs"
}

Atur $jobInputDefinitionFile variabel PowerShell ke jalur tempat Anda menyimpan file JSON definisi input pekerjaan.

$jobInputDefinitionFile = "C:\JobInputDefinition.json"

Selanjutnya, jalankan New-AzStreamAnalyticsInput cmdlet untuk membuat input Azure IoT Hub untuk pekerjaan Azure Stream Analytics.

$jobInputName = "IoTHubInput"
New-AzStreamAnalyticsInput `
  -ResourceGroupName $resourceGroup `
  -JobName $jobName `
  -File $jobInputDefinitionFile `
  -Name $jobInputName

Konfigurasikan output ke pekerjaan

Tambahkan input ke pekerjaan Anda dengan menggunakan cmdlet New-AzStreamAnalyticsOutput. Cmdlet ini mengambil nama pekerjaan, nama output pekerjaan, nama grup sumber daya, dan definisi output pekerjaan sebagai parameter. Definisi output pekerjaan adalah file JSON yang berisi properti yang diperlukan untuk mengonfigurasi output pekerjaan. Contoh ini menggunakan penyimpanan blob sebagai output.

Di komputer lokal Anda, buat file bernama JobOutputDefinition.json, dan tambahkan data JSON berikut ke dalamnya.

Penting

Ganti nilai untuk accountKey dengan kunci akses akun penyimpanan Anda yang merupakan nilai yang disimpan dalam $storageAccountKey nilai.

{
    "properties": {
        "datasource": {
            "type": "Microsoft.Storage/Blob",
            "properties": {
                "storageAccounts": [
                    {
                      "accountName": "asaquickstartstorage",
                      "accountKey": "<storage account key>"
                    }
                ],
                "container": "container1",
                "pathPattern": "output/",
                "dateFormat": "yyyy/MM/dd",
                "timeFormat": "HH"
            }
        },
        "serialization": {
            "type": "Json",
            "properties": {
                "encoding": "UTF8",
                "format": "LineSeparated"
            }
        }
    },
    "name": "BlobOutput",
    "type": "Microsoft.StreamAnalytics/streamingjobs/outputs"
}

Atur $jobOutputDefinitionFile variabel PowerShell ke jalur tempat Anda menyimpan file JSON definisi output pekerjaan.

$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"

Selanjutnya, jalankan New-AzStreamAnalyticsOutput cmdlet untuk membuat output Azure Blob Storage untuk pekerjaan Azure Stream Analytics.

$jobOutputName = "BlobOutput"

New-AzStreamAnalyticsOutput `
  -ResourceGroupName $resourceGroup `
  -JobName $jobName `
  -File $jobOutputDefinitionFile `
  -Name $jobOutputName

Tentukan kueri transformasi

Tambahkan transformasi pekerjaan Anda dengan menggunakan cmdlet New-AzStreamAnalyticsTransformation. Cmdlet ini mengambil nama pekerjaan, nama transformasi pekerjaan, nama grup sumber daya, dan definisi transformasi pekerjaan sebagai parameter. Di komputer lokal Anda, buat file bernama JobTransformationDefinition.json dan tambahkan data JSON berikut ke dalamnya. File JSON berisi parameter kueri yang menentukan kueri transformasi:

{
    "name":"MyTransformation",
    "type":"Microsoft.StreamAnalytics/streamingjobs/transformations",
    "properties":{
        "streamingUnits":1,
        "script":null,
        "query":"SELECT * INTO BlobOutput FROM IoTHubInput WHERE Temperature > 27"
    }
}

Selanjutnya, jalankan cmdlet New-AzStreamAnalyticsTransformation.

$jobTransformationName = "MyJobTransformation"
$jobTransformationDefinitionFile = "C:\JobTransformationDefinition.json"
New-AzStreamAnalyticsTransformation `
    -ResourceGroupName $resourceGroup `
    -JobName $jobName `
    -Query "SELECT * INTO BlobOutput FROM IoTHubInput WHERE Temperature > 27" `
    -StreamingUnit 1 `
    -Name $jobTransformationName

Jalankan simulator IoT

  1. Buka Simulator Online Raspberry Pi Azure IoT.

  2. Ganti tempat penampung di Baris 15 dengan seluruh string koneksi Perangkat Azure IoT Hub yang Anda simpan di bagian sebelumnya.

  3. Klik Jalankan. Outputnya harus menunjukkan data sensor dan pesan yang dikirim ke IoT Hub Anda.

    Cuplikan layar memperlihatkan Simulator Online Raspberry Pi Azure IoT.

Mulai pekerjaan Analisis Aliran dan periksa output-nya

Mulai pekerjaan dengan menggunakan cmdlet Start-AzStreamAnalyticsJob. Cmdlet ini mengambil nama pekerjaan, nama grup sumber daya, mode mulai output, dan waktu mulai sebagai parameter. OutputStartMode menerima nilai JobStartTime, CustomTime, atau LastOutputEventTime. Untuk mempelajari selengkapnya tentang apa yang dimaksud oleh masing-masing nilai ini, lihat bagian parameter dalam dokumentasi PowerShell.

Setelah Anda menjalankan cmdlet berikut, ia mengembalikan True sebagai output ketika pekerjaan dimulai. Dalam kontainer penyimpanan, folder output dibuat dengan data yang diubah.

Start-AzStreamAnalyticsJob `
  -ResourceGroupName $resourceGroup `
  -Name $jobName `
  -OutputStartMode 'JobStartTime'

Membersihkan sumber daya

Jika tidak diperlukan lagi, hapus grup sumber daya, tugas streaming, dan semua sumber daya terkait. Menghapus pekerjaan menghindari penagihan unit streaming yang digunakan oleh pekerjaan. Jika Anda berencana untuk menggunakan pekerjaan di masa mendatang, Anda dapat melewati penghapusan, dan menghentikan pekerjaan untuk saat ini. Jika Anda tidak akan terus menggunakan pekerjaan ini, hapus semua sumber daya yang dibuat oleh panduan mulai cepat ini dengan menjalankan cmdlet berikut:

Remove-AzResourceGroup `
  -Name $resourceGroup

Langkah berikutnya

Dalam panduan mulai cepat ini, Anda menyebarkan pekerjaan Analisis Aliran sederhana menggunakan Azure CLI. Anda juga dapat menyebarkan pekerjaan Analisis Aliran menggunakan portal Microsoft Azure dan Visual Studio.

Untuk mempelajari cara mengonfigurasi sumber input lain dan melakukan deteksi real time, lanjutkan ke artikel berikut: