Greifen Sie mit Lambda-Funktionen und -Konnektoren auf lokale Ressourcen zu - 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.

Greifen Sie mit Lambda-Funktionen und -Konnektoren auf lokale Ressourcen zu

Diese Funktion ist fürAWS IoT Greengrass Core v1.3 und höher verfügbar.

Mit AWS IoT Greengrass können Sie AWS Lambda-Funktionen erstellen und Konnektoren in der Cloud konfigurieren und auf Core-Geräten zur lokalen Ausführung bereitstellen. Auf Greengrass-Kernen, auf denen Linux ausgeführt wird, können diese lokal bereitgestellten Lambda-Funktionen und -Connectors auf lokale Ressourcen zugreifen, die physisch auf dem Greengrass-Core-Gerät vorhanden sind. Um beispielsweise mit Geräten zu kommunizieren, die über Modbus oder CanBus verbunden sind, können Sie Ihre Lambda-Funktion so aktivieren, dass sie auf die serielle Schnittstelle des Kerngeräts zugreift. Um den sicheren Zugriff auf lokale Ressourcen zu konfigurieren, müssen Sie die Sicherheit der physischen Hardware sowie des Betriebssystems des Greengrass Core-Geräts gewährleisten.

Die ersten Schritte zum Zugriff auf lokale Ressourcen finden Sie in den folgenden Tutorials:

Unterstützte Ressourcentypen

Sie können auf zwei Arten lokaler Ressourcen zugreifen: Volume-Ressourcen und Geräteressourcen.

Volume-Ressourcen

Dateien und Verzeichnisse auf dem Stammdateisystem (außer unter /sys, /dev oder /var). Dazu zählen:

  • Ordner oder Dateien, die zum Lesen oder Schreiben von Informationen in den Funktionen von Greengrass Lambda verwendet werden (z. B./usr/lib/python2.x/site-packages/local).

  • Ordner oder Dateien unter dem /proc-Dateisystem des Hosts (z. B. /proc/net oder /proc/stat). Wird in v1.6 oder höher unterstützt. Zusätzliche Anforderungen finden Sie unter Volume-Ressourcen im /proc-Verzeichnis.

Tipp

Um die Verzeichnisse /var, /var/run und /var/lib als Volume-Ressourcen zu konfigurieren, mounten Sie zunächst das Verzeichnis in einen anderen Ordner und konfigurieren diesen Ordner als Volume-Ressource.

Wenn Sie Volume-Ressourcen konfigurieren, geben Sie einen Pfad für source (Quelle) und einen Pfad für destination (Ziel) an. Der Quellpfad ist der absolute Pfad der Ressource auf dem Host. Der Zielpfad ist der absolute Pfad der Ressource innerhalb der Lambda-Namespace-Umgebung. Dies ist der Container, in dem eine Greengrass Lambda-Funktion oder ein Greengrass Lambda-Connector ausgeführt wird. Änderungen am Zielpfad werden im Quellpfad des Dateisystems auf dem Host-Dateisystem wiedergegeben.

Anmerkung

Dateien im Zielpfad sind nur im Lambda-Namespace sichtbar. Sie können sie in einem regulären Linux-Namespace nicht sehen.

Geräteressourcen

Dateien unter /dev. Nur zeichenorientierte Geräte oder Blockgeräte unter /dev sind als Geräteressourcen zulässig. Dazu zählen:

  • Serielle Ports, die für die Kommunikation mit über serielle Ports angeschlossenen Geräten verwendet werden (zum Beispiel /dev/ttyS0, /dev/ttyS1).

  • USB, die zum Anschließen von USB-Peripheriegeräten verwendet werden (zum Beispiel. /dev/ttyUSB0 oder /dev/bus/usb).

  • GPIOs, die für Sensoren und Aktuatoren über GPIO verwendet werden (zum Beispiel /dev/gpiomem).

  • GPUs, die verwendet werden, um Machine Learning über integrierte GPUs zu beschleunigen (zum Beispiel /dev/nvidia0).

  • Kameras, mit denen Bilder und Videos erfasst werden (zum Beispiel /dev/video0).

Anmerkung

/dev/shm ist eine Ausnahme. Sie kann nur als eine Volume-Ressource konfiguriert werden. Ressourcen unter /dev/shm muss die Berechtigung rw erteilt werden.

AWS IoT Greengrass unterstützt auch Ressourcentypen, die für die Durchführung von Machine Learning-Inferenz verwendet werden. Weitere Informationen finden Sie unter Durchführen von Machine Learning-Inferenzen.

Voraussetzungen

Die folgenden Anforderungen gelten für die Konfiguration des sicheren Zugriffs auf lokale Ressourcen:

  • Sie müssenAWS IoT Greengrass Core Software v1.3 oder höher verwenden. Um Ressourcen für das /proc-Verzeichnis des Hosts zu erstellen, müssen Sie Version 1.6 oder höher verwenden.

  • Die lokale Ressource (einschließlich aller erforderlichen Treiber und Bibliotheken) muss ordnungsgemäß auf dem Greengrass Core-Gerät installiert sein und während der gesamten Nutzung zur Verfügung stehen.

  • Die gewünschte Operation der Ressource und der Zugriff auf die Ressource dürfen keine Root-Berechtigungen erfordern.

  • Nur die Berechtigung read oder read and write ist verfügbar. Lambdafunktionen können keine privilegierten Operationen für die Ressourcen ausführen.

  • Sie müssen den vollständigen Pfad der lokalen Ressource im Betriebssystem des Greengrass Core-Geräts bereitstellen.

  • Der Name oder die ID einer Ressource kann maximal 128 Zeichen umfassen und muss dem Muster [a-zA-Z0-9:_-]+ entsprechen.

Volume-Ressourcen im /proc-Verzeichnis

Die folgenden Überlegungen gelten für Volume-Ressourcen im /proc-Verzeichnis des Hosts.

  • Sie müssenAWS IoT Greengrass Core Software v1.6 oder höher verwenden.

  • Sie können nur Lesezugriff für Lambda-Funktionen zulassen, aber keinen Lese-/Schreibzugriff. Diese Zugriffsebene wird von AWS IoT Greengrass verwaltet.

  • Möglicherweise müssen Sie auch Betriebssystemgruppen Berechtigungen erteilen, um Lesezugriff im Dateisystem zu aktivieren. Nehmen wir beispielsweise an, dass Ihr Quellverzeichnis oder Ihre Quelldatei über die Dateiberechtigung „660“ verfügt. Dies bedeutet, dass nur der Eigentümer bzw. der Benutzer in der Gruppe Lese- (oder Schreib)-Zugriff darauf hat. In diesem Fall müssen Sie die Berechtigungen des Besitzers der Betriebssystemgruppe der Ressource hinzufügen. Weitere Informationen finden Sie unter Dateizugriffsberechtigung des Gruppenbesitzers.

  • Die Host-Umgebung und der Lambda-Namespace enthalten beide ein /proc-Verzeichnis. Vermeiden Sie daher unbedingt Namenskonflikte, wenn Sie den Zielpfad angeben. Wenn/proc beispielsweise der Quellpfad ist, können Sie /host-proc als Zielpfad angeben (oder einen beliebigen anderen Namen anstelle von „/proc“).

Dateizugriffsberechtigung des Gruppenbesitzers

EinAWS IoT Greengrass Lambda-Funktionsprozess läuft normalerweise alsggc_user undggc_group. Sie können dem Lambda-Funktionsprozess in der lokalen Ressourcendefinition jedoch zusätzliche Dateizugriffsberechtigungen wie folgt erteilen:

  • Um die Berechtigungen der Linux-Gruppe hinzuzufügen, der die Ressource gehört, verwenden Sie denGroupOwnerSetting#AutoAddGroupOwner Parameter oder Die Option Automatisch Dateisystemberechtigungen der Systemgruppe hinzufügen, der die Ressourcenkonsole gehört.

  • Um die Berechtigungen einer anderen Linux-Gruppe hinzuzufügen, verwenden Sie denGroupOwnerSetting#GroupOwner Parameter oder Die Konsolenoption Andere Systemgruppe angeben, um Dateisystemberechtigungen hinzuzufügen. Der Wert GroupOwner wird ignoriert, wenn GroupOwnerSetting#AutoAddGroupOwner auf "true" gesetzt ist.

EinAWS IoT Greengrass Lambda-Funktionsprozess erbt alle Dateisystemberechtigungen vonggc_userggc_group, und der Linux-Gruppe (falls hinzugefügt). Damit die Lambda-Funktion auf eine Ressource zugreifen kann, muss der Lambda-Funktionsprozess über die erforderlichen Berechtigungen für die Ressource verfügen. Sie können die Berechtigung der Ressource gegebenenfalls mit dem chmod(1)-Befehl ändern.

Weitere Informationen finden Sie auch unter