API RESTful de découverte de Greengrass - AWS IoT Greengrass

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

API RESTful de découverte de Greengrass

AWS IoT Greengrassfournit l'opération Discover d'API que les appareils clients peuvent utiliser pour identifier les appareils principaux de Greengrass auxquels ils peuvent se connecter. Les appareils clients utilisent cette opération de plan de données pour récupérer les informations requises pour se connecter aux appareils principaux de Greengrass et les associer à l'opération d'BatchAssociateClientDeviceWithCoreDeviceAPI. Lorsqu'un appareil client est en ligne, il peut se connecter au service AWS IoT Greengrass cloud et utiliser l'API de découverte pour trouver :

  • L'adresse IP et le port de chaque appareil principal Greengrass associé.

  • Le certificat CA du périphérique principal, que les appareils clients peuvent utiliser pour authentifier le périphérique principal Greengrass.

Note

Les appareils clients peuvent également utiliser le client de découverte dans le Kit SDK des appareils AWS IoT pour découvrir les informations de connectivité des appareils principaux de Greengrass. Le client de découverte utilise l'API de découverte. Pour plus d’informations, consultez les ressources suivantes :

Pour utiliser cette opération d'API, envoyez des requêtes HTTP à l'API de découverte sur le point de terminaison du plan de données Greengrass. Le format de ce point de terminaison d'API est le suivant.

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

Pour obtenir la liste des points de terminaison Régions AWS et des points de terminaison pris en charge par l'API de AWS IoT Greengrass découverte, consultez la section AWS IoT Greengrass V2Points de terminaison et quotas dans le. Références générales AWS Cette opération d'API n'est disponible que sur le point de terminaison du plan de données Greengrass. Le point de terminaison du plan de contrôle que vous utilisez pour gérer les composants et les déploiements est différent du point de terminaison du plan de données.

Note

L'API de découverte est la même pour AWS IoT Greengrass V1 etAWS IoT Greengrass V2. Si vous avez des appareils clients qui se connectent à un AWS IoT Greengrass V1 cœur, vous pouvez les connecter aux appareils AWS IoT Greengrass V2 principaux sans modifier le code sur les appareils clients. Pour plus d'informations, consultez l'API RESTful de Greengrass Discovery dans le guide du AWS IoT Greengrass Version 1 développeur.

Authentification et autorisation de découverte

Pour utiliser l'API de découverte afin de récupérer des informations de connectivité, un appareil client doit utiliser l'authentification mutuelle TLS avec un certificat client X.509 pour s'authentifier. Pour plus d'informations, consultez la section Certificats client X.509 dans le Guide du AWS IoT Core développeur.

Un appareil client doit également être autorisé à effectuer l'greengrass:Discoveraction. L'exemple de AWS IoT politique suivant permet à un AWS IoT objet nommé MyClientDevice1 Discover de fonctionner par lui-même.

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

Les variables de politique des objets (iot:Connection.Thing.*) ne sont pas prises en charge dans AWS IoT les politiques relatives aux appareils principaux ou aux opérations du plan de données Greengrass. Vous pouvez plutôt utiliser un caractère générique correspondant à plusieurs appareils portant des noms similaires. Par exemple, vous pouvez spécifier MyGreengrassDevice* de correspondre MyGreengrassDevice1MyGreengrassDevice2, et ainsi de suite.

Pour plus d'informations, consultez AWS IoT Coreles politiques dans le guide du AWS IoT Core développeur.

Demande

La demande contient les en-têtes HTTP standard et est envoyée au point de terminaison Greengrass Discovery, comme indiqué dans les exemples suivants.

Le numéro de port varie selon que le périphérique principal est configuré pour envoyer du trafic HTTPS via le port 8443 ou le port 443. Pour plus d’informations, consultez Connexion au port 443 ou via un proxy réseau.

Note

Ces exemples utilisent le point de terminaison Amazon Trust Services (ATS), qui fonctionne avec les certificats CA racine ATS recommandés. Les points de terminaison doivent correspondre au type de certificat CA racine.

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

Les clients qui se connectent sur le port 443 doivent implémenter l'extension TLS ALPN (Application Layer Protocol Negotiation) et la transmettre x-amzn-http-ca comme ProtocolName dans le. ProtocolNameList Pour plus d'informations, consultez la section Protocoles du guide du AWS IoT développeur.

Réponse

En cas de succès, l'en-tête de réponse inclut le code d'état HTTP 200 et le corps de la réponse contient le document de réponse Discover.

Note

Parce qu'elle AWS IoT Greengrass V2 utilise la même API de découverte queAWS IoT Greengrass V1, la réponse organise les informations selon des AWS IoT Greengrass V1 concepts, tels que les groupes Greengrass. La réponse contient une liste de groupes Greengrass. DansAWS IoT Greengrass V2, chaque périphérique principal appartient à son propre groupe, où le groupe contient uniquement ce périphérique principal et ses informations de connectivité.

Exemple de documents de réponse à une découverte

Le document suivant montre la réponse d'un appareil client associé à un périphérique principal de Greengrass. Le périphérique principal possède un point de terminaison et un certificat 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-----" ] } ] }

Le document suivant montre la réponse d'un appareil client associé à deux périphériques principaux. Les appareils principaux ont plusieurs points de terminaison et plusieurs certificats de groupe 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-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-----" ] } ] }

Testez l'API de découverte avec cURL

Si vous l'avez cURL installée, vous pouvez tester l'API de découverte. L'exemple suivant indique les certificats d'un appareil client pour authentifier une demande auprès du point de terminaison de l'API de découverte 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
Note

L'-iargument indique de générer des en-têtes de réponse HTTP. Vous pouvez utiliser cette option pour identifier les erreurs.

Si la demande aboutit, cette commande produit une réponse similaire à l'exemple suivant.

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

Si la commande génère une erreur, consultez la section Résolution des problèmes liés à la découverte de Greengrass.