API'leri kullanarak IoT Edge stream analytics için CI/CD uygulama
REST API'lerini kullanarak Azure Stream Analytics işleri için sürekli tümleştirmeyi ve dağıtımı etkinleştirebilirsiniz. Bu makalede, hangi API'lerin kullanılacağına ve bunların nasıl kullanılacağına ilişkin örnekler verilmektedir. REST API'ler Azure Cloud Shell'da desteklenmez.
Farklı ortamlardan API'leri çağırma
REST API'ler hem Linux hem de Windows'tan çağrılabilir. Aşağıdaki komutlar API çağrısı için uygun söz dizimini gösterir. Belirli API kullanımı bu makalenin sonraki bölümlerinde özetlenecektir.
Linux
Linux için veya Wget
komutlarını kullanabilirsinizCurl
:
curl -u { <username:password> } -H "Content-Type: application/json" -X { <method> } -d "{ <request body> }" { <url> }
wget -q -O- --{ <method> } -data="<request body>" --header=Content-Type:application/json --auth-no-challenge --http-user="<Admin>" --http-password="<password>" <url>
Windows
Windows için PowerShell'i kullanın:
$user = "<username>"
$pass = "<password>"
$encodedCreds = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$pass)))
$basicAuthValue = "Basic $encodedCreds"
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Content-Type", 'application/json')
$headers.Add("Authorization", $basicAuthValue)
$content = "<request body>"
$response = Invoke-RestMethod <url> -Method <method> -Body $content -Headers $Headers
echo $response
IoT Edge'da ASA işi oluşturma
Stream Analytics işi oluşturmak için Stream Analytics API'sini kullanarak PUT yöntemini çağırın.
Yöntem | İstek URL’si |
---|---|
PUT | https://management.azure.com/subscriptions/{subscription-id}/resourcegroups/{resource-group-name}/providers/Microsoft.StreamAnalytics/streamingjobs/{job-name}?api-version=2017-04-01-preview |
Curl kullanan komut örneği:
curl -u { <username:password> } -H "Content-Type: application/json" -X { <method> } -d "{ <request body> }" https://management.azure.com/subscriptions/{subscription-id}/resourcegroups/{resource-group-name}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobname}?api-version=2017-04-01-preview
JSON'da istek gövdesi örneği:
{
"location": "West US",
"tags": { "key": "value", "ms-suppressjobstatusmetrics": "true" },
"sku": {
"name": "Standard"
},
"properties": {
"sku": {
"name": "standard"
},
"eventsLateArrivalMaxDelayInSeconds": 1,
"jobType": "edge",
"inputs": [
{
"name": "{inputname}",
"properties": {
"type": "stream",
"serialization": {
"type": "JSON",
"properties": {
"fieldDelimiter": ",",
"encoding": "UTF8"
}
},
"datasource": {
"type": "GatewayMessageBus",
"properties": {
}
}
}
}
],
"transformation": {
"name": "{queryName}",
"properties": {
"query": "{query}"
}
},
"package": {
"storageAccount" : {
"accountName": "{blobstorageaccountname}",
"accountKey": "{blobstorageaccountkey}"
},
"container": "{blobcontaine}]"
},
"outputs": [
{
"name": "{outputname}",
"properties": {
"serialization": {
"type": "JSON",
"properties": {
"fieldDelimiter": ",",
"encoding": "UTF8"
}
},
"datasource": {
"type": "GatewayMessageBus",
"properties": {
}
}
}
}
]
}
}
Daha fazla bilgi için API belgelerine bakın.
IoT Edge paketini yayımlama
stream analytics işini IoT Edge yayımlamak için IoT Edge Paket Yayımlama API'sini kullanarak POST yöntemini çağırın.
Yöntem | İstek URL’si |
---|---|
POST | https://management.azure.com/subscriptions/{subscriptionid}/resourceGroups/{resourcegroupname}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobname}/publishedgepackage?api-version=2017-04-01-preview |
IoT Edge Paketi Yayımlama API'sine yapılan önceki çağrı zaman uyumsuz bir işlemi tetikler ve 202 durumunu döndürür. Konum yanıt üst bilgisi, bu zaman uyumsuz işlemin durumunu almak için kullanılan URI'yi içerir. Konum üst bilgisindeki URI çağrısı, zaman uyumsuz işlemin hala devam ettiğini belirtmek için 202 durumunu döndürür. İşlem tamamlandığında, konum üst bilgisindeki URI çağrısı 200 durumunu döndürür.
Curl kullanarak IoT Edge paketi yayımlama çağrısı örneği:
curl -d -X POST https://management.azure.com/subscriptions/{subscriptionid}/resourceGroups/{resourcegroupname}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobname}/publishedgepackage?api-version=2017-04-01-preview
POST çağrısını yaptıktan sonra boş gövdeli bir yanıt beklemeniz gerekir. Yanıtın konum üst bilgisinde URI'yi arayın ve daha fazla kullanmak üzere kaydedin.
Yanıtın konum üst bilgisinden URI örneği:
https://management.azure.com/subscriptions/{subscriptionid}/resourcegroups/{resourcegroupname}/providers/Microsoft.StreamAnalytics/StreamingJobs/{resourcename}/OperationResults/{guidAssignedToTheAsynchronousOperation}?api-version=2017-04-01-preview
IoT Edge Paket Yayımlama API'sine yanıtın konum üst bilgisinde URI'sini bulduğunuz API'ye çağrı yapmadan önce birkaç saniye ile birkaç dakika arasında bekleyin ve 200 yanıt alana kadar bekleme ve yeniden deneme döngüsünü yineleyin.
Curl ile döndürülen URL ile API çağrısı yapma örneği:
curl -d –X GET https://management.azure.com/subscriptions/{subscriptionid}/resourcegroups/{resourcegroupname}/providers/Microsoft.StreamAnalytics/StreamingJobs/{resourcename}/OperationResults/{guidAssignedToTheAsynchronousOperation}?api-version=2017-04-01-preview
Yanıt, IoT Edge dağıtım betiğine eklemeniz gereken bilgileri içerir. Aşağıdaki örneklerde, hangi bilgileri toplamanız gerektiği ve dağıtım bildiriminde nereye ekleneceği gösterilmektedir.
Başarıyla yayımlandıktan sonra örnek yanıt gövdesi:
{
edgePackageUrl : null
error : null
manifest : "{"supportedPlatforms":[{"os":"linux","arch":"amd64","features":[]},{"os":"linux","arch":"arm","features":[]},{"os":"windows","arch":"amd64","features":[]}],"schemaVersion":"2","name":"{jobname}","version":"1.0.0.0","type":"docker","settings":{"image":"{imageurl}","createOptions":null},"endpoints":{"inputs":["\],"outputs":["{outputnames}"]},"twin":{"contentType":"assignments","content":{"properties.desired":{"ASAJobInfo":"{asajobsasurl}","ASAJobResourceId":"{asajobresourceid}","ASAJobEtag":"{etag}","PublishTimeStamp":"{publishtimestamp}"}}}}"
status : "Succeeded"
}
Dağıtım Bildirimi Örneği:
{
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"schemaVersion": "1.0",
"runtime": {
"type": "docker",
"settings": {
"minDockerVersion": "v1.25",
"loggingOptions": "",
"registryCredentials": {}
}
},
"systemModules": {
"edgeAgent": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.0",
"createOptions": "{}"
}
},
"edgeHub": {
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.0",
"createOptions": "{}"
}
}
},
"modules": {
"<asajobname>": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "<settings.image>",
"createOptions": "<settings.createOptions>"
}
"version": "<version>",
"env": {
"PlanId": {
"value": "stream-analytics-on-iot-edge"
}
}
}
},
"$edgeHub": {
"properties.desired": {
"schemaVersion": "1.0",
"routes": {
"route": "FROM /* INTO $upstream"
},
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
},
"<asajobname>": {
"properties.desired": {<twin.content.properties.desired>}
}
}
}
Dağıtım bildirimini yapılandırdıktan sonra bkz. Dağıtım için Azure CLI ile Azure IoT Edge modülleri dağıtma.