Implementowanie ciągłej integracji/ciągłego wdrażania dla usługi Stream Analytics na IoT Edge przy użyciu interfejsów API
Możesz włączyć ciągłą integrację i ciągłe wdrażanie zadań usługi Azure Stream Analytics przy użyciu interfejsów API REST. Ten artykuł zawiera przykłady użycia interfejsów API i sposobu ich używania. Interfejsy API REST nie są obsługiwane w usłudze Azure Cloud Shell.
Wywoływanie interfejsów API z różnych środowisk
Interfejsy API REST można wywoływać zarówno z systemów Linux, jak i Windows. Następujące polecenia przedstawiają właściwą składnię wywołania interfejsu API. Określone użycie interfejsu API zostanie opisane w kolejnych sekcjach tego artykułu.
Linux
W przypadku systemu Linux można użyć poleceń Curl
lub Wget
:
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
W przypadku systemu Windows użyj programu PowerShell:
$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
Tworzenie zadania usługi ASA w usłudze IoT Edge
Aby utworzyć zadanie usługi Stream Analytics, wywołaj metodę PUT przy użyciu interfejsu API usługi Stream Analytics.
Metoda | Adres URL żądania |
---|---|
PUT | https://management.azure.com/subscriptions/{subscription-id}/resourcegroups/{resource-group-name}/providers/Microsoft.StreamAnalytics/streamingjobs/{job-name}?api-version=2017-04-01-preview |
Przykład polecenia przy użyciu narzędzia curl:
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
Przykład treści żądania w formacie JSON:
{
"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": {
}
}
}
}
]
}
}
Aby uzyskać więcej informacji, zobacz dokumentację interfejsu API.
Publikowanie pakietu IoT Edge
Aby opublikować zadanie usługi Stream Analytics na IoT Edge, wywołaj metodę POST przy użyciu interfejsu API publikowania pakietów IoT Edge.
Metoda | Adres URL żądania |
---|---|
POST | https://management.azure.com/subscriptions/{subscriptionid}/resourceGroups/{resourcegroupname}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobname}/publishedgepackage?api-version=2017-04-01-preview |
Poprzednie wywołanie interfejsu API publikowania pakietu IoT Edge wyzwala operację asynchroniczną i zwraca stan 202. Nagłówek odpowiedzi lokalizacji zawiera identyfikator URI używany do uzyskiwania stanu tej operacji asynchronicznej. Wywołanie identyfikatora URI w nagłówku lokalizacji zwraca stan 202, aby wskazać, że operacja asynchroniczna jest nadal w toku. Po zakończeniu operacji wywołanie identyfikatora URI w nagłówku lokalizacji zwraca stan 200.
Przykład wywołania publikowania pakietu IoT Edge przy użyciu narzędzia curl:
curl -d -X POST https://management.azure.com/subscriptions/{subscriptionid}/resourceGroups/{resourcegroupname}/providers/Microsoft.StreamAnalytics/streamingjobs/{jobname}/publishedgepackage?api-version=2017-04-01-preview
Po wywołaniu POST należy oczekiwać odpowiedzi z pustą treścią. Wyszukaj identyfikator URI w nagłówku lokalizacji odpowiedzi i zapisz go do dalszego użycia.
Przykład identyfikatora URI z nagłówka lokalizacji odpowiedzi:
https://management.azure.com/subscriptions/{subscriptionid}/resourcegroups/{resourcegroupname}/providers/Microsoft.StreamAnalytics/StreamingJobs/{resourcename}/OperationResults/{guidAssignedToTheAsynchronousOperation}?api-version=2017-04-01-preview
Poczekaj od kilku sekund do kilku minut przed wykonaniem wywołania interfejsu API, którego identyfikator URI znaleziony w nagłówku lokalizacji odpowiedzi do interfejsu API publikowania pakietu IoT Edge i powtórz cykl oczekiwania i ponów próbę, aż otrzymasz odpowiedź 200.
Przykład wykonywania wywołania interfejsu API z zwróconym adresem URL za pomocą narzędzia curl:
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
Odpowiedź zawiera informacje potrzebne do dodania do skryptu wdrożenia IoT Edge. W poniższych przykładach pokazano, jakie informacje należy zebrać i gdzie dodać je w manifeście wdrożenia.
Przykładowa treść odpowiedzi po pomyślnym opublikowaniu:
{
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"
}
Przykład manifestu wdrożenia:
{
"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>}
}
}
}
Po skonfigurowaniu manifestu wdrożenia zobacz Wdrażanie modułów usługi Azure IoT Edge przy użyciu interfejsu wiersza polecenia platformy Azure na potrzeby wdrożenia.