Condividi tramite


Chiamare un endpoint gRPC da una pipeline di anteprima del processore di dati IoT di Azure

Importante

Anteprima delle operazioni di Azure IoT: abilitata da Azure Arc è attualmente disponibile in ANTEPRIMA. Non è consigliabile usare questo software di anteprima negli ambienti di produzione.

Vedere le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale.

Usare la fase di chiamata gRPC per chiamare un gRPC esterno con un corpo della richiesta facoltativo e ricevere una risposta facoltativa. La fase di chiamata consente di incorporare la logica di elaborazione dei dati personalizzata, ad esempio l'esecuzione di modelli di Machine Learning, nell'elaborazione della pipeline.

  • Ogni partizione in una pipeline esegue in modo indipendente le chiamate API in parallelo.
  • Le chiamate API sono sincrone, la fase attende che la chiamata venga restituita prima di continuare con un'ulteriore elaborazione della pipeline.
  • Attualmente, la fase supporta solo il tipo RPC unario.
  • Il callout gRPC può essere usato solo con il formato Protobuf . È necessario usare protobuf con la fase di chiamata gRPC.

Prerequisiti

Per configurare e usare una fase della pipeline gRPC cal lout, è necessario:

  • Istanza distribuita di Azure IoT Data Processor Preview che include il componente facoltativo responsabile del trattamento dei dati.
  • Un server gRPC accessibile dall'istanza del responsabile del trattamento dei dati.
  • Strumento protoc per generare il descrittore.

Configurare una fase di chiamata gRPC

La configurazione JSON della fase di chiamata gRPC definisce i dettagli della fase. Per creare la fase, è possibile interagire con l'interfaccia utente basata su form o specificare la configurazione JSON nella scheda Avanzate .

Nome Tipo Descrizione Richiesto Valore predefinito Esempio
Nome string Nome da visualizzare nell'interfaccia utente del responsabile del trattamento dei dati. - MLCall2
Descrizione stringa Descrizione intuitiva delle operazioni eseguite dalla fase di chiamata. No Call ML endpoint 2
Server address string Indirizzo del server gRPC. - https://localhost:1313
Nome RPC string Nome RPC da chiamare - GetInsights
Descrittore1 string Descrittore codificato in base 64. - CuIFChxnb29nb
Autenticazione string Tipo di autenticazione da usare. None/Metadata. None None
Chiave dei metadati string Chiave di metadati da usare quando Authentication è impostata Metadatasu . No authorization authorization
Segreto string Riferimento al segreto da usare quando Authentication è impostato su Metadata. No - mysecret
Abilitare TLS boolean Indica se abilitare TLS. Attualmente il responsabile del trattamento dei dati supporta l'autenticazione basata su TLS con un certificato pubblico. No false true
Percorso del corpo della richiesta > API Percorso Percorso della parte del messaggio del responsabile del trattamento dei dati che deve essere serializzato e impostato come corpo della richiesta. Lasciare vuoto se non è necessario inviare un corpo della richiesta. No - .payload.gRPCRequest
Chiavemetadati > richiesta > API 2 Campo statico/dinamico Chiave di metadati da impostare nella richiesta. No Campo statico/dinamico
Valoremetadati > richiesta > API 2 Campo statico/dinamico Valore dei metadati da impostare nella richiesta. No Campo statico/dinamico
Percorso corpo risposta > API Percorso Percorso della proprietà nel messaggio in uscita in cui archiviare la risposta. Lasciare vuoto se non è necessario il corpo della risposta. No - .payload.gRPCResponse
Metadati di risposta > API Percorso Percorso della proprietà nel messaggio in uscita in cui archiviare i metadati della risposta. Lasciare vuoto se non sono necessari i metadati della risposta. No - .payload.gRPCResponseHeader
Stato risposta > API Percorso Percorso della proprietà nel messaggio in uscita in cui archiviare lo stato della risposta. Lasciare vuoto se non è necessario lo stato della risposta. No - .payload.gRPCResponseStatus

1Descrittore: poiché la fase di chiamata gRPC supporta solo il formato protobuf, si usano le stesse definizioni di formato sia per la richiesta che per la risposta. Per serializzare il corpo della richiesta e deserializzare il corpo della risposta, è necessario un descrittore con codifica base 64 del file proto.

Usare il comando seguente per generare il descrittore, sostituire <proto-file> con il nome del file con estensione proto:

protoc --descriptor_set_out=/dev/stdout --include_imports <proto-file> | base64 | tr '\n' ' ' | sed 's/[[:space:]]//g'

Usare l'output del comando precedente come descriptor nella configurazione.

2Metadati richiesta > API: ogni elemento nella matrice di metadati è una coppia di valori chiave. È possibile impostare la chiave o il valore in modo dinamico in base al contenuto del messaggio in arrivo o come stringa statica.