RESTful-API zur Greengrass-Erkennung - AWS IoT Greengrass

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 zur Greengrass-Erkennung

AWS IoT Greengrass stellt den Discover API-Vorgang bereit, mit dem Client-Geräte Greengrass-Core-Geräte identifizieren können, mit denen sie eine Verbindung herstellen können. Client-Geräte verwenden diesen Vorgang auf Datenebene, um Informationen abzurufen, die für die Verbindung mit Greengrass-Core-Geräten erforderlich sind, bei denen Sie sie dem BatchAssociateClientDeviceWithCoreDevice API-Vorgang zuordnen. Wenn ein Client-Gerät online geht, kann es eine Verbindung zum AWS IoT Greengrass Cloud-Service herstellen und die Erkennungs-API verwenden, um Folgendes zu finden:

  • Die IP-Adresse und der Port für jedes zugehörige Greengrass-Kerngerät.

  • Das CA-Zertifikat des Core-Geräts, das Client-Geräte zur Authentifizierung des Greengrass-Core-Geräts verwenden können.

Anmerkung

Client-Geräte können den Discovery-Client auch in der verwendenAWS IoT Device SDK, um Konnektivitätsinformationen für Greengrass-Core-Geräte zu ermitteln. Der Discovery-Client verwendet die Discovery-API. Weitere Informationen finden Sie hier:

Um diesen API-Vorgang zu verwenden, senden Sie HTTP-Anforderungen an die Discovery-API auf dem Greengrass-Datenebene-Endpunkt. Dieser API-Endpunkt hat das folgende Format.

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

Eine Liste der unterstützten AWS-Regionen und Endpunkte für die AWS IoT Greengrass Discovery-API finden Sie unter -AWS IoT Greengrass V2Endpunkte und -Kontingente im Allgemeine AWS-Referenz. Diese API-Operation ist nur auf dem Greengrass-Endpunkt der Datenebene verfügbar. Der Endpunkt der Steuerebene, den Sie zum Verwalten von Komponenten und Bereitstellungen verwenden, unterscheidet sich vom Endpunkt der Datenebene.

Anmerkung

Die Erkennungs-API ist für AWS IoT Greengrass V1 und identischAWS IoT Greengrass V2. Wenn Sie Client-Geräte haben, die eine Verbindung zu einem -AWS IoT Greengrass V1Core herstellen, können Sie sie mit AWS IoT Greengrass V2-Core-Geräten verbinden, ohne den Code auf den Client-Geräten zu ändern. Weitere Informationen finden Sie unter Greengrass Discovery RESTful API im AWS IoT Greengrass Version 1 -Entwicklerhandbuch.

Erkennungsauthentifizierung und -autorisierung

Um die Discovery-API zum Abrufen von Konnektivitätsinformationen zu verwenden, muss ein Client-Gerät die gegenseitige TLS-Authentifizierung mit einem X.509-Client-Zertifikat zur Authentifizierung verwenden. Weitere Informationen finden Sie unter X.509-Clientzertifikate im AWS IoT Core Entwicklerhandbuch für .

Ein Client-Gerät muss auch über die Berechtigung zum Ausführen der greengrass:Discover Aktion verfügen. Die folgende AWS IoT Beispielrichtlinie erlaubt es einem -AWS IoTObjekt mit dem Namen MyClientDevice1 für Discover sich selbst auszuführen.

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

Objektrichtlinienvariablen (iot:Connection.Thing.*) werden für in AWS IoT Richtlinien für -Core-Geräte oder Greengrass-Operationen auf Datenebene nicht unterstützt. Stattdessen können Sie einen Platzhalter verwenden, der mehreren Geräten entspricht, die ähnliche Namen haben. Sie können beispielsweise angeben, MyGreengrassDevice* dass mit MyGreengrassDevice1, MyGreengrassDevice2usw. übereinstimmt.

Weitere Informationen finden Sie unter -AWS IoT CoreRichtlinien im AWS IoT Core -Entwicklerhandbuch.

Anforderung

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

Die Portnummer hängt davon ab, ob das Core-Gerät so konfiguriert ist, dass HTTPS-Datenverkehr über Port 8443 oder Port 443 gesendet wird. Weitere Informationen finden Sie unter Verbindungsherstellung auf Port 443 oder über einen Netzwerk-Proxy.

Anmerkung

In diesen Beispielen wird der Amazon Trust Services (ATS)-Endpunkt verwendet, der mit den empfohlenen ATS-Stammzertifizierungsstellenzertifikaten funktioniert. Endpunkte müssen dem Typ des Stammzertifizierungsstellenzertifikats entsprechen.

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
Anmerkung

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

Antwort

Bei Erfolg enthält der Antwort-Header den HTTP 200-Statuscode und der Antworttext enthält das Discover-Antwortdokument.

Anmerkung

Da dieselbe Erkennungs-API wie AWS IoT Greengrass V2 verwendetAWS IoT Greengrass V1, organisiert die Antwort Informationen nach AWS IoT Greengrass V1 Konzepten wie Greengrass-Gruppen. Die Antwort enthält eine Liste von Greengrass-Gruppen. In befindet sich AWS IoT Greengrass V2jedes Core-Gerät in einer eigenen Gruppe, wobei die Gruppe nur dieses Core-Gerät und seine Konnektivitätsinformationen enthält.

Beispieldokumente für Discovery-Antwort

Das folgende Dokument zeigt die Antwort für ein Client-Gerät, das einem Greengrass-Kerngerät zugeordnet ist. Das Core-Gerät verfügt über einen Endpunkt und ein CA-Zertifikat.

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

Das folgende Dokument zeigt die Antwort für ein Client-Gerät, das zwei -Core-Geräten zugeordnet ist. Die -Core-Geräte verfügen über mehrere Endpunkte und mehrere Gruppen-CA-Zertifikate.

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

Testen der Discovery-API mit cURL

Wenn Sie cURL installiert haben, können Sie die Discovery-API testen. Das folgende Beispiel gibt die Zertifikate eines Client-Geräts an, um eine Anforderung an den Greengrass-Discovery-API-Endpunkt zu authentifizieren.

curl -i \ --cert 1a23bc4d56.cert.pem \ --key 1a23bc4d56.private.key \ https://greengrass-ats.iot.us-west-2.amazonaws.com:8443/greengrass/discover/thing/MyClientDevice1
Anmerkung

Das -i Argument gibt an, dass HTTP-Antwort-Header ausgegeben werden sollen. Sie können diese Option verwenden, um Fehler zu identifizieren.

Wenn die Anforderung erfolgreich ist, gibt dieser Befehl eine Antwort ähnlich dem folgenden Beispiel aus.

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

Wenn der Befehl einen Fehler ausgibt, finden Sie weitere Informationen unter Behebung von Greengrass-Erkennungsproblemen.