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.
Konfigurieren des AWS IoT Greengrass Core
Ein -AWS IoT GreengrassKern ist ein -AWS IoTObjekt (Gerät), das als Hub oder Gateway in Edge-Umgebungen fungiert. Wie andere AWS IoT-Geräte ist ein Core in der Registrierung vorhanden, verfügt über einen Geräteschatten und verwendet ein Gerätezertifikat, um sich gegenüber AWS IoT Core und AWS IoT Greengrass zu autorisieren. Das Core-Gerät führt die AWS IoT Greengrass-Core-Software aus. So kann es die lokalen Prozesse für Greengrass-Gruppen verwalten, z. B. Kommunikation, Schattensynchronisierung und Austausch des Tokens.
Die AWS IoT Greengrass Core-Software bietet folgende Funktionalität:
-
Bereitstellung und lokale Ausführung von Connectors und Lambda-Funktionen.
-
Verarbeiten Sie Datenströme lokal mit automatischen Exporten in die AWS Cloud.
-
MQTT-Nachrichten über das lokale Netzwerk zwischen Geräten, Connectors und Lambda-Funktionen mithilfe verwalteter Abonnements.
-
MQTT-Nachrichten zwischen AWS IoT und Geräten, Connectors und Lambda-Funktionen mithilfe verwalteter Abonnements.
-
Sichere Verbindungen zwischen Geräten und mithilfe der Geräteauthentifizierung und AWS Cloud-autorisierung.
-
Lokale Shadow-Synchronisierung von Geräten. Schatten können so konfiguriert werden, dass sie mit dem synchronisiert werdenAWS Cloud.
-
Kontrollierter Zugriff auf lokale Geräte- und Volume-Ressourcen.
-
Bereitstellung von Modellen für das maschinelle Lernen, die in der Cloud geschult werden, für die Ausführung lokaler Inferenzen.
-
Automatische Erkennung von IP-Adressen, die Geräte in die Lage versetzt, das Greengrass Core-Gerät zu erkennen.
-
Zentrale Bereitstellung neuer oder aktualisierter Gruppenkonfigurationen. Nach dem Download der Konfigurationsdaten wird das Core-Gerät automatisch neu gestartet.
-
Sichere Softwareupdates over-the-air (OTA) von benutzerdefinierten Lambda-Funktionen.
-
Sichere, verschlüsselte Speicherung lokaler Secrets und kontrollierter Zugriff durch Konnektoren und Lambda-Funktionen.
AWS IoT Greengrass Core-Konfigurationsdatei
Die Konfigurationsdatei für die AWS IoT Greengrass Core-Software ist config.json
. Sie befindet sich im Verzeichnis /
.greengrass-root
/config
Anmerkung
greengrass-root
steht für den Pfad, unter dem die AWS IoT Greengrass Core-Software auf Ihrem Gerät installiert ist. Normalerweise ist dies das Verzeichnis /greengrass
.
Wenn Sie die Option Standardgruppenerstellung von der AWS IoT Greengrass Konsole aus verwenden, wird die config.json
Datei auf dem Core-Gerät in einem funktionierenden Zustand bereitgestellt.
Sie können den Inhalt dieser Datei mit folgendem Befehl überprüfen:
cat /
greengrass-root
/config/config.json
Im Folgenden sehen Sie ein Beispiel für eine config.json
-Datei. Dies ist die Version, die generiert wird, wenn Sie den Core über die AWS IoT Greengrass Konsole erstellen.
Service-Endpunkte müssen mit dem Zertifikatstyp der Stammzertifizierungsstelle übereinstimmen
Ihre AWS IoT Core- und AWS IoT Greengrass-Endpunkte müssen dem Zertifikattyp des Stamm-CA-Zertifikats auf Ihrem Gerät entsprechen. Wenn die Endpunkte und der Zertifikatstyp nicht übereinstimmen, schlagen die Authentifizierungsversuche zwischen AWS IoT Core und AWS IoT Greengrass fehl. Weitere Informationen finden Sie unter Serverauthentifizierung im AWS IoT-Entwicklerhandbuch.
Wenn Ihr Gerät ein Amazon-Trust-Services-(ATS)-Stammzertifizierungsstellenzertifikat verwendet, was die bevorzugte Methode ist, muss es auch ATS-Endpunkte für Operationen auf Geräteverwaltung und Datenerkennungsebene verwenden. ATS-Endpunkte beinhalten das ats
-Segment, wie in der folgenden Syntax für den AWS IoT Core-Endpunkt angezeigt.
prefix
-ats.iot.region
.amazonaws.com
Anmerkung
Aus Gründen der Abwärtskompatibilität unterstützt AWS IoT Greengrass derzeit ältere VeriSign Stammzertifizierungsstellenzertifikate und Endpunkte in einigen AWS-Regionen. Wenn Sie ein VeriSign älteres Stammzertifizierungsstellenzertifikat verwenden, empfehlen wir Ihnen, stattdessen einen ATS-Endpunkt zu erstellen und ein ATS-Stammzertifizierungsstellenzertifikat zu verwenden. Andernfalls stellen Sie sicher, dass Sie die entsprechenden Legacy-Endpunkte verwenden. Weitere Informationen finden Sie unter Unterstützte Legacy-Endpunkte im Allgemeine Amazon Web Services-Referenz.
Endpunkte in config.json
Auf einem Greengrass Core-Gerät sind Endpunkte im Objekt coreThing
in der Datei config.json angegeben. Die Eigenschaft iotHost
steht für den AWS IoT Core-Endpunkt. Die Eigenschaft ggHost
steht für den AWS IoT Greengrass-Endpunkt. Im folgenden Beispiel für einen Ausschnitt legen diese Eigenschaften ATS-Endpunkte fest.
{ "coreThing" : { ... "iotHost" : "abcde1234uwxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", ... },
- AWS IoT Core-Endpunkt
-
Sie erhalten Ihren AWS IoT Core-Endpunkt, indem Sie den CLI-Befehl aws iot describe-endpoint mit dem entsprechenden
--endpoint-type
-Parameter ausführen.-
Um einen ATS-signierten Endpunkt zurückzugeben, führen Sie Folgendes aus.
aws iot describe-endpoint --endpoint-type iot:Data-ATS
-
Um einen Legacy- VeriSign signierten Endpunkt zurückzugeben, führen Sie Folgendes aus:
aws iot describe-endpoint --endpoint-type iot:Data
-
- AWS IoT Greengrass-Endpunkt
-
Für Ihren AWS IoT Greengrass-Endpunkt wird das Host-Präfix Ihres
iotHost
-Endpunkts durch greengrass ersetzt. Zum Beispiel lautet der signierte ATS-Endpunktgreengrass-ats.iot.
. Dieser verwendet die selbe Region wie Ihr AWS IoT Core-Endpunkt.region
.amazonaws.com
Verbindungsherstellung auf Port 443 oder über einen Netzwerk-Proxy
Diese Funktion ist für AWS IoT Greengrass Core v1.7 und höher verfügbar.
Greengrass-Cores kommunizieren mit AWS IoT Core unter Verwendung des MQTT-Messaging-Protokolls mit TLS-Client-Authentifizierung. Standardmäßig verwendet MQTT über TLS den Port 8883. Doch als Sicherheitsmaßnahme können restriktive Umgebungen den ein- und ausgehenden Datenverkehr auf einen kleinen Bereich von TCP-Ports einschränken. Zum Beispiel könnte eine Unternehmens-Firewall Port 443 für HTTPS-Datenverkehr öffnen, andere Ports, die für weniger geläufige Protokolle genutzt werden, wie z. B. Port 8883, für MQTT-Datenverkehr schließen. Bei anderen restriktiven Umgebungen muss der gesamte Datenverkehr möglicherweise über einen HTTP-Proxy laufen, der mit dem Internet verbunden ist.
Um die Kommunikation in solchen Fällen zu ermöglichen, erlaubt AWS IoT Greengrass die folgenden Konfigurationen:
-
MQTT mit TLS-Client-Authentifizierung über Port 443. Wenn Ihr Netzwerk Verbindungen über Port 443 zulässt, können Sie den Core so konfigurieren, dass er anstelle des Standard-Ports 8883 Port 443 für MQTT-Datenverkehr verwendet. Dabei kann es sich um eine direkte Verbindung mit Port 443 oder eine Verbindung über einen Netzwerk-Proxy-Server handeln.
AWS IoT Greengrass ermöglicht diese Verbindung mittels der Application Layer Protocol Network
(ALPN) TLS-Erweiterung. Wie bei der Standardkonfiguration verwendet MQTT über TLS auf Port 443 eine zertifikatbasierte Client-Authentifizierung. Wenn für die Verwendung einer direkten Verbindung mit Port 443 konfiguriert, unterstützt der Core over-the-air (OTA)-Updates für AWS IoT Greengrass Software. Diese Unterstützung erfordert AWS IoT Greengrass Core v1.9.3 oder höher.
-
HTTPS-Kommunikation über Port 443. AWS IoT Greengrass sendet HTTPS-Datenverkehr standardmäßig über Port 8443. Sie können ihn jedoch so konfigurieren, dass er Port 443 verwendet.
-
Verbindung über einen Netzwerk-Proxy. Sie können einen Netzwerk-Proxy-Server so konfigurieren, dass er als Vermittler beim Herstellen der Verbindung mit dem Greengrass-Core fungiert. Nur grundlegende Authentifizierung und HTTP- und HTTPS-Proxys werden unterstützt.
Die Proxy-Konfiguration wird über die
no_proxy
Umgebungsvariablenhttp_proxy
,https_proxy
und an benutzerdefinierte Lambda-Funktionen übergeben. Benutzerdefinierte Lambda-Funktionen müssen diese übergebenen Einstellungen verwenden, um eine Verbindung über den Proxy herzustellen. Häufige Bibliotheken, die von Lambda-Funktionen zum Herstellen von Verbindungen verwendet werden (wie boto3- oder cURL- und Python-requests
Pakete), verwenden diese Umgebungsvariablen in der Regel standardmäßig. Wenn eine Lambda-Funktion auch dieselben Umgebungsvariablen angibt, überschreibt sie AWS IoT Greengrass nicht.Wichtig
Greengrass-Cores, die für die Verwendung eines Netzwerk-Proxys konfiguriert wurden, unterstützen keine OTA-Aktualisierungen.
So konfigurieren Sie MQTT über Port 443
Für diese Funktion ist AWS IoT Greengrass Core v1.7 oder höher erforderlich.
Dieses Verfahren ermöglicht es dem Greengrass-Core, Port 443 für MQTT-Messaging mit AWS IoT Core zu verwenden.
-
Führen Sie den folgenden Befehl aus, um den Greengrass-Daemon zu stoppen:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Öffnen Sie
zur Bearbeitung als su-Benutzer.greengrass-root
/config/config.json -
Fügen Sie im Objekt
coreThing
die EigenschaftiotMqttPort
hinzu und setzen Sie den Wert auf443
, wie im folgenden Beispiel gezeigt.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
"iotMqttPort" : 443,
"ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600 }, ... } -
Starten Sie den -Daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
So konfigurieren Sie HTTPS über Port 443
Für diese Funktion ist AWS IoT Greengrass Core v1.8 oder höher erforderlich.
Dieses Verfahren konfiguriert den Kern so, dass er Port 443 für die HTTPS-Kommunikation verwendet.
-
Führen Sie den folgenden Befehl aus, um den Greengrass-Daemon zu stoppen:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Öffnen Sie
zur Bearbeitung als su-Benutzer.greengrass-root
/config/config.json -
Fügen Sie im Objekt
coreThing
die EigenschafteniotHttpPort
undggHttpPort
hinzu, wie im folgenden Beispiel dargestellt.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
"iotHttpPort" : 443,
"ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com","ggHttpPort" : 443,
"keepAlive" : 600 }, ... } -
Starten Sie den -Daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
So konfigurieren Sie einen Netzwerk-Proxy
Für diese Funktion ist AWS IoT Greengrass Core v1.7 oder höher erforderlich.
Dieses Verfahren ermöglicht AWS IoT Greengrass, eine Internetverbindung über einen HTTP- oder HTTPS-Netzwerk-Proxy herzustellen.
-
Führen Sie den folgenden Befehl aus, um den Greengrass-Daemon zu stoppen:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Öffnen Sie
zur Bearbeitung als su-Benutzer.greengrass-root
/config/config.json -
Fügen Sie im Objekt
coreThing
das Objekt networkProxy hinzu, wie im folgenden Beispiel gezeigt.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600,
"networkProxy": { "noProxyAddresses" : "http://128.12.34.56,www.mywebsite.com", "proxy" : { "url" : "https://my-proxy-server:1100", "username" : "Mary_Major", "password" : "pass@word1357" } }
}, ... } -
Starten Sie den -Daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
networkProxy-Objekt
Geben Sie mithilfe des networkProxy
-Objekts Informationen zum Netzwerk-Proxy an. Dieses Objekt hat die folgenden Eigenschaften.
Feld | Beschreibung |
---|---|
noProxyAddresses |
Optional. Eine durch Komma getrennte Liste von IP-Adressen oder Host-Namen, die vom Proxy ausgeschlossen sind. |
proxy |
Der Proxy, mit dem die Verbindung hergestellt werden soll. Ein Proxy hat die folgenden Eigenschaften.
|
Zulassen von Endpunkten
Die Kommunikation zwischen Greengrass-Geräten und AWS IoT Core oder AWS IoT Greengrass muss authentifiziert werden. Diese Authentifizierung basiert auf registrierten X.509-Gerätezertifikaten und kryptografischen Schlüsseln. Damit authentifizierte Anfragen ohne zusätzliche Verschlüsselung Proxys durchlaufen können, müssen Sie die folgenden Endpunkte zulassen.
Endpunkt | Port | Beschreibung |
---|---|---|
greengrass. |
443 |
Für Operationen auf Steuerebene für die Gruppenverwaltung |
or
|
MQTT: 8883 oder 443 HTTPS: 8443 oder 443 |
Für Operationen auf Datenebene für das Gerätemanagement, wie z. B. Schattensynchronisierung Erlauben Sie die Verwendung eines oder beider Endpunkte, je nachdem, ob Ihre Core- und Client-Geräte Amazon Trust Services (bevorzugte) Root-CA-Zertifikate, Legacy-Root-CA-Zertifikate oder beides verwenden. Weitere Informationen finden Sie unter Service-Endpunkte müssen mit dem Zertifikatstyp der Stammzertifizierungsstelle übereinstimmen. |
or
|
8443 oder 443 |
Für Geräteerkennungsoperationen Erlauben Sie die Verwendung eines oder beider Endpunkte, je nachdem, ob Ihre Core- und Client-Geräte Amazon Trust Services (bevorzugte) Root-CA-Zertifikate, Legacy-Root-CA-Zertifikate oder beides verwenden. Weitere Informationen finden Sie unter Service-Endpunkte müssen mit dem Zertifikatstyp der Stammzertifizierungsstelle übereinstimmen. AnmerkungClients, die eine Verbindung über Port 443 herstellen, müssen die TLS-Erweiterung Application Layer Protocol Negotiation (ALPN) |
*.s3.amazonaws.com |
443 |
Wird für Bereitstellungsvorgänge und over-the-air Updates verwendet. Dieses Format enthält das Zeichen |
logs. |
443 |
Erforderlich, wenn die Greengrass-Gruppe so konfiguriert ist, dass Protokolle in CloudWatch geschrieben werden. |
Konfigurieren eines Schreibverzeichnisses für AWS IoT Greengrass
Diese Funktion ist für AWS IoT Greengrass Core v1.6 und höher verfügbar.
Standardmäßig wird die AWS IoT Greengrass Core-Software unter einem einzigen Stammverzeichnis bereitgestellt, in dem AWS IoT Greengrass alle Lese- und Schreiboperationen ausführt. Sie können AWS IoT Greengrass allerdings so konfigurieren, dass ein separater Ordner für alle Schreiboperationen, einschließlich der Erstellung von Verzeichnissen und Dateien, verwendet wird. In diesem Fall verwendet AWS IoT Greengrass zwei Top-Level-Verzeichnisse:
-
Das
greengrass-root
-Verzeichnis, das Sie für Lese-/Schreibvorgänge oder optional schreibgeschützt verwenden können. Darin sind die AWS IoT Greengrass Core-Software und andere kritische Komponenten enthalten, die während der Laufzeit unveränderlich bleiben sollen, beispielsweise Zertifikate undconfig.json
. -
Das angegebene Schreibverzeichnis. Dies enthält beschreibbare Inhalte wie Protokolle, Statusinformationen und bereitgestellte benutzerdefinierte Lambda-Funktionen.
Diese Konfiguration führt zu der folgenden Verzeichnisstruktur.
- Greengrass-Stammverzeichnis
-
greengrass-root
/ |-- certs/ | |-- root.ca.pem | |--hash
.cert.pem | |--hash
.private.key | |--hash
.public.key |-- config/ | |-- config.json |-- ggc/ | |-- packages/ | |--package-version
/ | |-- bin/ | |-- daemon | |-- greengrassd | |-- lambda/ | |-- LICENSE/ | |-- release_notes_package-version
.html | |-- runtime/ | |-- java8
/ | |-- nodejs8.10
/ | |-- python3.8
/ | |-- core/ - Schreibverzeichnis
-
write-directory
/ |-- packages/ | |--package-version
/ | |-- ggc_root/ | |-- rootfs_nosys/ | |-- rootfs_sys/ | |-- var/ |-- deployment/ | |-- group/ | |-- group.json | |-- lambda/ | |-- mlmodel/ |-- var/ | |-- log/ | |-- state/
So konfigurieren Sie ein Schreibverzeichnis
-
Führen Sie den folgenden Befehl aus, um den AWS IoT Greengrass-Daemon zu beenden:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Öffnen Sie
zur Bearbeitung als su-Benutzer.greengrass-root
/config/config.json -
Fügen Sie
writeDirectory
als einen Parameter hinzu und geben Sie, wie im folgenden Beispiel, den Pfad zum Zielverzeichnis an.{ "coreThing": { "caPath": "root-CA.pem", "certPath": "hash.pem.crt", ... }, ... "writeDirectory" : "/
write-directory
" }Anmerkung
Sie können die
writeDirectory
-Einstellung so oft aktualisieren, wie Sie möchten. Nachdem die Einstellung aktualisiert wurde, verwendet AWS IoT Greengrass das neu angegebene Schreibverzeichnis beim nächsten Start. Allerdings wird kein Inhalt aus dem vorherigen Schreibverzeichnis migriert. -
Nachdem Ihr Schreibverzeichnis konfiguriert ist, können Sie optional das
greengrass-root
-Verzeichnis auf schreibgeschützt einstellen. Anweisungen finden Sie unter So wird das Greengrass-Stammverzeichnis auf schreibgeschützt eingestellt.Andernfalls starten Sie den AWS IoT Greengrass-Daemon:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
So aktivieren Sie den Schreibschutz für das Greengrass-Stammverzeichnis
Führen Sie diese Schritte nur aus, wenn das Greengrass-Stammverzeichnis schreibgeschützt sein soll. Das Schreibverzeichnis muss vor Beginn konfiguriert werden.
-
Erteilen Sie Zugriffsberechtigungen für erforderliche Verzeichnisse:
-
Dem
config.json
-Besitzer Lese- und Schreibberechtigung erteilen.sudo chmod 0600 /
greengrass-root
/config/config.json -
Machen Sie ggc_user zum Besitzer der Zertifikate und System-Lambda-Verzeichnisse.
sudo chown -R ggc_user:ggc_group /
greengrass-root
/certs/ sudo chown -R ggc_user:ggc_group /greengrass-root
/ggc/packages/1.11.6/lambda/Anmerkung
Die Konten ggc_user und ggc_group werden standardmäßig verwendet, um System-Lambda-Funktionen auszuführen. Wenn Sie die Standardzugriffsidentität auf Gruppenebene konfiguriert haben, um verschiedene Konten zu verwenden, sollten Sie stattdessen dem Benutzer (UID) und der Gruppe (GID) Berechtigungen erteilen.
-
-
Stellen Sie mit Ihrem bevorzugten Mechanismus den Schreibschutz für das
greengrass-root
-Verzeichnis ein.Anmerkung
Sie können den Schreibschutz für das
greengrass-root
-Verzeichnis einstellen, indem Sie das Verzeichnis als schreibgeschützt mounten. Um jedoch over-the-air (OTA)-Updates auf die AWS IoT Greengrass -Core-Software in einem gemounteten Verzeichnis anzuwenden, muss das Verzeichnis zuerst entmountet und nach dem Update erneut gemountet werden. Sie können dieseumount
- undmount
-Operationen für dieota_pre_update
- undota_post_update
-Skripts hinzufügen. Weitere Informationen über OTA-Updates finden Sie unter Greengrass OTA-Update-Agent und Managed Respawn mit OTA-Updates. -
Starten Sie den -Daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd startWenn die Berechtigungen aus Schritt 1 nicht korrekt festgelegt wurden, wird der Daemon nicht gestartet.
Konfigurieren der MQTT-Einstellungen
In der AWS IoT Greengrass Umgebung können lokale Client-Geräte, Lambda-Funktionen, Konnektoren und Systemkomponenten miteinander und mit kommunizierenAWS IoT Core. Die gesamte Kommunikation erfolgt durch den Core, der die Abonnements verwaltet, die die MQTT-Kommunikation zwischen Entitäten autorisieren.
Informationen zu MQTT-Einstellungen, die Sie für AWS IoT Greengrass konfigurieren können, finden Sie in den folgenden Abschnitten:
Anmerkung
OPC-UA ist ein Standard für den Informationsaustausch für die industrielle Kommunikation. Um die Unterstützung für OPC-UA auf dem Greengrass-Kern zu implementieren, können Sie den IoT SiteWise -Konnektor verwenden. Der Konnektor sendet industrielle Gerätedaten von OPC-UA-Servern an Objekteigenschaften in AWS IoT SiteWise.
Nachrichtenqualität des Service
AWS IoT Greengrass unterstützt Quality of Service (QoS)-Level 0 oder 1, abhängig von Ihrer Konfiguration und dem Ziel sowie der Richtung der Kommunikation. Der Greengrass-Core fungiert als Client für die Kommunikation mit AWS IoT Core und als Nachrichtenbroker für die Kommunikation im lokalen Netzwerk.

Weitere Informationen zu MQTT und QoS finden Sie unter Erste Schritte
- Kommunikation mit der AWS Cloud
-
-
Ausgehende Nachrichten verwenden QoS 1
Der Kern sendet Nachrichten, die für AWS Cloud Ziele bestimmt sind, mit QoS 1. AWS IoT Greengrass verwendet eine MQTT-Nachrichtenwarteschlange, um diese Nachrichten zu verarbeiten. Wenn die Nachrichtenzustellung nicht von bestätigt wirdAWS IoT, wird die Nachricht gespoolt und später erneut versucht. Die Nachricht kann nicht erneut versucht werden, wenn die Warteschlange voll ist. Die Bestätigung der Nachrichtenzustellung kann dazu beitragen, Datenverluste durch intermittierende Konnektivität zu minimieren.
Da ausgehende Nachrichten QoS 1 AWS IoT verwenden, hängt die maximale Rate, mit der der Greengrass-Kern Nachrichten senden kann, von der Latenz zwischen dem Kern und abAWS IoT. Jedes Mal, wenn der Kern eine Nachricht sendet, wartet er, bis die Nachricht AWS IoT bestätigt, bevor er die nächste Nachricht sendet. Wenn die Round-Trip-Zeit zwischen dem Kern und seinem beispielsweise 50 Millisekunden AWS-Region beträgt, kann der Kern bis zu 20 Nachrichten pro Sekunde senden. Berücksichtigen Sie dieses Verhalten, wenn Sie die auswählen, AWS-Region in der Ihr Kern eine Verbindung herstellt. Um IoT-Daten mit hohem Volumen in die aufzunehmenAWS Cloud, können Sie den Stream-Manager verwenden.
Weitere Informationen zur MQTT-Nachrichtenwarteschlange, einschließlich der Konfiguration eines lokalen Speicher-Caches, der Nachrichten für AWS Cloud Ziele beibehalten kann, finden Sie unter MQTT-Nachrichtenwarteschlange für Cloud-Ziele.
-
Eingehende Nachrichten verwenden QoS 0 (Standard) oder QoS 1
Standardmäßig abonniert der Core Nachrichten aus AWS Cloud Quellen mit QoS 0. Wenn Sie persistente Sitzungen aktivieren, abonniert der Core mit QoS 1. Dies kann dazu beitragen, Datenverluste durch intermittierende Konnektivität zu minimieren. Um die QoS für diese Abonnements zu verwalten, konfigurieren Sie Persistenzeinstellungen für die lokale Spooler-Systemkomponente.
Weitere Informationen, einschließlich der Aktivierung des Kerns zum Einrichten einer persistenten Sitzung mit AWS Cloud Zielen, finden Sie unter Persistente MQTT-Sitzungen mit AWS IoT Core.
-
- Kommunikation mit lokalen Zielen
-
Die gesamte lokale Kommunikation verwendet QoS 0. Der Kern versucht einen Versuch, eine Nachricht an ein lokales Ziel zu senden, bei dem es sich um eine Greengrass-Lambda-Funktion, einen Konnektor oder ein Client-Gerät handeln kann. Der Core speichert keine Nachrichten und bestätigt die Zustellung nicht. Nachrichten können überall zwischen den Komponenten gelöscht werden.
Anmerkung
Obwohl die direkte Kommunikation zwischen Lambda-Funktionen kein MQTT-Messaging verwendet, ist das Verhalten gleich.
MQTT-Nachrichtenwarteschlange für Cloud-Ziele
MQTT-Nachrichten, die für AWS Cloud Ziele bestimmt sind, werden in die Warteschlange gestellt, um auf die Verarbeitung zu warten. Nachrichten in der Warteschlange werden in der FIFO (First-in-First-out)-Reihenfolge verarbeitet. Nachdem eine Nachricht verarbeitet und in AWS IoT Core veröffentlicht wurde, wird sie aus der Warteschlange entfernt.
Standardmäßig speichert der Greengrass-Kern unverarbeitete Nachrichten, die für AWS Cloud Ziele bestimmt sind, im Speicher. Sie können den Core so konfigurieren, dass nicht verarbeitete Nachrichten stattdessen in einem lokalen Speichercache gespeichert werden. Im Gegensatz zu speicherinternem Speicher überdauert der lokale Speicher-Cache einen Neustart (z. B. nach der Bereitstellung einer Gruppe oder ein Geräteneustart), sodass AWS IoT Greengrass die Nachrichten weiter verarbeiten kann. Sie können auch die Speichergröße konfigurieren.
Warnung
Der Greengrass-Kern stellt möglicherweise doppelte MQTT-Nachrichten in die Warteschlange, wenn er die Verbindung verliert, da er einen Veröffentlichungsvorgang wiederholt, bevor der MQTT-Client feststellt, dass er offline ist. Um doppelte MQTT-Nachrichten für Cloud-Ziele zu vermeiden, konfigurieren Sie den keepAlive
Wert des Kerns auf weniger als die Hälfte seines mqttOperationTimeout
Werts. Weitere Informationen finden Sie unter AWS IoT Greengrass Core-Konfigurationsdatei.
AWS IoT Greengrass verwendet die Spooler-Systemkomponente (die GGCloudSpooler
Lambda-Funktion), um die Nachrichtenwarteschlange zu verwalten. Sie können die folgenden GGCloudSpooler
-Umgebungsvariablen verwenden, um Speichereinstellungen zu konfigurieren.
-
GG_CONFIG_STORAGE_TYPE. Der Speicherort der Nachrichtenwarteschlange. Die folgenden Werte sind gültig:
-
FileSystem
. Speichern Sie unverarbeitete Nachrichten im lokalen Speichercache auf der Festplatte des physischen Core-Geräts. Wenn der Core neu gestartet wird, werden Nachrichten in der Warteschlange für die Verarbeitung beibehalten. Nachrichten werden nach der Verarbeitung entfernt. -
Memory
(default). Speichern Sie nicht verarbeitete Nachrichten im Arbeitsspeicher. Wenn der Core neu gestartet wird, gehen Nachrichten in der Warteschlange verloren.Diese Option sind für Geräte mit eingeschränkten Hardwaremöglichkeiten optimiert. Wenn Sie diese Konfiguration verwenden, sollten Sie Gruppen bereitstellen oder das Gerät neu starten, wenn die Serviceunterbrechung möglichst gering ist.
-
-
GG_CONFIG_MAX_SIZE_BYTES. Die Speichergröße in Bytes. Dieser Wert kann eine beliebige nicht negative Ganzzahl größer oder gleich 262144 (256 KB) sein. Eine kleinere Größe verhindert, dass die AWS IoT Greengrass Core-Software gestartet wird. Die Standardgröße ist 2.5 MB. Wenn die maximale Größe erreicht ist, werden die ältesten Nachrichten in der Warteschlange durch neue Nachrichten ersetzt.
Anmerkung
Diese Funktion ist für AWS IoT Greengrass Core v1.6 und höher verfügbar. Frühere Versionen verwenden In-Memory-Speicher mit einer Warteschlangengröße von 2,5 MB. Sie können keine Speichereinstellungen für frühere Versionen konfigurieren.
So speichern Sie Nachrichten im lokalen Speicher
Sie können AWS IoT Greengrass so konfigurieren, dass Nachrichten im Dateisystem zwischengespeichert werden und einen Core-Neustart überdauern. Dazu stellen Sie eine Funktionsdefinitionsversion bereit, in der die GGCloudSpooler
-Funktion den Speichertyp auf FileSystem
festlegt. Sie müssen den lokalen Speicher-Cache mit der AWS IoT Greengrass-API konfigurieren. Sie können dies von der Konsole aus erledigen.
Im folgenden Verfahren wird der create-function-definition-version
CLI-Befehl verwendet, um den Spooler so zu konfigurieren, dass Nachrichten in der Warteschlange im Dateisystem gespeichert werden. Außerdem wird damit eine Warteschlange mit einer Größe von 2,6 MB konfiguriert.
-
Rufen Sie die IDs der Greengrass-Zielgruppen und die Gruppenversion ab. Bei diesem Verfahren wird davon ausgegangen, dass es sich um die neueste Gruppe und Gruppenversion handelt. Die folgende Abfrage gibt die zuletzt erstellte Gruppe zurück.
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
Sie können auch nach Namen abfragen. Gruppennamen müssen nicht eindeutig sein, sodass mehrere Gruppen zurückgegeben werden können.
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"Anmerkung
Sie finden diese Werte auch in der -AWS IoTKonsole. Die Gruppen-ID wird auf der Seite Einstellungen der Gruppe angezeigt. Gruppenversions-IDs werden auf der Registerkarte Bereitstellungen der Gruppe angezeigt.
-
Kopieren Sie die
LatestVersion
Werte undId
aus der Zielgruppe in die Ausgabe. -
Rufen Sie die neueste Gruppenversion ab.
-
Ersetzen Sie
group-id
durch die kopierteId
. -
Ersetzen Sie
latest-group-version-id
durch denLatestVersion
, den Sie kopiert haben.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
Kopieren Sie aus dem Objekt
Definition
in der Ausgabe denCoreDefinitionVersionArn
und die ARNs aller anderen Gruppenkomponenten außerFunctionDefinitionVersionArn
. Diese Werte verwenden Sie, wenn Sie eine neue Gruppenversion erstellen. -
Kopieren Sie die ID der Funktionsdefinition aus
FunctionDefinitionVersionArn
. Die ID ist die GUID, die demfunctions
-Segment im ARN folgt, wie im folgenden Beispiel gezeigt.arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
Anmerkung
Sie können auch eine Funktionsdefinition erstellen, indem Sie den
create-function-definition
Befehl ausführen und dann die ID aus der Ausgabe kopieren. -
Fügen Sie der Funktionsdefinition eine Funktionsdefinitionsversion hinzu.
-
Ersetzen Sie durch
function-definition-id
dieId
, die Sie für die Funktionsdefinition kopiert haben. -
Ersetzen Sie
arbitrary-function-id
durch einen Namen für die Funktion, z. B.spooler-function
. -
Fügen Sie dem
functions
Array alle Lambda-Funktionen hinzu, die Sie in diese Version aufnehmen möchten. Sie können denget-function-definition-version
Befehl verwenden, um die Greengrass-Lambda-Funktionen aus einer vorhandenen Funktionsdefinitionsversion abzurufen.
Warnung
Stellen Sie sicher, dass Sie einen Wert für
GG_CONFIG_MAX_SIZE_BYTES
angeben, der größer als oder gleich 262144 ist. Eine kleinere Größe verhindert, dass die AWS IoT Greengrass Core-Software gestartet wird.aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_MAX_SIZE_BYTES":"2621440","GG_CONFIG_STORAGE_TYPE":"FileSystem"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id
"}]'Anmerkung
Wenn Sie zuvor die
GG_CONFIG_SUBSCRIPTION_QUALITY
-Umgebungsvariable so einstellen, dass sie persistente Sitzungen mit AWS IoT Core unterstützt, schließen Sie sie in diese Funktions-Instance ein. -
-
Kopieren Sie den
Arn
der Funktionsdefinitionsversion aus der Ausgabe. -
Erstellen Sie eine Gruppenversion, die die System-Lambda-Funktion enthält.
-
Ersetzen Sie
group-id
durch dieId
für die Gruppe. -
Ersetzen Sie durch
core-definition-version-arn
dieCoreDefinitionVersionArn
, die Sie aus der neuesten Gruppenversion kopiert haben. -
Ersetzen Sie durch
function-definition-version-arn
dieArn
, die Sie für die neue Version der Funktionsdefinition kopiert haben. -
Ersetzen Sie die ARNs für andere Gruppenkomponenten (zum Beispiel
SubscriptionDefinitionVersionArn
oderDeviceDefinitionVersionArn
), die Sie aus der neuesten Gruppe kopiert haben. -
Entfernen Sie alle nicht verwendeten Parameter. Entfernen Sie zum Beispiel
--resource-definition-version-arn
, wenn Ihre Gruppenversion keine Ressourcen enthält.
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Kopieren Sie die
Version
aus der Ausgabe. Dies ist die ID der neuen Gruppenversion. -
Stellen Sie die Gruppe mit der neuen Gruppenversion bereit.
-
Ersetzen Sie
group-id
durch die kopierteId
für die Gruppe. -
Ersetzen Sie durch
group-version-id
dieVersion
, die Sie für die neue Gruppenversion kopiert haben.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
Sie können die Speichereinstellungen mit der AWS IoT Greengrass API aktualisieren, um eine neue Version der Funktionsdefinition zu erstellen, in der die GGCloudSpooler
-Funktion mit der aktualisierten Konfiguration enthalten ist. Fügen Sie anschließend die Funktionsdefinitionsversion einer neuen Gruppenversion (zusammen mit Ihren anderen Gruppenkomponenten) hinzu und stellen Sie die Gruppenversion bereit. Wenn Sie die Standardkonfiguration wiederherstellen möchten, können Sie eine Funktionsdefinitionsversion bereitstellen, in der die GGCloudSpooler
-Funktion nicht enthalten ist.
Diese System-Lambda-Funktion ist in der Konsole nicht sichtbar. Nachdem die Funktion der neuesten Gruppenversion hinzugefügt wurde, ist sie allerdings in Bereitstellungen enthalten, die Sie von der Konsole aus erstellen, es sei denn, Sie ersetzen oder verschieben sie mit der API.
Persistente MQTT-Sitzungen mit AWS IoT Core
Diese Funktion ist für AWS IoT Greengrass Core v1.10 und höher verfügbar.
Ein Greengrass-Core kann eine persistente Sitzung mit dem AWS IoT-Nachrichtenbroker einrichten. Eine dauerhafte Sitzung ist eine fortlaufende Verbindung, die es dem Core ermöglicht, Nachrichten zu empfangen, die gesendet werden, während der Core offline ist. Der Core ist der Client in der Verbindung.
In einer persistenten Sitzung speichert der AWS IoT-Nachrichtenbroker alle Abonnements, die der Core während der Verbindung erstellt. Wenn der Kern getrennt wird, speichert der AWS IoT Message Broker unbestätigte und neue Nachrichten, die als QoS 1 veröffentlicht und für lokale Ziele wie Lambda-Funktionen und Client-Geräte bestimmt sind. Wenn sich der Core erneut verbindet, wird die persistente Sitzung fortgesetzt, und der AWS IoT-Nachrichtenbroker sendet gespeicherte Nachrichten mit einer maximalen Rate von 10 Nachrichten pro Sekunde an den Core. Dauerhafte Sitzungen haben eine Standardablauffrist von 1 Stunde, die beginnt, wenn der Nachrichtenbroker erkennt, dass der Core getrennt wird. Weitere Informationen finden Sie unter Persistente MQTT-Sitzungen im AWS IoT -Entwicklerhandbuch.
AWS IoT Greengrass verwendet die Spooler-Systemkomponente (die GGCloudSpooler
Lambda-Funktion), um Abonnements zu erstellen, die AWS IoT als Quelle haben. Sie können die folgende GGCloudSpooler
-Umgebungsvariable verwenden, um persistente Sitzungen zu konfigurieren.
-
GG_CONFIG_SUBSCRIPTION_QUALITY. Die Qualität der Abonnements, die AWS IoT als Quelle haben. Die folgenden Werte sind gültig:
-
AtMostOnce
(default). Deaktiviert persistente Sitzungen. Abonnements verwenden QoS 0. -
AtLeastOncePersistent
. Aktiviert persistente Sitzungen. Legt dascleanSession
-Flag inCONNECT
-Nachrichten auf0
fest und abonniert mit QoS 1.Nachrichten, die mit QoS 1 veröffentlicht wurden, die der Core erhält, erreichen garantiert die In-Memory-Arbeitswarteschlange des Greengrass-Daemons. Der Core bestätigt die Nachricht, nachdem sie zur Warteschlange hinzugefügt wurde. Die nachfolgende Kommunikation von der Warteschlange zum lokalen Ziel (z. B. Greengrass-Lambda-Funktion, Konnektor oder Gerät) wird als QoS 0 gesendet. garantiert AWS IoT Greengrass keine Übermittlung an lokale Ziele.
Anmerkung
Sie können die Count-maxWorkItemKonfigurationseigenschaft verwenden, um die Größe der Arbeitselementwarteschlange zu steuern. Beispielsweise können Sie die Warteschlangengröße erhöhen, wenn Ihre Arbeitslast einen hohen MQTT-Datenverkehr erfordert.
Wenn persistente Sitzungen aktiviert sind, öffnet der Core mindestens eine zusätzliche Verbindung für den MQTT-Nachrichtenaustausch mit AWS IoT. Weitere Informationen finden Sie unter Client-IDs für MQTT-Verbindungen mit AWS IoT.
-
So konfigurieren Sie persistente MQTT-Sitzungen
Sie können AWS IoT Greengrass so konfigurieren, dass persistente Sitzungen mit AWS IoT Core verwendet werden. Dazu stellen Sie eine Funktionsdefinitionsversion bereit, in der die GGCloudSpooler
-Funktion die Abonnementqualität auf AtLeastOncePersistent
festlegt. Diese Einstellung gilt für alle Ihre Abonnements, die AWS IoT Core (cloud
) als Quelle haben. Sie müssen die AWS IoT Greengrass-API verwenden, um persistente Sitzungen zu konfigurieren. Sie können dies von der Konsole aus erledigen.
Im folgenden Verfahren wird der create-function-definition-version
CLI-Befehl verwendet, um den Spooler für die Verwendung persistenter Sitzungen zu konfigurieren. In diesem Verfahren wird davon ausgegangen, dass Sie die Konfiguration auf die neueste Gruppenversion einer vorhandenen Gruppe aktualisieren.
-
Rufen Sie die IDs der Greengrass-Zielgruppen und die Gruppenversion ab. Bei diesem Verfahren wird davon ausgegangen, dass es sich um die neueste Gruppe und Gruppenversion handelt. Die folgende Abfrage gibt die zuletzt erstellte Gruppe zurück.
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
Sie können auch nach Namen abfragen. Gruppennamen müssen nicht eindeutig sein, sodass mehrere Gruppen zurückgegeben werden können.
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"Anmerkung
Sie finden diese Werte auch in der -AWS IoTKonsole. Die Gruppen-ID wird auf der Seite Einstellungen der Gruppe angezeigt. Gruppenversions-IDs werden auf der Registerkarte Bereitstellungen der Gruppe angezeigt.
-
Kopieren Sie die
LatestVersion
Werte undId
aus der Zielgruppe in die Ausgabe. -
Rufen Sie die neueste Gruppenversion ab.
-
Ersetzen Sie
group-id
durch die kopierteId
. -
Ersetzen Sie
latest-group-version-id
durch denLatestVersion
, den Sie kopiert haben.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
Kopieren Sie aus dem Objekt
Definition
in der Ausgabe denCoreDefinitionVersionArn
und die ARNs aller anderen Gruppenkomponenten außerFunctionDefinitionVersionArn
. Diese Werte verwenden Sie, wenn Sie eine neue Gruppenversion erstellen. -
Kopieren Sie die ID der Funktionsdefinition aus
FunctionDefinitionVersionArn
. Die ID ist die GUID, die demfunctions
-Segment im ARN folgt, wie im folgenden Beispiel gezeigt.arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
Anmerkung
Sie können auch eine Funktionsdefinition erstellen, indem Sie den
create-function-definition
Befehl ausführen und dann die ID aus der Ausgabe kopieren. -
Fügen Sie der Funktionsdefinition eine Funktionsdefinitionsversion hinzu.
-
Ersetzen Sie durch
function-definition-id
dieId
, die Sie für die Funktionsdefinition kopiert haben. -
Ersetzen Sie
arbitrary-function-id
durch einen Namen für die Funktion, z. B.spooler-function
. -
Fügen Sie dem
functions
Array alle Lambda-Funktionen hinzu, die Sie in diese Version aufnehmen möchten. Sie können denget-function-definition-version
Befehl verwenden, um die Greengrass-Lambda-Funktionen aus einer vorhandenen Funktionsdefinitionsversion abzurufen.
aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_SUBSCRIPTION_QUALITY":"AtLeastOncePersistent"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id
"}]'Anmerkung
Wenn Sie zuvor die Umgebungsvariablen
GG_CONFIG_STORAGE_TYPE
oderGG_CONFIG_MAX_SIZE_BYTES
zum Definieren von Speichereinstellungen festlegen, schließen Sie sie in diese Funktions-Instance ein. -
-
Kopieren Sie den
Arn
der Funktionsdefinitionsversion aus der Ausgabe. -
Erstellen Sie eine Gruppenversion, die die System-Lambda-Funktion enthält.
-
Ersetzen Sie
group-id
durch dieId
für die Gruppe. -
Ersetzen Sie durch
core-definition-version-arn
dieCoreDefinitionVersionArn
, die Sie aus der neuesten Gruppenversion kopiert haben. -
Ersetzen Sie durch
function-definition-version-arn
dieArn
, die Sie für die neue Version der Funktionsdefinition kopiert haben. -
Ersetzen Sie die ARNs für andere Gruppenkomponenten (zum Beispiel
SubscriptionDefinitionVersionArn
oderDeviceDefinitionVersionArn
), die Sie aus der neuesten Gruppe kopiert haben. -
Entfernen Sie alle nicht verwendeten Parameter. Entfernen Sie zum Beispiel
--resource-definition-version-arn
, wenn Ihre Gruppenversion keine Ressourcen enthält.
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Kopieren Sie die
Version
aus der Ausgabe. Dies ist die ID der neuen Gruppenversion. -
Stellen Sie die Gruppe mit der neuen Gruppenversion bereit.
-
Ersetzen Sie
group-id
durch die kopierteId
für die Gruppe. -
Ersetzen Sie durch
group-version-id
dieVersion
, die Sie für die neue Gruppenversion kopiert haben.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
-
(Optional) Erhöhen Sie die maxWorkItemCount-Eigenschaft in der Core-Konfigurationsdatei. Dies kann dem Core helfen, erhöhten MQTT-Datenverkehr und die Kommunikation mit lokalen Zielen zu bewältigen.
Zum Aktualisieren des Cores mit diesen Konfigurationsänderungen verwenden Sie die AWS IoT Greengrass-API, um eine neue Funktionsdefinitionsversion zu erstellen, die die GGCloudSpooler
-Funktion mit der aktualisierten Konfiguration enthält. Fügen Sie anschließend die Funktionsdefinitionsversion einer neuen Gruppenversion (zusammen mit Ihren anderen Gruppenkomponenten) hinzu und stellen Sie die Gruppenversion bereit. Wenn Sie die Standardkonfiguration wiederherstellen möchten, können Sie eine Funktionsdefinitionsversion erstellen, in der die GGCloudSpooler
-Funktion nicht enthalten ist.
Diese System-Lambda-Funktion ist in der Konsole nicht sichtbar. Nachdem die Funktion der neuesten Gruppenversion hinzugefügt wurde, ist sie allerdings in Bereitstellungen enthalten, die Sie von der Konsole aus erstellen, es sei denn, Sie ersetzen oder verschieben sie mit der API.
Client-IDs für MQTT-Verbindungen mit AWS IoT
Diese Funktion ist für AWS IoT Greengrass Core v1.8 und höher verfügbar.
Der Greengrass-Core öffnet MQTT-Verbindungen mit AWS IoT Core für Operationen, wie etwa die Schattensynchronisierung und die Zertifikatsverwaltung. Für diese Verbindungen generiert der Core vorhersagbare Client-IDs auf Grundlage des Core-Namens. Vorhersehbare Client-IDs können mit Überwachungs-, Überwachungs- und Preisfunktionen verwendet werden, einschließlich AWS IoT Device Defender und AWS IoT Lebenszyklusereignissen. Sie können auch eine Logik im Zusammenhang mit vorhersagbaren Client-IDs erstellen (Beispiel: Aborichtlinien-Vorlagen auf Grundlage von Zertifikatsattributen).
Anmerkung
Doppelte Client-IDs in gleichzeitigen Verbindungen können zu einer unendlichen Verbinden-Trennen-Schleife führen. Dies kann der Fall sein, wenn für ein anderes Gerät festgelegt ist, dass der Core-Gerätename als Client-ID in Verbindungen verwendet wird. Weitere Informationen finden Sie im Fehlerbehandlungsschritt.
Greengrass-Geräte sind zudem vollständig in den Flotten-Indizierungsdienst von AWS IoT Device Management integriert. Auf diese Weise können Sie Geräte in der Cloud auf der Grundlage von Geräteattributen, Schattenzustand und Verbindungsstatus indizieren und suchen. Greengrass-Geräte stellen beispielsweise mindestens eine Verbindung her, bei der der Objektname als Client-ID verwendet wird, damit Sie mithilfe der Gerätekonnektivitätsindizierung ermitteln können, welche Greengrass-Geräte derzeit mit AWS IoT Core verbunden oder davon getrennt sind. Weitere Informationen finden Sie unter Flottenindizierungsservice im AWS IoT Entwicklerhandbuch für .
Konfigurieren des MQTT-Ports für lokales Messaging
Für diese Funktion ist AWS IoT Greengrass Core v1.10 oder höher erforderlich.
Der Greengrass-Kern fungiert als lokaler Message Broker für MQTT-Messaging zwischen lokalen Lambda-Funktionen, Konnektoren und Client-Geräten. Standardmäßig verwendet der Core Port 8883 für MQTT-Datenverkehr im lokalen Netzwerk. Möglicherweise möchten Sie den Port ändern, um Konflikte mit anderer Software zu vermeiden, die auf Port 8883 ausgeführt wird.
So konfigurieren Sie die Portnummer, die der Core für den lokalen MQTT-Datenverkehr verwendet
-
Führen Sie den folgenden Befehl aus, um den Greengrass-Daemon zu stoppen:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Öffnen Sie
zur Bearbeitung als su-Benutzer.greengrass-root
/config/config.json -
Fügen Sie im
coreThing
-Objekt dieggMqttPort
-Eigenschaft hinzu und legen Sie den Wert auf die Portnummer fest, die Sie verwenden möchten. Gültige Werte sind 1024 bis 65535. Im folgenden Beispiel wird die Portnummer auf9000
festgelegt.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com",
"ggMqttPort" : 9000,
"keepAlive" : 600 }, ... } -
Starten Sie den -Daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start -
Wenn die automatische IP-Erkennung für den Core aktiviert ist, ist die Konfiguration abgeschlossen.
Wenn die automatische IP-Erkennung nicht aktiviert ist, müssen Sie die Konnektivitätsinformationen für den Core aktualisieren. Auf diese Weise können Client-Geräte bei Erkennungsvorgängen die richtige Portnummer erhalten, um Kernkonnektivitätsinformationen zu erhalten. Sie können die AWS IoT Konsole oder AWS IoT Greengrass API verwenden, um die Kernkonnektivitätsinformationen zu aktualisieren. Für dieses Verfahren aktualisieren Sie nur die Portnummer. Die lokale IP-Adresse für den Core bleibt unverändert.
- So aktualisieren Sie die Konnektivitätsinformationen für den Core (Konsole)
-
-
Wählen Sie auf der Seite Gruppenkonfiguration den Greengrass-Kern aus.
-
Wählen Sie auf der Seite mit den Kerndetails die Registerkarte MQTT-Broker-Endpunkte aus.
-
Wählen Sie Endpunkte verwalten und dann Endpunkt hinzufügen
-
Geben Sie Ihre aktuelle lokale IP-Adresse und die neue Portnummer ein. Im folgenden Beispiel wird die Portnummer
9000
für die IP-Adresse192.168.1.8
festgelegt. -
Entfernen Sie den veralteten Endpunkt und wählen Sie dann Aktualisieren aus.
-
- So aktualisieren Sie die Konnektivitätsinformationen für den Core (API)
-
-
Verwenden Sie die Aktion „UpdateConnectivityInfo“. Im folgenden Beispiel wird
update-connectivity-info
in der AWS CLI verwendet, um die Portnummer9000
für die IP-Adresse192.168.1.8
festzulegen.aws greengrass update-connectivity-info \ --thing-name "MyGroup_Core" \ --connectivity-info "[{\"Metadata\":\"\",\"PortNumber\":9000,\"HostAddress\":\"192.168.1.8\",\"Id\":\"localIP_192.168.1.8\"},{\"Metadata\":\"\",\"PortNumber\":8883,\"HostAddress\":\"127.0.0.1\",\"Id\":\"localhost_127.0.0.1_0\"}]"
-
Anmerkung
Sie können auch den Port konfigurieren, den der Core für das MQTT-Messaging mit AWS IoT Core verwendet. Weitere Informationen finden Sie unter Verbindungsherstellung auf Port 443 oder über einen Netzwerk-Proxy.
Timeout für Veröffentlichungs-, Abonnement- und Abmeldevorgänge in MQTT-Verbindungen mit der AWS Cloud
Diese Funktion ist in AWS IoT Greengrass Version 1.10.2 oder höher verfügbar.
Sie können die Zeit (in Sekunden) so konfigurieren, dass der Greengrass-Core eine Veröffentlichungs-, Abonnement- oder Abmeldeoperation in MQTT-Verbindungen mit AWS IoT Core abschließen kann. Sie können diese Einstellung anpassen, wenn die Operationen aufgrund von Bandbreitenbeschränkungen oder hoher Latenz zu einer Zeitüberschreitung führen. Um diese Einstellung in der Datei config.json zu konfigurieren, fügen Sie die mqttOperationTimeout
-Eigenschaft im coreThing
-Objekt hinzu, oder ändern Sie sie. Beispielsweise:
{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "
hash
.cert.pem", "keyPath": "hash
.private.key", ... }, ... }
Das Standard-Timeout beträgt 5 Sekunden. Der minimale Timeout beträgt 5 Sekunden.
Aktivieren der automatischen IP-Erkennung
Sie können so konfigurierenAWS IoT Greengrass, dass Client-Geräte in einer Greengrass-Gruppe den Greengrass-Kern automatisch erkennen können. Wenn diese Option aktiviert ist, sucht der Core nach Änderungen an seinen IP-Adressen. Wenn sich eine Adresse ändert, veröffentlicht der Core eine aktualisierte Liste von Adressen. Diese Adressen werden Client-Geräten zur Verfügung gestellt, die sich in derselben Greengrass-Gruppe wie der -Kern befinden.
Anmerkung
Die AWS IoT Richtlinie für Client-Geräte muss die -greengrass:Discover
Berechtigung erteilen, damit Geräte Konnektivitätsinformationen für den Kern abrufen können. Weitere Informationen zur Richtlinienanweisung finden Sie unter Berechtigung zum Discovery.
Um dieses Feature über die AWS IoT Greengrass Konsole zu aktivieren, wählen Sie Automatische Erkennung, wenn Sie Ihre Greengrass-Gruppe zum ersten Mal bereitstellen. Sie können diese Funktion auch auf der Seite Gruppenkonfiguration aktivieren oder deaktivieren, indem Sie die Registerkarte Lambda-Funktionen und den IP-Detektor auswählen. Die automatische IP-Erkennung ist aktiviert, wenn MQTT-Broker-Endpunkte automatisch erkennen und überschreiben ausgewählt ist.
Um die automatische Erkennung mit der AWS IoT Greengrass API zu verwalten, müssen Sie die IPDetector
System-Lambda-Funktion konfigurieren. Das folgende Verfahren zeigt, wie Sie den create-function-definition-version CLI-Befehl verwenden, um die automatische Erkennung des Greengrass-Kerns zu konfigurieren.
-
Rufen Sie die IDs der Greengrass-Zielgruppen und die Gruppenversion ab. Bei diesem Verfahren wird davon ausgegangen, dass es sich um die neueste Gruppe und Gruppenversion handelt. Die folgende Abfrage gibt die zuletzt erstellte Gruppe zurück.
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
Sie können auch nach Namen abfragen. Gruppennamen müssen nicht eindeutig sein, sodass mehrere Gruppen zurückgegeben werden können.
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"Anmerkung
Sie finden diese Werte auch in der -AWS IoTKonsole. Die Gruppen-ID wird auf der Seite Einstellungen der Gruppe angezeigt. Gruppenversions-IDs werden auf der Registerkarte Bereitstellungen der Gruppe angezeigt.
-
Kopieren Sie die
LatestVersion
Werte undId
aus der Zielgruppe in die Ausgabe. -
Rufen Sie die neueste Gruppenversion ab.
-
Ersetzen Sie
group-id
durch die kopierteId
. -
Ersetzen Sie
latest-group-version-id
durch denLatestVersion
, den Sie kopiert haben.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
Kopieren Sie aus dem Objekt
Definition
in der Ausgabe denCoreDefinitionVersionArn
und die ARNs aller anderen Gruppenkomponenten außerFunctionDefinitionVersionArn
. Diese Werte verwenden Sie, wenn Sie eine neue Gruppenversion erstellen. -
Kopieren Sie die ID der Funktionsdefinition sowie die Funktionsdefinitionsversion aus
FunctionDefinitionVersionArn
in der Ausgabe:arn:aws:greengrass:
region
:account-id
:/greengrass/groups/function-definition-id
/versions/function-definition-version-id
Anmerkung
Sie können optional eine Funktionsdefinition mit dem
create-function-definition
-Befehl erstellen, und anschließend die ID aus der Ausgabe kopieren. -
Verwenden Sie den Befehl
get-function-definition-version
zum Abrufen des aktuellen Definitionsstatus. Verwenden Sie die , diefunction-definition-id
Sie für die Funktionsdefinition kopiert haben. Zum Beispiel:4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3
.aws greengrass get-function-definition-version --function-definition-id
function-definition-id
--function-definition-version-idfunction-definition-version-id
Notieren Sie sich die aufgeführten Funktionskonfigurationen. Beim Erstellen einer neuen Funktionsdefinitionsversion müssen Sie diese angeben, um zu verhindern, dass Ihre aktuellen Definitionseinstellungen verloren gehen.
-
Fügen Sie der Funktionsdefinition eine Funktionsdefinitionsversion hinzu.
-
Ersetzen Sie durch
function-definition-id
dieId
, die Sie für die Funktionsdefinition kopiert haben. Zum Beispiel:4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3
. -
Ersetzen Sie
arbitrary-function-id
durch einen Namen für die Funktion, z. B.auto-detection-function
. -
Fügen Sie dem
functions
Array alle Lambda-Funktionen hinzu, die Sie in diese Version aufnehmen möchten, z. B. alle im vorherigen Schritt aufgeführten Funktionen.
aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn":"arn:aws:lambda:::function:GGIPDetector:1","Id":"arbitrary-function-id
","FunctionConfiguration":{"Pinned":true,"MemorySize":32768,"Timeout":3}}]'\ --region us-west-2 -
-
Kopieren Sie den
Arn
der Funktionsdefinitionsversion aus der Ausgabe. -
Erstellen Sie eine Gruppenversion, die die System-Lambda-Funktion enthält.
-
Ersetzen Sie
group-id
durch dieId
für die Gruppe. -
Ersetzen Sie durch
core-definition-version-arn
dieCoreDefinitionVersionArn
, die Sie aus der neuesten Gruppenversion kopiert haben. -
Ersetzen Sie durch
function-definition-version-arn
dieArn
, die Sie für die neue Version der Funktionsdefinition kopiert haben. -
Ersetzen Sie die ARNs für andere Gruppenkomponenten (zum Beispiel
SubscriptionDefinitionVersionArn
oderDeviceDefinitionVersionArn
), die Sie aus der neuesten Gruppe kopiert haben. -
Entfernen Sie alle nicht verwendeten Parameter. Entfernen Sie zum Beispiel
--resource-definition-version-arn
, wenn Ihre Gruppenversion keine Ressourcen enthält.
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Kopieren Sie die
Version
aus der Ausgabe. Dies ist die ID der neuen Gruppenversion. -
Stellen Sie die Gruppe mit der neuen Gruppenversion bereit.
-
Ersetzen Sie
group-id
durch die kopierteId
für die Gruppe. -
Ersetzen Sie durch
group-version-id
dieVersion
, die Sie für die neue Gruppenversion kopiert haben.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
Wenn Sie die IP-Adresse Ihres Greengrass-Cores manuell eingeben möchten, können Sie dieses Tutorial mit einer anderen Funktionsdefinition abschließen, die die IPDetector
-Funktion nicht enthält. Dadurch wird verhindert, dass die Erkennungsfunktion Ihre Greengrass-Core-IP-Adresse findet und automatisch eingibt.
Diese System-Lambda-Funktion ist in der Lambda-Konsole nicht sichtbar. Nachdem die Funktion der neuesten Gruppenversion hinzugefügt wurde, ist sie in Bereitstellungen enthalten, die Sie von der Konsole aus erstellen (es sei denn, Sie ersetzen oder verschieben sie mit der API).
Konfigurieren das Init-Systems zum Starten des Greengrass-Daemons
Es ist ein bewährtes Verfahren, Ihr Init-System so einzurichten, dass der Greengrass-Daemon beim Startvorgang ausgeführt wird, insbesondere bei der Verwaltung großer Geräteflotten.
Anmerkung
Wenn Sie die AWS IoT Greengrass Core-Software mit apt
installiert haben, können Sie die systemd-Skripte verwenden, um „Start beim Booten“ zu aktivieren. Weitere Informationen finden Sie unter Verwenden von systemd-Skripts zum Verwalten des Greengrass Daemon-Lebenszyklus.
Es gibt verschiedene Arten von Init-Systemen, z. B. initd, systemd und SystemV, und sie verwenden ähnliche Konfigurationsparameter. Das folgende Beispiel ist eine Servicedatei für systemd. Der Type
-Parameter wird auf forking
festgelegt, da greengrassd (das zum Starten von Greengrass verwendet wird) den Greengrass-Daemon-Prozess verzweigt und der Restart
-Parameter auf on-failure
festgelegt wird, um systemd so zu steuern, dass Greengrass neu gestartet wird, wenn Greengrass einen fehlerhaften Zustand aufweist.
Anmerkung
Führen Sie das check_ggc_dependencies
-Skript wie in Modul 1 beschrieben aus, um festzustellen, ob Ihr Gerät systemd verwendet. Zur Verwendung von systemd stellen Sie anschließend sicher, dass der useSystemd
-Parameter in config.json auf yes
festgelegt ist.
[Unit] Description=Greengrass Daemon [Service] Type=forking PIDFile=/var/run/greengrassd.pid Restart=on-failure ExecStart=/greengrass/ggc/core/greengrassd start ExecReload=/greengrass/ggc/core/greengrassd restart ExecStop=/greengrass/ggc/core/greengrassd stop [Install] WantedBy=multi-user.target