RESTful-API für Greengrass Discovery - AWS IoT Greengrass

AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

RESTful-API für Greengrass Discovery

Alle Client-Geräte, die mit einemAWS IoT Greengrass Core kommunizieren, müssen Mitglied einer Greengrass-Gruppe sein. Jede Gruppe muss einen Greengrass Core haben. Die Discovery-API ermöglicht es Geräten, Informationen abzurufen, die für die Verbindung mit einem Greengrass-Kern erforderlich sind, der sich in derselben Greengrass-Gruppe wie das Client-Gerät befindet. Wenn ein Client-Gerät zum ersten Mal online geht, kann es eine Verbindung zumAWS IoT Greengrass Dienst herstellen und die Discovery-API verwenden, um Folgendes zu finden:

  • Die Gruppe, zu der es gehört Ein Client-Gerät kann Mitglied von bis zu 10 Gruppen sein.

  • Die IP-Adresse und der Port für den Greengrass Core in der Gruppe.

  • Das CA-Gruppenzertifikat, das zur Authentifizierung des Greengrass Core-Geräts verwendet werden kann.

Anmerkung

Client-Geräte können dieAWS IoT Device SDKs auch zum Auffinden von Verbindungsinformationen für einen Greengrass Core verwenden. Weitere Informationen finden Sie unter AWS IoT Geräte-SDK.

Senden Sie zur Nutzung dieser API HTTP-Anfragen an den Discovery API-Endpunkt. Beispiel:

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

Eine Liste der unterstützten Amazon Web Services Services-Regionen und Endpunkte für dieAWS IoT Greengrass Discovery-API finden Sie unter AWS IoT GreengrassEndpunkte und Kontingente in der Allgemeine AWS-Referenz. Dies ist nur eine Datenebenen-API. Die Endpunkte für die Gruppenverwaltung und AWS IoT Core-Operationen unterscheiden sich von den Discovery-API-Endpunkten.

Anfrage

Die Anfrage enthält die Standard-HTTP-Header und wird an den Greengrass Discovery-Endpunkt gesendet, wie in den folgenden Beispielen gezeigt.

Die Portnummer hängt davon ab, ob der Core für das Senden von HTTPS-Datenverkehr über Port 8443 oder Port 443 konfiguriert ist. Weitere Informationen finden Sie unter Verbindungsherstellung auf Port 443 oder über einen Netzwerk-Proxy.

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

Clients, die eine Verbindung über Port 443 herstellen, müssen die TLS-Erweiterung Application Layer Protocol Negotiation (ALPN) implementieren undx-amzn-http-ca als dieProtocolName in übergebenProtocolNameList. Weitere Informationen finden Sie unter Protokolle im AWS IoTEntwicklerhandbuch.

Anmerkung

Diese Beispiele verwenden den Amazon Trust Services (ATS)-Endpunkt, der mit ATS-Stammzertifizierungsstellenzertifikat verwendet wird (empfohlen). Endpunkte müssen dem Typ des Stammzertifizierungsstellenzertifikats entsprechen. Weitere Informationen finden Sie unter Service-Endpunkte müssen mit dem Zertifikatstyp der Stammzertifizierungsstelle übereinstimmen.

Antwort

Bei erfolgreicher Anfrage enthält die Antwort die Standard-HTTP-Kopfzeilen sowie den folgenden Code und Text:

HTTP 200 BODY: response document

Weitere Informationen finden Sie unter Beispieldokumente für Discovery-Antwort.

Berechtigung zum Discovery

Für das Abrufen der Verbindungsinformationen ist eine Richtlinie erforderlich, die es dem Aufrufer erlaubt, die Aktion greengrass:Discover durchzuführen. Die einzige akzeptierte Form der Authentifizierung ist die gegenseitige TLS-Authentifizierung mit einem Client-Zertifikat. Im Folgenden finden Sie eine Beispielrichtlinie, die einem Aufrufer das Durchführen dieser Aktion ermöglicht:

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

Beispieldokumente für Discovery-Antwort

Das folgende Dokument zeigt die Antwort für ein Client-Gerät, das Mitglied einer Gruppe mit einem Greengrass-Kern, einem Endpunkt und einem Gruppen-CA-Zertifikat ist:

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

Das folgende Dokument zeigt die Antwort für ein Client-Gerät, das Mitglied von zwei Gruppen mit einem Greengrass-Kern, mehreren Endpunkten und mehreren Gruppen-CA-Zertifikaten ist:

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

Eine Greengrass-Gruppe muss genau einen Greengrass Core definieren. Jede Antwort des AWS IoT Greengrass-Service, die eine Liste von Greengrass Cores enthält, enthält nur einen einzigen Greengrass Core.

Wenn Sie cURL installiert haben, können Sie die Discovery-Anfrage testen. Beispiel:

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