API RESTful de detección de Greengrass - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entró en la fase de vida útil prolongada el 30 de junio de 2023. Para obtener más información, consulte la política de mantenimiento de AWS IoT Greengrass V1 Después de esta fecha, AWS IoT Greengrass V1 no se publicarán actualizaciones que proporcionen funciones, mejoras, correcciones de errores o parches de seguridad. Los dispositivos que se ejecuten AWS IoT Greengrass V1 no se verán afectados y seguirán funcionando y conectándose a la nube. Le recomendamos encarecidamente que migre a AWS IoT Greengrass Version 2, ya que añade importantes funciones nuevas y es compatible con plataformas adicionales.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

API RESTful de detección de Greengrass

Todos los dispositivos cliente que se comunican con un AWS IoT Greengrass core deben ser miembros de un grupo de Greengrass. Cada grupo debe tener un núcleo Greengrass. La API de detección permite que los dispositivos puedan recuperar la información necesaria para conectarse a un núcleo de Greengrass que esté en el mismo grupo que el dispositivo cliente. Cuando un dispositivo cliente se pone en línea por primera vez, se puede conectar al servicio de AWS IoT Greengrass y usar la API de detección para encontrar:

  • El grupo al que pertenece. Un dispositivo cliente puede ser miembro de hasta 10 grupos.

  • La dirección IP y el puerto del núcleo de Greengrass del grupo.

  • El certificado de entidad de certificación del grupo, que se puede utilizar para autenticar el dispositivo central de Greengrass.

nota

Los dispositivos cliente también pueden usar los SDKs AWS IoT de dispositivo para detectar información de conectividad de un núcleo de Greengrass. Para obtener más información, consulte AWS IoT SDK de dispositivo.

Para utilizar esta API, envíe solicitudes HTTP al punto de enlace de la API Discovery. Por ejemplo:

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

Para obtener una lista de las regiones de Amazon Web Services compatibles y los puntos de conexión para la API de detección AWS IoT Greengrass, consulte los puntos de conexión AWS IoT Greengrass y las cuotas en la sección Referencia general de AWS. Se trata de una API solo del plano de datos. Los puntos de enlace de la administración del grupo y las operaciones de AWS IoT Core son diferentes de los puntos de enlace de la API de detección.

Solicitud

La solicitud contiene los encabezados HTTP estándar y se envía al punto de enlace de detección de Greengrass, como se muestra en los ejemplos siguientes.

El número de puerto depende de si el núcleo está configurado para enviar el tráfico HTTPS a través del puerto 8443 o el puerto 443. Para obtener más información, consulte Realizar la conexión en el puerto 443 o a través de un proxy de red.

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

Los clientes que se conecten por el puerto 443 deben implementar la extensión TLS de Negociación de Protocolo de Capa de Aplicación (ALPN) y pasar x-amzn-http-ca como el ProtocolName en el ProtocolNameList. Para obtener más información, consulte Protocolos en la Guía para desarrolladores de AWS IoT.

nota

Estos ejemplos utilizan el punto de enlace de Amazon Trust Services (ATS), que se utiliza con certificados de CA raíz de ATS (recomendado). Los puntos de enlace deben coincidir con el tipo de certificado de CA raíz. Para obtener más información, consulte Los puntos de conexión del servicio deben coincidir con el tipo de certificado de CA raíz..

Respuesta

En caso de éxito, la respuesta incluye encabezados HTTP estándar, así como el código y el cuerpo siguientes:

HTTP 200 BODY: response document

Para obtener más información, consulte Ejemplo de documentos de respuesta de detección.

Autorización de detección

Para recuperar la información de conectividad se necesita una política que permita al intermediario ejecutar la acción greengrass:Discover. La autenticación mutua TLS con un certificado de cliente es la única forma de autenticación aceptada. A continuación, se muestra una política de ejemplo que permite a un intermediario realizar esta acción:

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

Ejemplo de documentos de respuesta de detección

En el siguiente documento, se muestra la respuesta de un dispositivo cliente que es miembro de un grupo que tiene un dispositivo central de Greengrass, un punto de conexión y un certificado de entidad de certificación 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-----" ] } ] }

En el siguiente documento se muestra la respuesta de un dispositivo cliente que es miembro de dos grupos que tiene un dispositivo central de Greengrass, varios puntos de conexión y varios certificados de entidad de certificación 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

Los grupos de Greengrass deben definir exactamente cada dispositivo central de Greengrass. Cualquier respuesta del servicio de AWS IoT Greengrass que incluya una lista de dispositivos centrales de Greengrass contendrá únicamente un núcleo de Greengrass.

Si ha instalado cURL, puede probar la solicitud de detección. Por ejemplo:

$ 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"]}]}