AWS IoT Greengrass Version 1 entrou na fase de vida útil prolongada em 30 de junho de 2023. Para obter mais informações, consulte política de manutenção do AWS IoT Greengrass V1. Após essa data, AWS IoT Greengrass V1 não lançaremos atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam AWS IoT Greengrass V1 não serão interrompidos e continuarão operando e se conectando à nuvem. É altamente recomendável que você migre para AWS IoT Greengrass Version 2, o que adiciona novos recursos significativos e suporte para plataformas adicionais.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
API RESTful de descoberta do Greengrass
Todos os dispositivos cliente que se comunicam com um núcleo AWS IoT Greengrass devem ser membros de um grupo do Greengrass. Cada grupo deve ter um núcleo do Greengrass. A API de descoberta permite que os dispositivos recuperem as informações necessárias para se conectar a um núcleo do Greengrass que esteja no mesmo grupo do Greengrass que o dispositivo cliente. Quando um dispositivo cliente ficar online pela primeira vez, ele poderá se conectar ao serviço do AWS IoT Greengrass e usar a API de descoberta para localizar:
O grupo ao qual pertence. Um dispositivo cliente pode ser membro de até 10 grupos.
O endereço IP e a porta do núcleo do Greengrass no grupo.
O certificado CA do grupo, que pode ser usado para autenticar o dispositivo de núcleo do Greengrass.
nota
Os dispositivos cliente podem usar os SDKs do dispositivo de AWS IoT para descobrir informações de conectividade para um núcleo do Greengrass. Para obter mais informações, consulte AWS IoT SDK do dispositivo.
Para usar essa API, envie solicitações HTTP ao endpoint da API de descoberta. Por exemplo:
https://greengrass-ats.iot.
region
.amazonaws.com:port
/greengrass/discover/thing/thing-name
Para obter uma lista de regiões e endpoints da Amazon Wev Services compatíveis com a API de descoberta do AWS IoT Greengrass, consulte Endpoints e cotas do AWS IoT Greengrass na Referência geral da AWS. Esta é uma API somente de plano de dados. Os endpoints do gerenciamento do grupo e as operações do AWS IoT Core são diferentes dos endpoints da API de descoberta.
Solicitação
A solicitação contém os cabeçalhos HTTP padrão e é enviada ao endpoint de descoberta do Greengrass, conforme mostrado nos exemplos a seguir.
O número da porta depende se o núcleo é configurado para enviar o tráfego HTTPS pela porta 8443 ou pela 443. Para obter mais informações, consulte Conectar-se à porta 443 ou por meio de um proxy de rede.
- 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
Os clientes que se conectam na porta 443 devem implementar a extensão TLS do Application Layer Protocol Negotiation (ALPN)
e passar x-amzn-http-ca
como oProtocolName
noProtocolNameList
. Para obter mais informações, consulte Protocolos no Guia do desenvolvedor do AWS IoT.nota
Estes exemplos usam o endpoint do Amazon Trust Services (ATS), que é usado com certificados da CA raiz do ATS (recomendado). Os endpoints devem corresponder ao tipo de certificado da CA raiz. Para obter mais informações, consulte Os endpoints do serviço devem corresponder ao tipo de certificado da CA raiz.
Resposta
Após o sucesso, a resposta incluirá os cabeçalhos HTTP padrão e os seguintes código e corpo:
HTTP 200 BODY: response document
Para obter mais informações, consulte Exemplos de documentos de resposta de descoberta.
Autorização de descoberta
Para recuperar as informações de conectividade, é necessária uma política que permita ao chamador executar a ação greengrass:Discover
. A autenticação TLS mútuo com certificado de cliente é a única forma aceita de autenticação. Veja a seguir um exemplo de política que permite a um chamador executar essa ação:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "greengrass:Discover", "Resource": ["arn:aws:iot:us-west-2:123456789012:thing/MyThingName"] }] }
Exemplos de documentos de resposta de descoberta
O documento a seguir mostra a resposta de um dispositivo cliente que é membro de um grupo com um núcleo do Greengrass, um endpoint e um certificado CA de grupo:
{ "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-----" ] } ] }
O documento a seguir mostra a resposta de um dispositivo cliente que é membro de dois grupos com um núcleo do Greengrass, vários endpoints e vários certificados CA de grupo:
{ "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
Um grupo do Greengrass deve definir exatamente um núcleo do Greengrass. Qualquer resposta do serviço do AWS IoT Greengrass que contém uma lista de núcleos do Greengrass contém apenas um núcleo do Greengrass.
Se tiver o cURL
instalado, você poderá testar a solicitação de descoberta. Por exemplo:
$
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-----\n
cert-contents
\n-----END CERTIFICATE-----\n"]}]}