Hızlı Başlangıç: Azure PowerShell kullanarak Stream Analytics işi oluşturma

Azure PowerShell modülü, PowerShell cmdlet'lerini veya betiklerini kullanarak Azure kaynakları oluşturmak ve yönetmek için kullanılır. Bu hızlı başlangıçta Azure Stream Analytics işini dağıtmak ve çalıştırmak için Azure PowerShell modülünün nasıl kullanılacağı gösterilmektedir.

Örnek iş, bir IoT Hub cihazından akış verilerini okur. Giriş verileri Raspberry Pi çevrimiçi simülatörü tarafından oluşturulur. Stream Analytics işi, sıcaklığı 27° üzerinde olan iletileri filtrelemek için Stream Analytics sorgu dilini kullanarak verileri dönüştürür. Ardından, sonuçta elde edilen çıkış olaylarını blob depolamadaki bir dosyaya yazar.

Başlamadan önce

  • Azure aboneliğiniz yoksa ücretsiz bir hesap oluşturun.
  • Bu hızlı başlangıç için Azure PowerShell modülü gerekir. Yerel makinenizde yüklü sürümü bulmak için Get-Module -ListAvailable Az komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure PowerShell Modülü yükleme.
  • Bazı IoT Hub eylemleri Azure PowerShell tarafından desteklenmez ve Azure CLI sürüm 2.0.70 veya üzeri ile Azure CLI için IoT uzantısı kullanılarak tamamlanması gerekir. Azure CLI'yi yükleyin ve IoT uzantısını yüklemek için kullanın az extension add --name azure-iot .

Azure'da oturum açma

komutuyla Connect-AzAccount Azure aboneliğinizde oturum açın ve açılır tarayıcıya Azure kimlik bilgilerinizi girin:

# Connect to your Azure account
Connect-AzAccount

Birden fazla aboneliğiniz varsa aşağıdaki cmdlet'leri çalıştırarak bu hızlı başlangıç için kullanmak istediğiniz aboneliği seçin. <your subscription name> değerini aboneliğinizin adıyla değiştirdiğinizden emin olun:

# 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

Kaynak grubu oluşturma

New-AzResourceGroup ile bir Azure kaynak grubu oluşturun. Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır.

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

Girdi verilerini hazırlama

Stream Analytics işini tanımlamadan önce, işe girdi olarak yapılandırılan verileri hazırlayın.

Aşağıdaki Azure CLI kod bloğu, işin gerektirdiği giriş verilerini hazırlamak için birçok komut içerir. Kodu anlamak için aşağıdaki bölümleri gözden geçirin.

  1. PowerShell pencerenizde komutunu çalıştırarak az login Azure hesabınızda oturum açın.

    Başarıyla oturum açtığınızda, Azure CLI aboneliklerinizin listesini döndürür. Bu hızlı başlangıç için kullandığınız aboneliği kopyalayın ve bu aboneliği seçmek için komutunu çalıştırın az account set . PowerShell ile önceki bölümde seçtiğiniz aboneliği seçin. değerini aboneliğinizin adıyla değiştirdiğinden <your subscription name> emin olun.

    az login
    
    az account set --subscription "<your subscription>"
    
  2. komutunu kullanarak az iot hub create bir IoT Hub oluşturun. Bu örnek MyASAIoTHub adlı bir IoT Hub oluşturur. IoT Hub adları benzersiz olduğundan, kendi IoT Hub adınızı oluşturmanız gerekir. Aboneliğinizde varsa ücretsiz katmanı kullanmak için SKU'yu F1 olarak ayarlayın. Aksi takdirde sonraki en düşük katmanı seçin.

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

    IoT hub'ı oluşturulduktan sonra az iot hub show-connection-string komutunu kullanarak IoT Hub bağlantı dizesini alın. Bağlantı dizesinin tamamını kopyalayın ve kaydedin. Stream Analytics işinize giriş olarak IoT Hub eklerken buna ihtiyacınız vardır.

    az iot hub show-connection-string --resource-group $resourceGroup --hub-name "MyASAIoTHub"
    
  3. komutunu kullanarak az iot hub device-identity create IoT Hub bir cihaz ekleyin. Bu örnek MyASAIoTDevice adlı bir cihaz oluşturur.

    az iot hub device-identity create --resource-group $resourceGroup --hub-name "MyASAIoTHub" --device-id "MyASAIoTDevice"
    
  4. komutunu kullanarak cihaz bağlantı dizesini az iot hub device-identity connection-string show alın. Tüm bağlantı dizesini kopyalayın ve Raspberry Pi simülatörünü oluştururken için kaydedin.

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

    Çıkış örneği:

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

Blob depolama oluşturma

Aşağıdaki Azure PowerShell kod bloğu, iş çıkışı için kullanılan blob depolama oluşturmak için komutları kullanır. Kodu anlamak için bölümleri gözden geçirin.

  1. New-AzStorageAccount cmdlet'ini kullanarak standart bir genel amaçlı depolama hesabı oluşturun. Bu örnek, yerel olarak yedekli depolama (LRS) ve blob şifrelemesi (varsayılan olarak etkin) ile myasaquickstartstorage adlı bir depolama hesabı oluşturur.

  2. Kullanılacak depolama hesabını tanımlayan $storageAccount.Context depolama hesabı bağlamını alın. Depolama hesaplarıyla çalışırken kimlik bilgilerini tekrar tekrar sağlamak yerine bağlama başvurursunuz.

  3. New-AzStorageContainer kullanarak bir depolama kapsayıcısı oluşturun.

  4. Kod tarafından çıktısı alınan depolama anahtarını kopyalayın ve daha sonra akış işinin çıkışını oluşturmak için bu anahtarı kaydedin.

    $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
    

Akış Analizi işi oluşturma

New-AzStreamAnalyticsJob cmdlet'iyle bir Stream Analytics işi oluşturun. Bu cmdlet iş adını, kaynak grubu adını, konumunu ve sku adını parametre olarak alır. İş adı, işinizi tanımlayan herhangi bir kolay ad olabilir. Yalnızca alfasayısal karakterler, kısa çizgiler ve alt çizgi içerebilir ve 3 ile 63 karakter uzunluğunda olmalıdır.

cmdlet'ini New-AzStreamAnalyticsJob çalıştırın.

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

İş girdisini yapılandırma

New-AzStreamAnalyticsInput cmdlet'ini kullanarak işinize giriş ekleyin. Bu cmdlet iş adı, iş girdisi adı, kaynak grubu adı ve iş girdisi tanımını parametre olarak alır. İş girdisi tanımı işin girdisini yapılandırmak için gereken özellikleri içeren bir JSON dosyasıdır. Bu örnekte giriş olarak bir blob depolama alanı oluşturacaksınız.

Yerel makinenizde JobInputDefinition.json adlı bir dosya oluşturun ve içine aşağıdaki JSON verilerini ekleyin.

Önemli

  • değerini önceki bölümde kaydettiğiniz IoT Hub bağlantı dizesinin bölümüyle SharedAccessKey değiştirinaccesspolicykey.
  • IoT hub'ı için farklı bir ad kullandıysanız değerini güncelleştirin 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"
}

PowerShell değişkenini $jobInputDefinitionFile iş giriş tanımı JSON dosyasını depoladığınız yola ayarlayın.

$jobInputDefinitionFile = "C:\JobInputDefinition.json"

Ardından, Stream Analytics işi için bir Azure IoT Hub girişi oluşturmak üzere cmdlet'ini çalıştırınNew-AzStreamAnalyticsInput.

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

İş çıktısını yapılandırma

New-AzStreamAnalyticsOutput cmdlet'ini kullanarak işinize bir çıkış ekleyin. Bu cmdlet iş adı, iş çıktısı adı, kaynak grubu adı ve iş çıktısı tanımını parametre olarak alır. İş çıktısı tanımı işin çıktısını yapılandırmak için gereken özellikleri içeren bir JSON dosyasıdır. Bu örnek, çıktı olarak blob depolama kullanır.

Yerel makinenizde JobOutputDefinition.json adlı bir dosya oluşturun ve içine aşağıdaki JSON verilerini ekleyin.

Önemli

değerini accountKey depolama hesabınızın değerde $storageAccountKey depolanan değer olan erişim anahtarıyla değiştirin.

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

PowerShell değişkenini $jobOutputDefinitionFile iş çıktısı tanımı JSON dosyasını depoladığınız yola ayarlayın.

$jobOutputDefinitionFile = "C:\JobOutputDefinition.json"

Ardından, Stream Analytics işi için bir Azure Blob Depolama çıkışı oluşturmak üzere cmdlet'ini çalıştırınNew-AzStreamAnalyticsOutput.

$jobOutputName = "BlobOutput"

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

Dönüşüm sorgusunu tanımlama

New-AzStreamAnalyticsTransformation cmdlet'ini kullanarak işinizi dönüştürme ekleyin. Bu cmdlet iş adı, iş dönüşümü adı, kaynak grubu adı ve iş dönüşümü tanımını parametre olarak alır. Yerel makinenizde JobTransformationDefinition.json adlı bir dosya oluşturun ve içine aşağıdaki JSON verilerini ekleyin. JSON dosyası, dönüşüm sorgusunu tanımlayan bir sorgu parametresi içerir:

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

Ardından, New-AzStreamAnalyticsTransformation cmdlet'ini çalıştırın.

$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

IoT simülatörünü çalıştırma

  1. Raspberry Pi Azure IoT Online Simulator'ını açın.

  2. 15. Satırdaki yer tutucuyu önceki bir bölümde kaydettiğiniz Azure IoT Hub Cihaz bağlantı dizesinin tamamıyla değiştirin.

  3. Çalıştır'a tıklayın. Çıkış, IoT Hub gönderilen algılayıcı verilerini ve iletilerini göstermelidir.

    Raspberry Pi Azure IoT Online Simulator'ın gösterildiği ekran görüntüsü.

Stream Analytics işini başlatıp çıktıyı denetleyin

Start-AzStreamAnalyticsJob cmdlet'ini kullanarak işi başlatın. Bu cmdlet iş adı, kaynak grubu adı, çıktı başlangıç modu ve başlangıç saatini parametre olarak alır. OutputStartMode; JobStartTime, CustomTime veya LastOutputEventTime değerlerini kabul eder. Bu değerlerin her birinin ne anlama geldiği hakkında daha fazla bilgi için PowerShell belgelerindeki parametreler bölümüne bakın.

Aşağıdaki cmdlet’i çalıştırdıktan sonra iş başlarsa çıktı olarak True değeri döndürülür. Depolama kapsayıcısında, dönüştürülmüş verilerle birlikte bir çıktı klasörü oluşturulur.

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

Kaynakları temizleme

Artık gerekli olmadığında kaynak grubunu, akış işini ve tüm ilgili kaynakları silin. İşin silinmesi, iş tarafından kullanılan akış birimlerinin faturalanmasını önler. İşi gelecekte kullanmayı planlıyorsanız, silme işlemini atlayıp işi şimdilik durdurabilirsiniz. Bu işi kullanmaya devam etmeyecekseniz, aşağıdaki cmdlet'i çalıştırarak bu hızlı başlangıç tarafından oluşturulan tüm kaynakları silin:

Remove-AzResourceGroup `
  -Name $resourceGroup

Sonraki adımlar

Bu hızlı başlangıçta PowerShell kullanarak basit bir Stream Analytics işi dağıttınız. Stream Analytics işlerini Azure portalı ve Visual Studio’yu kullanarak da dağıtabilirsiniz.

Diğer girdi kaynaklarını yapılandırma ve gerçek zamanlı algılama hakkında bilgi almak için aşağıdaki makaleye geçin: