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:
-
Greengrass Discovery RESTful API im AWS IoT Greengrass Version 1 Entwicklerhandbuch für .
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.
Themen
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
, MyGreengrassDevice2
usw. ü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
alsProtocolName
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
\ --key1a23bc4d56.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-----\n
cert-contents
\n-----END CERTIFICATE-----\n" ] } ] }
Wenn der Befehl einen Fehler ausgibt, finden Sie weitere Informationen unter Behebung von Greengrass-Erkennungsproblemen.