API RESTful per la scoperta di Greengrass - AWS IoT Greengrass

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

API RESTful per la scoperta di Greengrass

AWS IoT Greengrassfornisce il funzionamento dell'DiscoverAPI che i dispositivi client possono utilizzare per identificare i dispositivi core Greengrass a cui possono connettersi. I dispositivi client utilizzano questa operazione sul piano dati per recuperare le informazioni necessarie per connettersi ai dispositivi principali Greengrass, dove vengono associati al funzionamento BatchAssociateClientDeviceWithCoreDevicedell'API. Quando un dispositivo client è online, può connettersi al servizio AWS IoT Greengrass cloud e utilizzare l'API Discovery per trovare:

  • L'indirizzo IP e la porta per ogni dispositivo principale Greengrass associato.

  • Il certificato CA del dispositivo principale, che i dispositivi client possono utilizzare per autenticare il dispositivo principale Greengrass.

Nota

I dispositivi client possono anche utilizzare il discovery client SDK per dispositivi AWS IoT per scoprire le informazioni di connettività per i dispositivi core Greengrass. Il client di scoperta utilizza l'API di rilevamento. Per ulteriori informazioni, consulta gli argomenti seguenti:

Per utilizzare questa operazione API, invia richieste HTTP all'API di rilevamento sull'endpoint del piano dati Greengrass. Questo endpoint API ha il seguente formato.

https://greengrass-ats.iot.region.amazonaws.com:port/greengrass/discover/thing/thing-name

Per un elenco degli endpoint Regioni AWS e degli endpoint supportati per l'API AWS IoT Greengrass Discovery, consulta AWS IoT Greengrass V2endpoint e quote in. Riferimenti generali di AWS Questa operazione API è disponibile solo sull'endpoint del piano dati Greengrass. L'endpoint del piano di controllo utilizzato per gestire i componenti e le distribuzioni è diverso dall'endpoint del piano dati.

Nota

L'API discovery è la stessa per e. AWS IoT Greengrass V1 AWS IoT Greengrass V2 Se disponi di dispositivi client che si connettono a un AWS IoT Greengrass V1 core, puoi connetterli ai dispositivi AWS IoT Greengrass V2 principali senza modificare il codice sui dispositivi client. Per ulteriori informazioni, consulta l'API RESTful di Greengrass Discovery nella Developer Guide. AWS IoT Greengrass Version 1

Autenticazione e autorizzazione Discovery

Per utilizzare l'API di rilevamento per recuperare le informazioni di connettività, un dispositivo client deve utilizzare l'autenticazione reciproca TLS con un certificato client X.509 per l'autenticazione. Per ulteriori informazioni, consulta i certificati client X.509 nella Developer Guide. AWS IoT Core

Un dispositivo client deve inoltre disporre dell'autorizzazione per eseguire l'greengrass:Discoverazione. La seguente AWS IoT politica di esempio consente MyClientDevice1 a un AWS IoT oggetto denominato di funzionare Discover da solo.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "greengrass:Discover", "Resource": [ "arn:aws:iot:us-west-2:123456789012:thing/MyClientDevice1" ] } ] }
Importante

Le variabili Thing Policy (iot:Connection.Thing.*) non sono supportate nelle AWS IoT politiche per i dispositivi principali o nelle operazioni del piano dati Greengrass. Puoi invece utilizzare un carattere jolly che corrisponda a più dispositivi con nomi simili. Ad esempio, puoi specificare MyGreengrassDevice* di MyGreengrassDevice1 abbinare e così via. MyGreengrassDevice2

Per ulteriori informazioni, consulta AWS IoT Corele politiche nella Guida per AWS IoT Core gli sviluppatori.

Richiesta

La richiesta contiene le intestazioni HTTP standard e viene inviata all'endpoint di scoperta Greengrass, come illustrato negli esempi seguenti.

Il numero di porta dipende dal fatto che il dispositivo principale sia configurato per inviare traffico HTTPS sulla porta 8443 o sulla porta 443. Per ulteriori informazioni, consulta Connessione alla porta 443 o tramite un proxy di rete.

Nota

Questi esempi utilizzano l'endpoint Amazon Trust Services (ATS), che funziona con i certificati CA root ATS consigliati. Gli endpoint devono corrispondere al tipo di certificato CA root.

Porta 8443
HTTP GET https://greengrass-ats.iot.region.amazonaws.com:8443/greengrass/discover/thing/thing-name
Porta 443
HTTP GET https://greengrass-ats.iot.region.amazonaws.com:443/greengrass/discover/thing/thing-name
Nota

I client che si connettono alla porta 443 devono implementare l'estensione TLS Application Layer Protocol Negotiation (ALPN) e x-amzn-http-ca passarla come in. ProtocolName ProtocolNameList Per ulteriori informazioni, consulta Protocols nella Developer Guide. AWS IoT

Risposta

In caso di esito positivo, l'intestazione della risposta include il codice di stato HTTP 200 e il corpo della risposta contiene il documento di risposta discover.

Nota

Poiché AWS IoT Greengrass V2 utilizza la stessa API di rilevamentoAWS IoT Greengrass V1, la risposta organizza le informazioni in base a AWS IoT Greengrass V1 concetti, ad esempio i gruppi Greengrass. La risposta contiene un elenco di gruppi Greengrass. InAWS IoT Greengrass V2, ogni dispositivo principale fa parte del proprio gruppo, dove il gruppo contiene solo quel dispositivo principale e le relative informazioni di connettività.

Documenti di risposta di individuazione di esempio

Il seguente documento mostra la risposta per un dispositivo client associato a un dispositivo principale Greengrass. Il dispositivo principale ha un endpoint e un certificato CA.

{ "GGGroups": [ { "GGGroupId": "greengrassV2-coreDevice-core-device-01-thing-name", "Cores": [ { "thingArn": "core-device-01-thing-arn", "Connectivity": [ { "id": "core-device-01-connection-id", "hostAddress": "core-device-01-address", "portNumber": core-device-01-port, "metadata": "core-device-01-description" } ] } ], "CAs": [ "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----" ] } ] }

Il documento seguente mostra la risposta per un dispositivo client associato a due dispositivi principali. I dispositivi principali hanno più endpoint e più certificati CA di gruppo.

{ "GGGroups": [ { "GGGroupId": "greengrassV2-coreDevice-core-device-01-thing-name", "Cores": [ { "thingArn": "core-device-01-thing-arn", "Connectivity": [ { "id": "core-device-01-connection-id", "hostAddress": "core-device-01-address", "portNumber": core-device-01-port, "metadata": "core-device-01-connection-1-description" }, { "id": "core-device-01-connection-id-2", "hostAddress": "core-device-01-address-2", "portNumber": core-device-01-port-2, "metadata": "core-device-01-connection-2-description" } ] } ], "CAs": [ "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----", "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----", "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----" ] }, { "GGGroupId": "greengrassV2-coreDevice-core-device-02-thing-name", "Cores": [ { "thingArn":"core-device-02-thing-arn", "Connectivity" : [ { "id": "core-device-02-connection-id", "hostAddress": "core-device-02-address", "portNumber": core-device-02-port, "metadata": "core-device-02-connection-1-description" } ] } ], "CAs": [ "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----", "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----", "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----" ] } ] }

Prova l'API di scoperta con cURL

Se l'hai cURL installata, puoi testare l'API di rilevamento. L'esempio seguente specifica i certificati di un dispositivo client per autenticare una richiesta all'endpoint dell'API di scoperta Greengrass.

curl -i \ --cert 1a23bc4d56.cert.pem \ --key 1a23bc4d56.private.key \ https://greengrass-ats.iot.us-west-2.amazonaws.com:8443/greengrass/discover/thing/MyClientDevice1
Nota

L'-iargomento specifica l'output delle intestazioni di risposta HTTP. È possibile utilizzare questa opzione per identificare gli errori.

Se la richiesta ha esito positivo, questo comando restituisce una risposta simile all'esempio seguente.

{ "GGGroups": [ { "GGGroupId": "greengrassV2-coreDevice-MyGreengrassCore", "Cores": [ { "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "Connectivity": [ { "Id": "AUTOIP_192.168.1.4_1", "HostAddress": "192.168.1.5", "PortNumber": 8883, "Metadata": "" } ] } ], "CAs": [ "-----BEGIN CERTIFICATE-----\ncert-contents\n-----END CERTIFICATE-----\n" ] } ] }

Se il comando genera un errore, vedi Risoluzione dei problemi di rilevamento di Greengrass.