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.

Następne kroki