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
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
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.
-
Für den Zugriff Elastic Container Registry (Amazon ECR) -Ressourcen müssen Sie die folgende Erlaubnis erteilen.
-
Amazon ECR setzt voraus, dass Benutzer die
ecr: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.
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.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 Huboder 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
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
-
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ürnet.ipv4.ip_forward
"1" fest und laden Sie dannsysctls
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.
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.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 Huboder 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.
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.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 Huboder 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.
-
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-files
durch den Pfad zu den Sicherheitsressourcen und ersetzen SiecertificateId
durch die Zertifikat-ID in den Dateinamen.mkdir /tmp/certs mv
path-to-security-files
/certificateId
-certificate.pem.crt /tmp/certs mvpath-to-security-files
/certificateId
-public.pem.key /tmp/certs mvpath-to-security-files
/certificateId
-private.pem.key /tmp/certs mvpath-to-security-files
/AmazonRootCA1.pem /tmp/certs -
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-file
Ersetzen Sie durch den Pfad zur Konfigurationsdatei.mkdir /tmp/config mv
path-to-config-file
/config.json /tmp/config 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.
-
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-files
durch den Pfad zu den Sicherheitsressourcen und ersetzen SiecertificateId
durch die Zertifikat-ID in den Dateinamen.mkdir /tmp/certs mv
path-to-security-files
/certificateId
-certificate.pem.crt /tmp/certs mvpath-to-security-files
/certificateId
-public.pem.key /tmp/certs mvpath-to-security-files
/certificateId
-private.pem.key /tmp/certs mvpath-to-security-files
/AmazonRootCA1.pem /tmp/certs -
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-file
Ersetzen Sie durch den Pfad zur Konfigurationsdatei.mkdir /tmp/config mv
path-to-config-file
/config.json /tmp/config 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
-
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-files
durch den Pfad zu den Sicherheitsressourcen und ersetzen SiecertificateId
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 movepath-to-security-files
\certificateId
-public.pem.key C:\Users\%USERNAME%\Downloads\certs movepath-to-security-files
\certificateId
-private.pem.key C:\Users\%USERNAME%\Downloads\certs movepath-to-security-files
\AmazonRootCA1.pem C:\Users\%USERNAME%\Downloads\certs -
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-file
Ersetzen Sie durch den Pfad zur Konfigurationsdatei.mkdir C:\Users\%USERNAME%\Downloads\config move
path-to-config-file
\config.json C:\Users\%USERNAME%\Downloads\config -
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 VerzeichnisC:\
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.
Erweitern Sie im Navigationsbereich derAWS IoT Konsole unter Verwalten die Option Greengrass-Geräte und wählen Sie dann Gruppen (V1) aus.
Wählen Sie die Gruppe aus, deren Einstellungen Sie ändern möchten.
-
Wählen Sie die Registerkarte Lambda-Funktionen.
-
Wählen Sie unter Standard-Laufzeitumgebung für Lambda-Funktionen die Option Bearbeiten aus.
-
Ändern Sie in der Laufzeitumgebung Standard-Lambda-Funktion bearbeiten unter Standardcontainerisierung für Lambda-Funktionen die Containerisierungseinstellungen.
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.
-
Folgen Sie den Schritten unterModul 3 (Teil 1): Lambda-Funktionen aufAWS IoT Greengrass, um eine langlebige Hello World Lambda-Funktion für den Container bereitzustellen.
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.
-
Folgen Sie den Schritten unterModul 4: Interagieren mit Client-Geräten in einemAWS IoT GreengrassGruppe, um Client-Geräte bereitzustellen, die eine Verbindung zum Core herstellen und MQTT-Nachrichten senden.
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
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-id
Ersetzen Sie durch dascontainer_id
Ergebnis des vorherigen Befehls.docker exec -it
gg-container-id
/bin/bash