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.
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>"
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"
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"
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.
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.
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.New-AzStorageContainer kullanarak bir depolama kapsayıcısı oluşturun.
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
15. Satırdaki yer tutucuyu önceki bir bölümde kaydettiğiniz Azure IoT Hub Cihaz bağlantı dizesinin tamamıyla değiştirin.
Çalıştır'a tıklayın. Çıkış, IoT Hub gönderilen algılayıcı verilerini ve iletilerini göstermelidir.
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: