Ausführen von AWS IoT Greengrass in einem Docker-Container - 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.

Ausführen von AWS IoT Greengrass in einem Docker-Container

AWS IoT Greengrass kann zur Ausführung in einem Docker-Container konfiguriert werden.

Sie können ein Dockerfile über Amazon herunterladenCloudFront, auf dem dieAWS IoT Greengrass Core-Software und die Abhängigkeiten installiert sind. Informationen dazu, wie Sie das Docker-Image zur Ausführung auf verschiedenen Plattformarchitekturen modifizieren oder die Größe des Docker-Images verringern, finden Sie in der README-Datei im Docker-Paketdownload.

Damit Sie mit AWS IoT Greengrass zu experimentieren beginnen können, stellt AWS auch vorgefertigte Docker-Images bereit, auf denen die AWS IoT Greengrass Core-Software und die Abhängigkeiten installiert sind. Sie können ein Image von Docker Hub oder Amazon Elastic Container Registry (Amazon ECR) herunterladen. Diese vorgefertigten Images verwenden Amazon Linux 2 (x86_64) und Alpine Linux (x86_64, Armv7l oder AArch64)-Basis-Images.

Wichtig

Am 30. Juni 2022 wurde die Wartung für die Docker-Images derAWS IoT Greengrass Core-Software v1.xAWS IoT Greengrass beendet, die in Amazon Elastic Container Registry (Amazon ECR) und Docker Hub veröffentlicht wurden. Sie können diese Docker-Images weiterhin bis zum 30. Juni 2023, also 1 Jahr nach Ende der Wartung, von Amazon ECR und Docker Hub herunterladen. Die Docker-Images derAWS IoT Greengrass Core-Software v1.x erhalten jedoch nach dem Ende der Wartungsarbeiten am 30. Juni 2022 keine Sicherheitspatches oder Bugfixes mehr. Wenn Sie einen Produktions-Workload ausführen, der von diesen Docker-Images abhängt, empfehlen wir Ihnen, Ihre eigenen Docker-Images mit den bereitgestellten Dockerfiles zuAWS IoT Greengrass erstellen. Weitere Informationen finden Sie unter AWS IoT Greengrass Docker-Software.

In diesem Thema wird beschrieben, wie Sie dasAWS IoT Greengrass Docker-Image von Amazon ECR herunterladen und auf einer Windows-, macOS- oder Linux-Plattform (x86_64) ausführen. Das Thema umfasst die folgenden Schritte:

Die folgenden Funktionen werden nicht unterstützt, wenn Sie AWS IoT Greengrass in einem Docker-Container ausführen:

  • Konnektoren, die im Greengrass-Container-Modus ausgeführt werden. Um einen Konnektor in einem Docker-Container auszuführen, muss der Konnektor im Modus No container (Kein Container) ausgeführt werden. Informationen zum Suchen von Konnektoren, die den No Container (Kein Container)-Modus unterstützen, finden Sie unter AWSVon bereitgestellte Greengrass-Konnektoren. Einige dieser Konnektoren weisen einen Isolationsmodus-Parameter auf, den Sie auf No container (Kein Container) festlegen müssen.

  • Lokale Geräte- und Volume-Ressourcen Ihre benutzerdefinierten Lambda-Funktionen, die im Docker-Container ausgeführt werden, müssen direkt auf Geräte und Volumes im Core zugreifen.

Diese Funktionen werden nicht unterstützt, wenn die Lambda-Laufzeitumgebung für die Greengrass-Gruppe auf Kein Container gesetzt ist, was für die AusführungAWS IoT Greengrass in einem Docker-Container erforderlich ist.

Voraussetzungen

Bevor Sie mit diesem Lernprogramm beginnen, müssen Sie die folgenden Schritte tun.

  • Sie müssen die folgende Software und Versionen auf Ihrem Host-Computer installieren, basierend auf der von Ihnen ausgewähltenAWS Command Line Interface (AWS CLI) Version.

    AWS CLI version 2
    AWS CLI version 1
    • Docker Version 18.09 oder höher. Frühere Versionen funktionieren möglicherweise auch, wir empfehlen jedoch 18.09 oder höher.

    • Python oder höher.

    • pip, Version 18.1 oder höher.

    • AWS CLIVersion 1.17.10 oder später

      Anmerkung

      Wenn Sie die MSI-Installation derAWS CLI Version 1 unter Windows verwenden, beachten Sie Folgendes:

      • Wenn die InstallationAWS CLI von Version 1 Botocore nicht installiert, versuchen Sie es mit der Python- und Pip-Installation.

      • Um auf eine neuereAWS CLI Version 1 zu aktualisieren, müssen Sie den MSI-Installationsvorgang wiederholen.

  • Für den Zugriff Elastic Container Registry (Amazon ECR) -Ressourcen müssen Sie die folgende Erlaubnis erteilen.

    • Amazon ECR setzt voraus, dass Benutzer dieecr:GetAuthorizationToken Erlaubnis über eineAWS Identity and Access Management (IAM) -Richtlinie erteilen, bevor sie sich bei einer Registrierung authentifizieren und Images aus einem Amazon ECR-Repository pushen oder pullen können. Weitere Informationen finden Sie unter Beispiele für Amazon ECR-Repository-Richtlinien und Zugriff auf ein Amazon ECR-Repository im Amazon Elastic Container Registry-Benutzerhandbuch.

Schritt 1: Abrufen desAWS IoT Greengrass Container-Image von Amazon ECR

AWS stellt Docker-Images bereit, auf denen die AWS IoT Greengrass Core-Software installiert ist.

Warnung

Ab Version 1.11.6 derAWS IoT Greengrass Core-Software enthalten die Greengrass Docker-Images Python 2.7 nicht mehr, da Python 2.7 2020 End-of-life erreicht hat und keine Sicherheitsupdates mehr erhält. Wenn Sie sich für ein Update auf diese Docker-Images entscheiden, empfehlen wir Ihnen, zu überprüfen, ob Ihre Anwendungen mit den neuen Docker-Images funktionieren, bevor Sie die Updates für Produktionsgeräte bereitstellen. Wenn Sie Python 2.7 für Ihre Anwendung benötigen, die ein Greengrass Docker-Image verwendet, können Sie das Greengrass Dockerfile so ändern, dass es Python 2.7 für Ihre Anwendung enthält.

Für Schritte, die zeigen, wie Sie daslatest Bild aus Amazon ECR abrufen, wählen Sie Ihr Betriebssystem aus:

Führen Sie die folgenden Befehle auf Ihrem Computer-Terminal aus.

  1. Melden Sie sich bei derAWS IoT Greengrass Registrierung in Amazon ECR an.

    aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com

    Bei erfolgreicher Ausführung wird als Ausgabe Login Succeeded gedruckt.

  2. Rufen Sie das AWS IoT Greengrass-Container-Image ab.

    docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
    Anmerkung

    Das latest-Image enthält die neueste stabile Version der AWS IoT Greengrass Core-Software, die auf einem Amazon Linux 2-Basis-Image installiert ist. Sie können auch andere Images per Pull aus dem Repository abrufen. Um alle verfügbaren Bilder zu finden, überprüfen Sie die Seite Tags im Docker Hub oder verwenden Sie den aws ecr list-images-Befehl. Beispiel:

    aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
  3. Aktivieren Sie den symlink- und hardlink-Schutz. Wenn Sie mit dem Ausführen von AWS IoT Greengrass in einem Container experimentieren, können Sie die Einstellungen nur für den aktuellen Startvorgang aktivieren.

    Anmerkung

    Sie müssen diese Befehle möglicherweise mit sudo ausführen.

    • Um die Einstellungen nur für den aktuellen Systemstart zu aktivieren:

      echo 1 > /proc/sys/fs/protected_hardlinks echo 1 > /proc/sys/fs/protected_symlinks
    • So aktivieren Sie die Einstellungen, damit sie über Neustarts hinweg beibehalten werden:

      echo '# AWS IoT Greengrass' >> /etc/sysctl.conf echo 'fs.protected_hardlinks = 1' >> /etc/sysctl.conf echo 'fs.protected_symlinks = 1' >> /etc/sysctl.conf sysctl -p
  4. Aktivieren Sie die IPv4-Netzwerkweiterleitung, die erforderlich ist, damit die AWS IoT Greengrass-Cloud-Bereitstellung und MQTT-Kommunikation auf Linux funktionieren. Legen Sie in der Datei /etc/sysctl.conf für net.ipv4.ip_forward "1" fest und laden Sie dann sysctls neu.

    sudo nano /etc/sysctl.conf # set this net.ipv4.ip_forward = 1 sudo sysctl -p
    Anmerkung

    Sie können anstelle von nano einen Editor Ihrer Wahl verwenden.

Führen Sie die folgenden Befehle auf Ihrem Computer-Terminal aus.

  1. Melden Sie sich bei derAWS IoT Greengrass Registrierung in Amazon ECR an.

    aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com

    Bei erfolgreicher Ausführung wird als Ausgabe Login Succeeded gedruckt.

  2. Rufen Sie das AWS IoT Greengrass-Container-Image ab.

    docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
    Anmerkung

    Das latest-Image enthält die neueste stabile Version der AWS IoT Greengrass Core-Software, die auf einem Amazon Linux 2-Basis-Image installiert ist. Sie können auch andere Images per Pull aus dem Repository abrufen. Um alle verfügbaren Bilder zu finden, überprüfen Sie die Seite Tags im Docker Hub oder verwenden Sie den aws ecr list-images-Befehl. Beispiel:

    aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass

Führen Sie in einem Eingabeaufforderungsfenster die folgenden Befehle aus. Um Docker-Befehle auf Windows verwenden zu können, muss der Docker-Desktop ausgeführt werden.

  1. Melden Sie sich bei derAWS IoT Greengrass Registrierung in Amazon ECR an.

    aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com

    Bei erfolgreicher Ausführung wird als Ausgabe Login Succeeded gedruckt.

  2. Rufen Sie das AWS IoT Greengrass-Container-Image ab.

    docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
    Anmerkung

    Das latest-Image enthält die neueste stabile Version der AWS IoT Greengrass Core-Software, die auf einem Amazon Linux 2-Basis-Image installiert ist. Sie können auch andere Images per Pull aus dem Repository abrufen. Um alle verfügbaren Bilder zu finden, überprüfen Sie die Seite Tags im Docker Hub oder verwenden Sie den aws ecr list-images-Befehl. Beispiel:

    aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass

Schritt 2: Erstellen und Konfigurieren von Greengrass-Gruppe und Core

Auf dem Docker-Image ist die AWS IoT Greengrass Core-Software bereits installiert, Sie müssen aber eine Greengrass-Gruppe und einen Greengrass-Core erstellen. Dazu gehören das Herunterladen von Zertifikaten und von der Core-Konfigurationsdatei.

  • Führen Sie die Schritte unter Modul 2: Installieren vonAWS IoT GreengrassCore-Software aus. Überspringen Sie die Schritte zum Herunterladen und Ausführen derAWS IoT Greengrass Core-Software. Die Software und ihre Laufzeitabhängigkeiten sind im Docker-Image bereits eingerichtet.

Schritt 3: Lokales Ausführen von AWS IoT Greengrass

Nachdem Ihre Gruppe konfiguriert wurde, können Sie den Core konfigurieren und starten. Schrittweise Anleitungen hierzu erhalten Sie bei Auswahl Ihres Betriebssystems:

Führen Sie die folgenden Befehle auf Ihrem Computer-Terminal aus.

  1. Erstellen Sie einen Ordner für die Sicherheitsressourcen des Geräts und verschieben Sie das Zertifikat und die Schlüssel in diesen Ordner. Führen Sie die folgenden Befehle aus. Ersetzen Sie es path-to-security-filesdurch den Pfad zu den Sicherheitsressourcen und ersetzen Sie certificateId durch die Zertifikat-ID in den Dateinamen.

    mkdir /tmp/certs mv path-to-security-files/certificateId-certificate.pem.crt /tmp/certs mv path-to-security-files/certificateId-public.pem.key /tmp/certs mv path-to-security-files/certificateId-private.pem.key /tmp/certs mv path-to-security-files/AmazonRootCA1.pem /tmp/certs
  2. Erstellen Sie einen Ordner für die Konfiguration des Geräts und verschieben Sie dieAWS IoT Greengrass Core-Konfigurationsdatei in diesen Ordner. Führen Sie die folgenden Befehle aus. path-to-config-fileErsetzen Sie durch den Pfad zur Konfigurationsdatei.

    mkdir /tmp/config mv path-to-config-file/config.json /tmp/config
  3. Starten Sie AWS IoT Greengrass und stellen Sie die Zertifikate und die Konfigurationsdatei mit einem Bind-Mount im Docker-Container bereit.

    Ersetzen Sie /tmp durch den Pfad, in den Sie Ihre Zertifikate und Konfigurationsdatei dekomprimiert haben.

    docker run --rm --init -it --name aws-iot-greengrass \ --entrypoint /greengrass-entrypoint.sh \ -v /tmp/certs:/greengrass/certs \ -v /tmp/config:/greengrass/config \ -p 8883:8883 \ 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

    Die Ausgabe sollte in etwa wie folgt aussehen:

    Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 30s for Daemon to start Greengrass successfully started with PID: 10

Führen Sie die folgenden Befehle auf Ihrem Computer-Terminal aus.

  1. Erstellen Sie einen Ordner für die Sicherheitsressourcen des Geräts und verschieben Sie das Zertifikat und die Schlüssel in diesen Ordner. Führen Sie die folgenden Befehle aus. Ersetzen Sie es path-to-security-filesdurch den Pfad zu den Sicherheitsressourcen und ersetzen Sie certificateId durch die Zertifikat-ID in den Dateinamen.

    mkdir /tmp/certs mv path-to-security-files/certificateId-certificate.pem.crt /tmp/certs mv path-to-security-files/certificateId-public.pem.key /tmp/certs mv path-to-security-files/certificateId-private.pem.key /tmp/certs mv path-to-security-files/AmazonRootCA1.pem /tmp/certs
  2. Erstellen Sie einen Ordner für die Konfiguration des Geräts und verschieben Sie dieAWS IoT Greengrass Core-Konfigurationsdatei in diesen Ordner. Führen Sie die folgenden Befehle aus. path-to-config-fileErsetzen Sie durch den Pfad zur Konfigurationsdatei.

    mkdir /tmp/config mv path-to-config-file/config.json /tmp/config
  3. Starten Sie AWS IoT Greengrass und stellen Sie die Zertifikate und die Konfigurationsdatei mit einem Bind-Mount im Docker-Container bereit.

    Ersetzen Sie /tmp durch den Pfad, in den Sie Ihre Zertifikate und Konfigurationsdatei dekomprimiert haben.

    docker run --rm --init -it --name aws-iot-greengrass \ --entrypoint /greengrass-entrypoint.sh \ -v /tmp/certs:/greengrass/certs \ -v /tmp/config:/greengrass/config \ -p 8883:8883 \ 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

    Die Ausgabe sollte in etwa wie folgt aussehen:

    Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 30s for Daemon to start Greengrass successfully started with PID: 10
  1. Erstellen Sie einen Ordner für die Sicherheitsressourcen des Geräts und verschieben Sie das Zertifikat und die Schlüssel in diesen Ordner. Führen Sie in einem Eingabeaufforderungsfenster die folgenden Befehle aus. Ersetzen Sie es path-to-security-filesdurch den Pfad zu den Sicherheitsressourcen und ersetzen Sie certificateId durch die Zertifikat-ID in den Dateinamen.

    mkdir C:\Users\%USERNAME%\Downloads\certs move path-to-security-files\certificateId-certificate.pem.crt C:\Users\%USERNAME%\Downloads\certs move path-to-security-files\certificateId-public.pem.key C:\Users\%USERNAME%\Downloads\certs move path-to-security-files\certificateId-private.pem.key C:\Users\%USERNAME%\Downloads\certs move path-to-security-files\AmazonRootCA1.pem C:\Users\%USERNAME%\Downloads\certs
  2. Erstellen Sie einen Ordner für die Konfiguration des Geräts und verschieben Sie dieAWS IoT Greengrass Core-Konfigurationsdatei in diesen Ordner. Führen Sie in einem Eingabeaufforderungsfenster die folgenden Befehle aus. path-to-config-fileErsetzen Sie durch den Pfad zur Konfigurationsdatei.

    mkdir C:\Users\%USERNAME%\Downloads\config move path-to-config-file\config.json C:\Users\%USERNAME%\Downloads\config
  3. Starten Sie AWS IoT Greengrass und stellen Sie die Zertifikate und die Konfigurationsdatei mit einem Bind-Mount im Docker-Container bereit. Führen Sie in einem Eingabeaufforderungsfenster die folgenden Befehle aus.

    docker run --rm --init -it --name aws-iot-greengrass --entrypoint /greengrass-entrypoint.sh -v c:/Users/%USERNAME%/Downloads/certs:/greengrass/certs -v c:/Users/%USERNAME%/Downloads/config:/greengrass/config -p 8883:8883 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

    Geben Sie bei einer entsprechenden Docker-Eingabeaufforderung Ihr C:\-Laufwerk für den Docker-Daemon frei, sodass er das Verzeichnis C:\ innerhalb des Docker-Containers mit einem Bind-Mount bereitstellen kann. Weitere Informationen finden Sie in der Docker-Dokumentation unter Freigegebene Laufwerke.

    Die Ausgabe sollte in etwa wie folgt aussehen:

    Setting up greengrass daemon Validating hardlink/softlink protection Waiting for up to 30s for Daemon to start Greengrass successfully started with PID: 10
Anmerkung

Wenn der Container die Shell nicht öffnet und sofort beendet, können Sie das Problem debuggen, indem Sie ein Bind-Mount der Greengrass Runtime-Protokolle beim Start des Abbilds erstellen. Weitere Informationen finden Sie unter Erhalten der Greengrass-Laufzeitprotokolle außerhalb des Docker-Containers.

Schritt 4: Konfigurieren der "Kein Container"-Containerisierung für die Greengrass-Gruppe

Wenn SieAWS IoT Greengrass in einem Docker-Container ausführen, müssen alle Lambda-Funktionen ohne Containerisierung ausgeführt werden. In diesem Schritt legen Sie als Standard-Containerisierung für die Gruppe No container (Kein Container) fest. Dies muss vor der erstmaligen Bereitstellung der Gruppe geschehen.

  1. Erweitern Sie im Navigationsbereich derAWS IoT Konsole unter Verwalten die Option Greengrass-Geräte und wählen Sie dann Gruppen (V1) aus.

  2. Wählen Sie die Gruppe aus, deren Einstellungen Sie ändern möchten.

  3. Wählen Sie die Registerkarte Lambda-Funktionen.

  4. Wählen Sie unter Standard-Laufzeitumgebung für Lambda-Funktionen die Option Bearbeiten aus.

  5. Ändern Sie in der Laufzeitumgebung Standard-Lambda-Funktion bearbeiten unter Standardcontainerisierung für Lambda-Funktionen die Containerisierungseinstellungen.

  6. Wählen Sie Speichern.

Die Änderungen werden wirksam, wenn die Gruppe bereitgestellt wird.

Weitere Informationen finden Sie unter Festlegen der Standard-Containerisierung für Lambda-Funktionen in einer Gruppe.

Anmerkung

Standardmäßig verwenden Lambda-Funktionen die Einstellung für die Gruppencontainerisierung. Wenn Sie die Einstellung Kein Container für eine Lambda-Funktion überschreiben, wenn sie in einem Docker-Container ausgeführtAWS IoT Greengrass wird, schlägt die Bereitstellung fehl.

Schritt 5: Lambda-Funktionen imAWS IoT Greengrass Docker-Container bereitstellen

Sie können langlebige Lambda-Funktionen für den Greengrass Docker-Container bereitstellen.

Schritt 6: (Optional) Stellen Sie Client-Geräte bereit, die mit Greengrass interagieren, das im Docker-Container ausgeführt wird

Sie können auch Client-Geräte bereitstellen, mit denen sie interagieren,AWS IoT Greengrass wenn sie in einem Docker-Container ausgeführt werden.

Anhalten des AWS IoT Greengrass-Docker-Containers

Um den AWS IoT Greengrass-Docker-Container zu beenden, drücken Sie im Terminal- oder Eingabeaufforderungsfenster Strg+C. Diese Aktion wirdSIGTERM an den Greengrass-Daemon-Prozess gesendet, um den Greengrass-Daemon-Prozess und alle Lambda-Prozesse, die durch den Daemon-Prozess gestartet wurden, herunterzufahren. Der Docker-Container wird mit dem Prozess /dev/init als PID 1 initialisiert, wodurch alle verbliebenen Zombieprozesse entfernen werden. Weitere Informationen finden Sie in der Referenz zu docker run.

Fehlerbehebung bei AWS IoT Greengrass in einem Docker-Container

Verwenden Sie die folgenden Informationen für die Problembehandlung mit der AWS IoT Greengrass-Ausführung in einem Docker-Container.

Fehler: Eine interaktive Anmeldung von einem Nicht-TTY-Gerät aus kann nicht durchgeführt werden.

Lösung: Dieser Fehler kann auftreten, wenn Sie den Befehl aws ecr get-login-password ausführen. Stellen Sie sicher, dass Sie die neuesteAWS CLI Version 2 oder Version 1 installiert haben. Wir empfehlen dieAWS CLI Version 2 zu verwenden. Weitere Informationen finden Sie unter Installieren der AWS CLI im AWS Command Line Interface-Leitfaden.

Fehler: Unbekannte Optionen: -no-include-email.

Lösung: Dieser Fehler kann auftreten, wenn Sie den Befehl aws ecr get-login ausführen. Stellen Sie sicher, dass die neueste AWS CLI-Version (z. B. run: pip install awscli --upgrade --user) installiert ist. Wenn Sie Windows verwenden und die CLI mit dem MSI-Installationsprogramm installiert haben, müssen Sie den Installationsvorgang wiederholen. Weitere Informationen finden Sie im AWS Command Line InterfaceBenutzerhandbuchAWS Command Line Interface unter Installation von unter Microsoft Windows.

Warnung: IPv4 ist deaktiviert. Das Netzwerk wird nicht funktionieren.

Lösung: Sie können diese Warnung oder eine ähnliche Nachricht erhalten, wenn Sie AWS IoT Greengrass auf einem Linux-Computer ausführen. Aktivieren Sie die IPv4-Netzwerkweiterleitung wie in diesem Schritt beschrieben. Die AWS IoT Greengrass-Cloud Bereitstellung und MQTT-Kommunikation sind nicht funktionsfähig, wenn die IPv4-Weiterleitung nicht aktiviert ist. Weitere Informationen finden Sie unter Configure namespaced kernel parameters (sysctls) at runtime in der Docker-Dokumentation.

Fehler: Eine Firewall blockiert die Freigabe von Dateien zwischen Fenstern und den Containern.

Lösung: Sie können diese Fehlermeldung oder eine Firewall Detected-Nachricht erhalten, wenn Sie Docker auf einem Windows-Computer ausführen. Dies kann auch auftreten, wenn Sie an einem Virtual Private Network (VPN) angemeldet sind und Ihre Netzwerkeinstellungen die Bereitstellung des freigegebenen Laufwerks verhindern. Deaktivieren Sie in diesem Fall das VPN und führen Sie den Docker-Container erneut aus.

Fehler: Beim Aufrufen desGetAuthorizationToken Vorgangs ist ein Fehler aufgetreten (AccessDeniedException): User: arn:aws:iam: ::user/ <account-id>is <user-name>not authorized to perform: ecr: onGetAuthorizationToken resource: *

Diese Fehlermeldung kann bei der Ausführung desaws ecr get-login-password Befehls auftreten, wenn Sie nicht über ausreichende Berechtigungen verfügen, um auf ein Amazon ECR-Repository zuzugreifen. Weitere Informationen finden Sie unter Beispiele für Amazon ECR-Repository-Richtlinien und Zugriff auf ein Amazon ECR-Repository im Amazon ECR-Benutzerhandbuch.

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

Debuggen von AWS IoT Greengrass in einem Docker-Container

Zum Debuggen von Problemen mit einem Docker-Container können Sie die Greengrass-Laufzeitprotokolle erhalten oder eine interaktive Shell an den Docker-Container anfügen.

Erhalten der Greengrass-Laufzeitprotokolle außerhalb des Docker-Containers

Sie können die AWS IoT Greengrass Docker-Container ausführen, nachdem Sie einen Bind-Mount mit dem /greengrass/ggc/var/log-Verzeichnis erstellt haben. Die Protokolle bleiben auch dann erhalten, wenn der Container beendet oder entfernt wird.

Unter Linux oder macOS

Beenden Sie alle Greengrass-Docker-Container, die auf dem Host ausgeführt werden, und führen Sie dann den folgenden Befehl in einem Terminal aus. Auf diese Weise wird ein Bind-Mount des Greengrass log-Verzeichnisses erstellt und das Docker-Image gestartet.

Ersetzen Sie /tmp durch den Pfad, in den Sie Ihre Zertifikate und Konfigurationsdatei dekomprimiert haben.

docker run --rm --init -it --name aws-iot-greengrass \ --entrypoint /greengrass-entrypoint.sh \ -v /tmp/certs:/greengrass/certs \ -v /tmp/config:/greengrass/config \ -v /tmp/log:/greengrass/ggc/var/log \ -p 8883:8883 \ 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

Anschließend können Sie Ihre Protokolle auf Ihrem Host unter /tmp/log überprüfen, um zu sehen, welche Entwicklungen in Greengrass während der Ausführung des Docker-Containers eingetreten sind.

Unter Windows

Beenden Sie alle Greengrass-Docker-Container, die auf dem Host ausgeführt werden, und führen Sie dann den folgenden Befehl in einem Befehlszeilenfenster aus. Auf diese Weise wird ein Bind-Mount des Greengrass log-Verzeichnisses erstellt und das Docker-Image gestartet.

cd C:\Users\%USERNAME%\Downloads mkdir log docker run --rm --init -it --name aws-iot-greengrass --entrypoint /greengrass-entrypoint.sh -v c:/Users/%USERNAME%/Downloads/certs:/greengrass/certs -v c:/Users/%USERNAME%/Downloads/config:/greengrass/config -v c:/Users/%USERNAME%/Downloads/log:/greengrass/ggc/var/log -p 8883:8883 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest

Anschließend können Sie Ihre Protokolle auf Ihrem Host unter C:/Users/%USERNAME%/Downloads/log überprüfen, um zu sehen, welche Entwicklungen in Greengrass während der Ausführung des Docker-Containers eingetreten sind.

Anfügen einer interaktiven Shell an den Docker-Container

Sie können eine interaktive Shell an einen AWS IoT Greengrass-Docker-Container anfügen. Auf diese Weise können Sie den Status des Greengrass Docker-Containers untersuchen.

Unter Linux oder macOS

Führen Sie den folgenden Befehl in einem separaten Terminal aus, während der Greengrass-Docker-Container ausgeführt wird.

docker exec -it $(docker ps -a -q -f "name=aws-iot-greengrass") /bin/bash
Unter Windows

Führen Sie die folgenden Befehle in einem separaten Befehlszeilenfenster aus, während der Greengrass-Docker-Container ausgeführt wird.

docker ps -a -q -f "name=aws-iot-greengrass"

gg-container-idErsetzen Sie durch dascontainer_id Ergebnis des vorherigen Befehls.

docker exec -it gg-container-id /bin/bash