So konfigurieren Sie den lokalen Ressourcenzugriff mithilfe der AWS Management Console - 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.

So konfigurieren Sie den lokalen Ressourcenzugriff mithilfe der AWS Management Console

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

Sie können Lambda-Funktionen für den sicheren Zugriff auf lokale Ressourcen des Greengrass Core-Geräts, das als Host fungiert, konfigurieren. Zu lokalen Ressourcen zählen Busse und Peripheriegeräte, die sich physisch auf dem Host befinden, oder Dateisystemvolumes auf dem Hostbetriebssystem. Weitere Informationen einschließlich Anforderungen und Einschränkungen finden Sie unter Greifen Sie mit Lambda-Funktionen und -Konnektoren auf lokale Ressourcen zu.

In diesem Tutorial wird beschrieben, wie SieAWS Management Consoleum den Zugriff auf lokale Ressourcen zu konfigurieren, dieAWS IoT Greengrass-Core-Gerät. Es enthält die folgenden allgemeinen Schritte:

Ein Tutorial, in dem die AWS Command Line Interface verwendet wird, finden Sie unter So konfigurieren Sie den lokalen Ressourcenzugriff über die AWS Befehlszeilenschnittstelle.

Voraussetzungen

Zum Durchführen dieses Tutorials benötigen Sie Folgendes:

  • Eine Greengrass-Gruppe und ein Greengrass Core (v1.3 oder höher). Weitere Informationen zum Erstellen einer Greengrass-Gruppe oder eines Greengrass-Cores finden Sie unter Erste Schritte mit AWS IoT Greengrass.

  • Die folgenden Verzeichnisse auf dem Greengrass Core-Gerät:

    • /src/LRAtest

    • /dest/LRAtest

    Die Besitzergruppe dieser Verzeichnisse muss über Lese- und Schreibzugriff auf die Verzeichnisse verfügen. Sie können den folgenden Befehl verwenden, um Zugriff zu erteilen:

    sudo chmod 0775 /src/LRAtest

Schritt 1: Bereitstellungspaket für die Lambda-Funktion erstellen

In diesem Schritt erstellen Sie ein Bereitstellungspaket für eine Lambda-Funktion. Dabei handelt es sich um eine ZIP-Datei mit dem Code der Funktion und allen zugehörigen Abhängigkeiten. Zudem laden Sie das AWS IoT Greengrass Core SDK herunter, das als Abhängigkeit im Paket berücksichtigt wird.

  1. Kopieren Sie auf Ihrem Computer folgendes Python-Skript in eine lokale Datei mit dem Namen lraTest.py. Dies ist die App-Logik für die Lambda-Funktion.

    # Demonstrates a simple use case of local resource access. # This Lambda function writes a file test to a volume mounted inside # the Lambda environment under destLRAtest. Then it reads the file and # publishes the content to the AWS IoT LRAtest topic. import sys import greengrasssdk import platform import os import logging # Setup logging to stdout logger = logging.getLogger(__name__) logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) # Create a Greengrass Core SDK client. client = greengrasssdk.client('iot-data') volumePath = '/dest/LRAtest' def function_handler(event, context): try: client.publish(topic='LRA/test', payload='Sent from AWS IoT Greengrass Core.') volumeInfo = os.stat(volumePath) client.publish(topic='LRA/test', payload=str(volumeInfo)) with open(volumePath + '/test', 'a') as output: output.write('Successfully write to a file.') with open(volumePath + '/test', 'r') as myfile: data = myfile.read() client.publish(topic='LRA/test', payload=data) except Exception as e: logger.error('Failed to publish message: ' + repr(e)) return
  2. AusAWS IoT GreengrassCore-SDKDownloads-Seite, laden Sie dieAWS IoT GreengrassCore SDK für Python auf Ihrem Computer.

  3. Entpacken Sie das heruntergeladene Paket, um das SDK zu erhalten. Das SDK ist der greengrasssdk-Ordner.

  4. Packen Sie die folgenden Elemente in einer ZIP-Datei mit dem Namen lraTestLambda.zip:

    • lraTest.py. App-Logik.

    • greengrasssdk. Erforderliche Bibliothek für alle Python-Lambda-Funktionen.

    DielraTestLambda.zipfile ist das Bereitstellungspaket Ihrer Lambda-Funktion. Nun können Sie eine Lambda-Funktion erstellen und das Bereitstellungspaket hochladen.

Schritt 2: Erstellen und Veröffentlichen einer Lambda-Funktion

In diesem Schritt verwenden Sie die OptionAWS Lambda-Konsole eine Lambda-Funktion erstellen und diese zur Verwendung des Bereitstellungspakets konfigurieren. Anschließend veröffentlichen Sie eine Funktionsversion und erstellen einen Alias.

Zunächst erstellen Sie die Lambda-Funktion.

  1. Wählen Sie in der AWS Management Console Services und öffnen Sie die AWS Lambda-Konsole.

  2. Klicken Sie aufFunktionen.

  3. Klicken Sie aufFunktion erstellenund danach auf.Author from scratch.

  4. Geben Sie im Abschnitt Basic information (Basisinformationen) folgende Werte ein:

    1. Geben Sie für Function name (Funktionsname) TestLRA ein.

    2. Wählen Sie für Runtime (Laufzeit) die Option Python 3.7 aus.

    3. FürBerechtigungenverwenden, behalten Sie die Standardeinstellung bei. Dadurch wird eine Ausführungsrolle erstellt, die grundlegende Lambda-Berechtigungen gewährt. Diese Rolle wird nicht verwendet vonAWS IoT Greengrass.

  5. Wählen Sie Create function (Funktion erstellen).

    Seite „Create function“ mit hervorgehobener Option „Create function“.

     

  6. Laden Sie das Bereitstellungspaket Ihrer Lambda-Funktionsbereitstellung hoch und registrieren Sie

    1. Auf derCodeunterQuellcode, wählenHochladen von. Klicken Sie im Dropdown aufZIP-Datei.

      Die Dropdownliste Upload from mit hervorgehobener ZIP-Datei.
    2. Klicken Sie aufHochladenund danach auflraTestLambda.zipBereitstellungspaket. Wählen Sie dann Save (Speichern) aus.

    3. Auf derCodefür die Funktion, unterEinstellungen zur Laufzeit, wählenBearbeitenund geben Sie die folgenden Werte ein.

      • Wählen Sie für Runtime (Laufzeit) die Option Python 3.7 aus.

      • Geben Sie unter Handler die Einstellung lraTest.function_handler ein.

    4. Wählen Sie Save (Speichern) aus.

      Anmerkung

      DieTest-Schaltfläche aufAWS Lambda-Konsole funktioniert nicht mit dieser Funktion. DieAWS IoT GreengrassDas Core SDK enthält keine Module, die erforderlich sind, um Ihre Greengrass Lambda-Funktionen unabhängig imAWS Lambdaconsole. Diese Module (zum Beispielgreengrass_common) werden für die Funktionen bereitgestellt, nachdem sie in Ihrem Greengrass-Kern bereitgestellt wurden.

    Als Nächstes veröffentlichen Sie die erste Version der Lambda-Funktion. Anschließend erstellen Sie einen Alias für die Version.

    Greengrass-Gruppen können eine Lambda-Funktion nach Alias (empfohlen) oder nach Version referenzieren. Mit einem Alias lassen sich Code-Updates einfacher verwalten, da die Abonnementtabelle oder Gruppendefinition nicht geändert werden muss, wenn der Funktionscode aktualisiert wird. Stattdessen verweisen Sie einfach den Alias auf die neue Funktionsversion.

  7. Wählen Sie im Menü Actions (Aktionen) die Option Publish new version (Neue Version veröffentlichen) aus.

  8. Geben Sie unter Version description (Versionsbeschreibung) den Wert First version ein und wählen Sie dann Publish (Veröffentlichen) aus.

  9. Wählen Sie auf der Konfigurationsseite für TestLRA: 1 unter Actions (Aktionen) die Option Create alias (Alias erstellen) aus.

  10. Auf derErstellen eines Aliasangezeigten, fürName, den Wert eintest. Geben Sie für Version 1 ein.

    Anmerkung

    AWS IoT Greengrassunterstützt keine Lambda-Aliasse für$LATESTVersionen.

  11. Wählen Sie Create (Erstellen) aus.

    Seite „Create a new alias“ mit hervorgehobener Option „Create“.

    Nun können Sie die Lambda-Funktion zur Greengrass-Gruppe hinzufügen.

Schritt 3: Hinzufügen der Lambda-Funktion zur Greengrass-Gruppe

In diesem Schritt fügen Sie die Funktion Ihrer Gruppe hinzu und konfigurieren dann den Lebenszyklus der Funktion.

Zunächst fügen Sie die Lambda-Funktion zur Greengrass-Gruppe hinzu.

  1. In derAWS IoTNavigationsbereich der -Konsole unterVerwalten, erweiternGreengrass-Geräteund danach auf.Gruppen (V1).

  2. Wählen Sie die Greengrass-Gruppe aus, der die Lambda-Funktion hinzugefügt werden soll.

  3. Wählen Sie auf der Gruppenkonfigurationsseite die OptionLambda-FunktionenRegisterkarte.

  4. UnDERMeine Lambda-Funktionenden Wert ein.Add.

  5. Auf derHinzufügen einer Lambda-Funktionwählen Sie die Option aus.Lambda-Funktion. Select TestLRA.

  6. Wählen Sie das SymbolVersioning der Lambda-Funktion.

  7. In derKonfiguration der Lambda-FunktionAbschnitt, wählen SieSystembenutzer und GruppeundContainerisierung der Lambda-Funktion.

     

    Als Nächstes konfigurieren Sie den Lebenszyklus der Lambda-Funktion.

  8. Wählen Sie für Timeout 30 seconds (30 Sekunden).

    Wichtig

    Lambda-Funktionen, die lokalen Ressourcen verwenden (wie in diesem Verfahren beschrieben), müssen in einem Greengrass-Container ausgeführt werden. Andernfalls wird die Bereitstellung der Funktion fehlschlagen. Weitere Informationen finden Sie unter Containerization (Containerisierung).

  9. Wählen Sie unten auf der SeiteHinzufügen einer Lambda-Funktion.

Schritt 4: Hinzufügen einer lokalen Ressource zur Greengrass-Gruppe

In diesem Schritt fügen Sie eine lokale Volume-Ressource der Greengrass-Gruppe hinzu und erteilen der Funktion Lese- und Schreibzugriff auf die Ressource. Eine lokale Ressource verfügt über einen Gruppenebenen-Bereich. Sie können jeder Lambda-Funktion in der Gruppe Berechtigungen für den Zugriff auf die Ressource erteilen.

  1. Wählen Sie auf der Gruppenkonfigurationsseite die OptionRessourcenRegisterkarte.

  2. Zeigen Sie unter dem Verzeichnis die folgenden Dateien an.Lokale Ressourcenden Wert ein.Add.

  3. Auf derHinzufügen einer lokalen Ressource-Seite die folgenden Werte an.

    1. Geben Sie für Resource name (Ressourcenname) testDirectory ein.

    2. Wählen Sie für Resource type (Ressourcentyp) die Option Volume aus.

    3. FürLokaler Gerätepfad, den Wert ein/src/LRAtest. Dieser Pfad muss auf dem Host-Betriebssystem vorhanden sein.

      Der lokale Gerätepfad ist der lokale absolute Pfad der Ressource auf dem Dateisystem des Core-Geräts. Dieser Speicherort befindet sich außerhalb des Containers, indem die Funktion ausgeführt wird. Der Pfad darf nicht mit /sys beginnen.

    4. Geben Sie für Destination path (Zielpfad) /dest/LRAtest ein. Dieser Pfad muss auf dem Host-Betriebssystem vorhanden sein.

      Der Zielpfad ist der absolute Pfad der Ressource im Lambda-Namespace. Dieser Speicherort befindet sich innerhalb des Containers, indem die Funktion ausgeführt wird.

    5. UnDERBesitzer der Systemgruppe und Dateizugriffsberechtigung, selectAutomatisch Dateisystemberechtigungen der Systemgruppe hinzufügen, zu der Ressource gehört.

      DieBesitzer der Systemgruppe und Dateizugriffsberechtigungkönnen Sie zusätzliche Dateizugriffsberechtigungen für den Lambda-Prozess erteilen. Weitere Informationen finden Sie unter Dateizugriffsberechtigung des Gruppenbesitzers.

  4. Wählen Sie Add resource (Ressource hinzufügen) aus. Auf der Seite Resources wird die neue Ressource "testDirectory" angezeigt.

Schritt 5: Hinzufügen von Abonnements zur Greengrass-Gruppe

In diesem Schritt fügen Sie zwei Abonnements zur Greengrass-Gruppe hinzu. Mit diesen Abonnements wird die bidirektionale Kommunikation zwischen der Lambda-Funktion und allen zugehörigenAWS IoT.

Zunächst erstellen Sie ein Abonnement für die Lambda-Funktion, damit Nachrichten an gesendet werden könnenAWS IoT.

  1. Wählen Sie auf der Gruppenkonfigurationsseite die OptionAbonnementsRegisterkarte.

  2. Wählen Sie Add (Hinzufügen) aus.

  3. Auf derErstellen eines Abonnements-Seite die Quelle und das Ziel wie folgt:

    1. FürRessourcentyp, wählenLambda-Funktionund danach auf.TestLRA.

    2. FürZieltyp, wählenServiceund danach auf.IoT Cloud.

    3. FürThemenfilter, den Wert einLRA/testund danach auf.Erstellen eines Abonnements.

  4. Auf der Seite Subscriptions wird das neue Abonnement angezeigt.

     

    Als Nächstes konfigurieren Sie ein Abonnement, mit dem die Funktion aus AWS IoT aufgerufen werden kann.

  5. Wählen Sie auf der Seite Subscriptions die Option Add Subscription aus.

  6. Konfigurieren Sie auf der Seite Select your source and target die Quelle und das Ziel wie folgt:

    1. FürRessourcentyp, wählenLambda-Funktionund danach auf.IoT Cloud.

    2. FürZieltyp, wählenServiceund danach auf.TestLRA.

    3. Wählen Sie Next (Weiter).

  7. Geben Sie auf der Seite Filter your data with a topic (Filtern Sie Ihre Daten nach einem Thema.) für Topic filter (Themenfilter) invoke/LRAFunction ein und wählen Sie dann Next (Weiter).

  8. Wählen Sie Finish (Abschließen). Auf der Seite Subscriptions werden die beiden Abonnements angezeigt.

Schritt 6: Bereitstellen derAWS IoT GreengrassGruppe

In diesem Schritt stellen Sie die aktuelle Version der Gruppendefinition bereit.

  1. Stellen Sie sicher, dass dieAWS IoT Greengrasscore läuft. Führen Sie im Raspberry Pi-Terminal die folgenden Befehle aus, falls nötig.

    1. So prüfen Sie, ob der Daemon ausgeführt wird:

      ps aux | grep -E 'greengrass.*daemon'

      Wenn die Ausgabe einen root-Eintrag für /greengrass/ggc/packages/1.11.6/bin/daemon enthält, dann wird der Daemon ausgeführt.

      Anmerkung

      Die Version in dem Pfad hängt von der AWS IoT Greengrass-Core-Softwareversion ab, die auf Ihrem Core-Gerät installiert ist.

    2. So starten Sie den Daemon:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. Klicken Sie auf der Gruppenkonfigurationsseite aufBereitstellen.

    Anmerkung

    Die Bereitstellung schlägt fehl, wenn Sie Ihre Lambda-Funktion ohne Containerisierung ausführen und versuchen, auf zugeordnete lokale Ressourcen zuzugreifen.

  3. Wenn Sie dazu aufgefordert wird, aufLambda-FunktionunterSystem-Lbda-Funktionen, selectIP-Detektorund dannBearbeitenund dannAutomatisch erkennen.

    Damit können Geräte automatisch Core-Verbindungsinformationen abrufen, z. B. die IP-Adresse, DNS und die Portnummer. Die automatische Ermittlung wird empfohlen, aber AWS IoT Greengrass unterstützt auch manuell angegebene Endpunkte. Sie werden nur bei der ersten Bereitstellung der Gruppe zur Angabe der Ermittlungsmethode aufgefordert.

    Anmerkung

    Erteilen Sie bei Aufforderung die Berechtigung zum Erstellen desGreengrass-Servicerolleund assoziiere es mit deinemAWS-Kontoim aktuellenAWS-Region. Diese Rolle erlaubtAWS IoT Greengrassum auf Ihre -Ressourcen zuzugreifenAWS-Services.

    Auf der Seite Deployments werden der Zeitstempel, die Versions-ID und der Status der Bereitstellung angegeben. Nach Abschluss ist der BereitstellungsstatusCompleted (Abgeschlossen).

    Hilfe zur Problembehebung finden Sie unter Fehlerbehebung für AWS IoT Greengrass.

Testen des lokalen Ressourcenzugriffs

Nun können Sie prüfen, ob der Zugriff auf die lokale Ressource korrekt konfiguriert ist. Um zu testen, abonnieren Sie das Thema LRA/test und veröffentlichen Sie im invoke/LRAFunction-Thema. Der Test ist erfolgreich, wenn die Lambda-Funktion die erwartete Nutzlast anAWS IoT.

  1. AusAWS IoTNavigationsmenü der -Konsole unterTest, wählen-MQTT-Test-Client.

  2. UnDERAbonnieren eines Themas, fürThemenfilter, den Wert einLRA/test.

  3. UnDERZusätzliche Informationen, fürMQTT-Nutzlast-Anzeige, selectZeigt Nutzlasten als Zeichenfolgen an.

  4. Wählen Sie Subscribe aus. Ihre Lambda-Funktion veröffentlicht an das LRA/test-Thema.

    Seite „Subscriptions“ mit hervorgehobener Option „Subscribe to topic“.
  5. UnDERVeröffentlichung für ein Thema, in derTopic-Nameeintrageninvoke/LRAFunctionund danach auf.Veröffentlichenum Ihre Lambda-Funktion aufzurufen. Der Test ist erfolgreich, wenn auf der Seite die drei Nachrichtennutzlasten der Funktion angezeigt werden.

    Seite „Subscriptions“ mit hervorgehobenen Optionen "„invoke/LRAFunction“ und „Publish to topic“ sowie Testergebnissen mit Nachrichtendaten

Die von der Lambda-Funktion erstellte Testdatei befindet sich in der/src/LRAtest-Verzeichnis auf dem Greengrass Core-Gerät. Obwohl die Lambda-Funktion in eine Datei im/dest/LRAtestVerzeichnis geöffnet haben, ist diese Datei nur im Lambda-Namespace sichtbar. Sie können sie in einem regulären Linux-Namespace nicht sehen. Alle Änderungen am Zielpfad werden im Quellpfad des Dateisystems reflektiert.

Hilfe zur Problembehebung finden Sie unter Fehlerbehebung für AWS IoT Greengrass.