API Greengrass Discovery RESTful - AWS IoT Greengrass

AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.

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 Greengrass Discovery RESTful

Tutti i dispositivi client che comunicano con unAWS IoT Greengrass core devono essere membri di un gruppo Greengrass. Ogni gruppo deve disporre di un core Greengrass. L'API Discovery consente ai dispositivi di recuperare le informazioni necessarie per connettersi a un core Greengrass che si trova nello stesso gruppo Greengrass del dispositivo client. Quando un dispositivo client è online per la prima volta, può connettersi alAWS IoT Greengrass servizio e utilizzare l'API Discovery per trovare:

  • Il gruppo al quale appartiene. Un dispositivo client può essere membro al massimo di 10 gruppi.

  • L'indirizzo IP e la porta per il core Greengrass nel gruppo.

  • Il certificato emesso da una CA del gruppo, che può essere utilizzato per autenticare il dispositivo core Greengrass.

Nota

I dispositivi client possono anche utilizzare iAWS IoT Device Per ulteriori informazioni, consulta SDK per dispositivi AWS IoT.

Per utilizzare questa API, invia le richieste HTTP all'endpoint dell'API Discovery. Ad esempio:

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

Per un elenco delle regioni e degli endpoint Amazon Web Services supportati per l'APIAWS IoT Greengrass Discovery, consulta AWS IoT Greengrassendpoint e quote nel Riferimenti generali di AWS. Si tratta di un'API esclusivamente del piano dei dati. Gli endpoint per la gestione dei gruppi e le operazioni AWS IoT Core sono diversi dagli endpoint dell'API Discovery.

Richiesta

La richiesta contiene le intestazioni HTTP standard e viene inviata all'endpoint Greengrass Discovery, come indicato nei seguenti esempi.

Il numero di porta varia a seconda che il core sia configurato per inviare il traffico HTTPS sulla porta 8443 o 443. Per ulteriori informazioni, consulta Connessione alla porta 443 o tramite un proxy di rete.

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

I client che si connettono alla porta 443 devono implementare l'estensione TLS ALPN (Application Layer Protocol Negotiation) e passarex-amzn-http-ca come nomeProtocolName nelProtocolNameList. Per ulteriori informazioni, consulta Protocolli nella Guida per gliAWS IoT sviluppatori.

Nota

Questi esempi utilizzano Amazon Trust Services (ATS) con i certificati CA root ATS (scelta consigliata). Gli endpoint devono corrispondere al tipo di certificato CA root. Per ulteriori informazioni, consulta Gli endpoint del servizio devono corrispondere al tipo di certificato CA principale.

Risposta

In caso di esito positivo, la risposta include le intestazioni HTTP standard più il codice e il corpo seguenti:

HTTP 200 BODY: response document

Per ulteriori informazioni, consulta Documenti di risposta di individuazione di esempio.

Rilevamento

Per recuperare le informazioni sulla connettività, è necessaria una policy che permetta all'intermediario di eseguire l'operazione greengrass:Discover. L'autenticazione reciproca TLS con certificato client è l'unica forma accettata di autenticazione. Di seguito è riportato un esempio di policy che permette a un intermediario di eseguire questa operazione:

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

Documenti di risposta di individuazione di esempio

Il seguente documento mostra la risposta per un dispositivo client che è membro di un gruppo con un core Greengrass, un endpoint e un certificato CA di gruppo:

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

Il seguente documento mostra la risposta per un dispositivo client che è membro di due gruppi con un core Greengrass, più endpoint e più certificati CA di gruppo:

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

Un gruppo Greengrass deve definire esattamente un core Greengrass. Qualsiasi risposta dal servizio AWS IoT Greengrass che contiene un elenco di core Greengrass conterrà solo un core Greengrass.

Se cURL è installato, è possibile testare la richiesta di discovery. Ad esempio:

$ curl --cert 1a23bc4d56.cert.pem --key 1a23bc4d56.private.key https://greengrass-ats.iot.us-west-2.amazonaws.com:8443/greengrass/discover/thing/MyDevice {"GGGroups":[{"GGGroupId":"1234a5b6-78cd-901e-2fgh-3i45j6k1789","Cores":[{"thingArn":"arn:aws:iot:us-west-2:1234567 89012:thing/MyFirstGroup_Core","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"]}]}