View a markdown version of this page

Fehlerbehebung AWS IoT Greengrass V2 - AWS IoT Greengrass

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.

Fehlerbehebung AWS IoT Greengrass V2

Verwenden Sie die Informationen und Lösungen zur Fehlerbehebung in diesem Abschnitt, um Probleme mit AWS IoT Greengrass Version 2 zu lösen.

Anzeigen AWS IoT Greengrass Protokolle der Kernsoftware und der Komponenten

Die AWS IoT Greengrass Core-Software schreibt Protokolle in das lokale Dateisystem, mit denen Sie Echtzeitinformationen über das Kerngerät anzeigen können. Sie können Core-Geräte auch so konfigurieren, dass Protokolle in Logs gespeichert CloudWatch werden, sodass Sie Probleme mit Kerngeräten aus der Ferne beheben können. Mithilfe dieser Protokolle können Sie Probleme mit Komponenten, Bereitstellungen und Kerngeräten identifizieren. Weitere Informationen finden Sie unter AWS IoT Greengrass Protokolle überwachen.

AWS IoT Greengrass Kernprobleme der Software

Beheben Sie Probleme mit der AWS IoT Greengrass Kernsoftware.

Themen

ThrottlingException von der ListDeployments API

ThrottlingExceptionvon der ListDeployments API: Dies wird möglicherweise angezeigt, wenn Sie eine große Anzahl von Bereitstellungen im Konto haben.

Gehen Sie wie folgt vor, um dieses Problem zu lösen:

  • Wenn Sie SDK verwenden, geben Sie bitte den MaxResult Parameter an. Zum Beispiel für JavaSDK mit einem kleinen Wert (z. B. 5).

  • Sie können AWS Service Quotas verwenden, um eine Erhöhung des Ratenlimits der DescribeJob API zu beantragen. Sie können zur Service Quota Console gehen, Kontingente von auswählen AWS IoT und der Name des Limits lautet DescribeJob Throttle-Limit. Sie können es von 10 auf 50 erhöhen.

Das Hauptgerät kann nicht eingerichtet werden

Wenn das AWS IoT Greengrass Core-Software-Installationsprogramm fehlschlägt und Sie kein Kerngerät einrichten können, müssen Sie möglicherweise die Software deinstallieren und es erneut versuchen. Weitere Informationen finden Sie unter Deinstalliere das AWS IoT Greengrass Kernsoftware.

Das kann nicht gestartet werden AWS IoT Greengrass Kernsoftware als Systemdienst

Wenn die AWS IoT Greengrass Core-Software nicht gestartet werden kann, überprüfen Sie die Systemdienstprotokolle, um das Problem zu identifizieren. Ein häufiges Problem besteht darin, dass Java in der PATH-Umgebungsvariablen (Linux) oder der PATH-Systemvariablen (Windows) nicht verfügbar ist.

Nucleus kann nicht als Systemdienst eingerichtet werden

Dieser Fehler wird möglicherweise angezeigt, wenn das AWS IoT Greengrass Core-Softwareinstallationsprogramm nicht AWS IoT Greengrass als Systemdienst eingerichtet werden kann. Auf Linux-Geräten tritt dieser Fehler normalerweise auf, wenn das Kerngerät nicht über das https://en.wikipedia.org/wiki/Systemd systemd-Init-System verfügt. Das Installationsprogramm kann die AWS IoT Greengrass Core-Software erfolgreich einrichten, auch wenn es den Systemdienst nicht einrichten kann.

Führen Sie eine der folgenden Aktionen aus:

Es kann keine Verbindung hergestellt werden zu AWS IoT Core

Dieser Fehler wird möglicherweise angezeigt, wenn die AWS IoT Greengrass Core-Software keine Verbindung herstellen kann, AWS IoT Core um beispielsweise Bereitstellungsaufträge abzurufen. Gehen Sie wie folgt vor:

  • Vergewissern Sie sich, dass Ihr Hauptgerät eine Verbindung zum Internet herstellen kann und AWS IoT Core. Weitere Informationen über den AWS IoT Core Endpunkt, mit dem Ihr Gerät eine Verbindung herstellt, finden Sie unterKonfigurieren Sie den AWS IoT Greengrass Kernsoftware.

  • Vergewissern Sie sich, dass AWS IoT das Ding Ihres Hauptgeräts ein Zertifikat verwendetiot:Connect, das die iot:Subscribe Berechtigungeniot:Publish,iot:Receive, und zulässt.

  • Wenn Ihr Hauptgerät einen Netzwerk-Proxy verwendet, überprüfen Sie, ob Ihr Hauptgerät eine Geräterolle hat und ob seine Rolle die iot:Subscribe Berechtigungen iot:Connectiot:Publish,iot:Receive, und zulässt.

Fehler „Nicht genügend Speicher“

Dieser Fehler tritt normalerweise auf, wenn Ihr Gerät nicht über genügend Speicher verfügt, um ein Objekt im Java-Heap zuzuweisen. Auf Geräten mit begrenztem Speicher müssen Sie möglicherweise eine maximale Heap-Größe angeben, um die Speicherzuweisung zu steuern. Weitere Informationen finden Sie unter Steuern Sie die Speicherzuweisung mit JVM-Optionen.

Greengrass CLI kann nicht installiert werden

Möglicherweise wird die folgende Konsolenmeldung angezeigt, wenn Sie das --deploy-dev-tools Argument in Ihrem Installationsbefehl für AWS IoT Greengrass Core verwenden.

Thing group exists, it could have existing deployment and devices, hence NOT creating deployment for Greengrass first party dev tools, please manually create a deployment if you wish to

Dies tritt auf, wenn die Greengrass-CLI-Komponente nicht installiert ist, weil Ihr Kerngerät Mitglied einer Dinggruppe ist, für die eine vorhandene Bereitstellung vorhanden ist. Wenn Sie diese Meldung sehen, können Sie die Greengrass-CLI-Komponente (aws.greengrass.Cli) manuell auf dem Gerät bereitstellen, um die Greengrass-CLI zu installieren. Weitere Informationen finden Sie unter Installieren Sie die Greengrass-CLI.

Der Benutzer root darf nicht ausgeführt werden

Dieser Fehler tritt möglicherweise auf, wenn der Benutzer, der die AWS IoT Greengrass Core-Software ausführt (in der Regelroot), nicht berechtigt ist, sie sudo mit einem Benutzer oder einer Gruppe auszuführen. Für den ggc_user Standardsystembenutzer sieht dieser Fehler wie folgt aus:

Sorry, user root is not allowed to execute <command> as ggc_user:ggc_group.

Vergewissern Sie sich, dass Ihre /etc/sudoers Datei dem Benutzer die Erlaubnis gibt, sudo als andere Gruppen zu arbeiten. Die Berechtigung für den Benutzer /etc/sudoers sollte wie im folgenden Beispiel aussehen.

root ALL=(ALL:ALL) ALL

com.aws.greengrass.lifecyclemanager. GenericExternalService: Konnte nicht feststellen, ob mit ausgeführt werden soll user/group

Dieser Fehler tritt möglicherweise auf, wenn das Kerngerät versucht, eine Komponente auszuführen, und der Greengrass-Nukleus keinen Standardsystembenutzer angibt, der zum Ausführen von Komponenten verwendet werden soll.

Um dieses Problem zu beheben, konfigurieren Sie den Greengrass-Nukleus so, dass er den Standardsystembenutzer angibt, der Komponenten ausführt. Weitere Informationen erhalten Sie unter Konfigurieren Sie den Benutzer, der die Komponenten ausführt und Konfigurieren Sie den Standardkomponentenbenutzer.

Das Segment des gemeinsam genutzten Objekts konnte nicht zugeordnet werden: Vorgang nicht zulässig

Dieser Fehler wird möglicherweise angezeigt, wenn die AWS IoT Greengrass Core-Software nicht gestartet werden kann, weil der /tmp Ordner mit noexec Berechtigungen gemountet ist. Die AWS Common Runtime (CRT) -Bibliothek verwendet den /tmp Ordner standardmäßig.

Führen Sie eine der folgenden Aktionen aus:

  • Führen Sie den folgenden Befehl aus, um den /tmp Ordner mit den exec entsprechenden Berechtigungen erneut bereitzustellen, und versuchen Sie es erneut.

    sudo mount -o remount,exec /tmp
  • Wenn Sie Greengrass Nucleus v2.5.0 oder höher ausführen, können Sie eine JVM-Option festlegen, um den Ordner zu ändern, den die CRT-Bibliothek verwendet. AWS Sie können den jvmOptions Parameter in der Greengrass Nucleus-Komponentenkonfiguration in einer Bereitstellung oder bei der Installation der Core-Software angeben. AWS IoT Greengrass /path/to/useErsetzen Sie ihn durch den Pfad zu einem Ordner, den die AWS CRT-Bibliothek verwenden kann.

    { "jvmOptions": "-Daws.crt.lib.dir=\"/path/to/use\"" }

Der Windows-Dienst konnte nicht eingerichtet werden

Dieser Fehler wird möglicherweise angezeigt, wenn Sie die AWS IoT Greengrass Core-Software auf einem Microsoft Windows 2016-Gerät installieren. Die AWS IoT Greengrass Core-Software wird unter Windows 2016 nicht unterstützt. Eine Liste der unterstützten Betriebssysteme finden Sie unterUnterstützte Plattformen.

Wenn Sie Windows 2016 verwenden müssen, können Sie Folgendes tun:

  1. Entpacken Sie das heruntergeladene AWS IoT Greengrass Core-Installationsarchiv

  2. Öffnen Sie im Greengrass Verzeichnis die bin/greengrass.xml.template Datei.

  3. Fügen Sie das <autoRefresh> Tag am Ende der Datei direkt vor dem </service> Tag hinzu.

    </log> <autoRefresh>false</autoRefresh> </service>

com.aws.greengrass.util.exceptions. TLSAuthException: Vertrauensmanager konnte nicht abgerufen werden

Dieser Fehler wird möglicherweise angezeigt, wenn Sie die AWS IoT Greengrass Core-Software ohne eine Root-Zertifizierungsstellendatei (CA) installieren.

2022-06-05T10:00:39.556Z [INFO] (main) com.aws.greengrass.lifecyclemanager.Kernel: service-loaded. {serviceName=DeploymentService} 2022-06-05T10:00:39.943Z [WARN] (main) com.aws.greengrass.componentmanager.ClientConfigurationUtils: configure-greengrass-mutual-auth. Error during configure greengrass client mutual auth. {} com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager

Stellen Sie sicher, dass Sie mit dem rootCaPath Parameter in der Konfigurationsdatei, die Sie dem Installationsprogramm zur Verfügung stellen, eine gültige Root-CA-Datei angeben. Weitere Informationen finden Sie unter Installieren Sie die AWS IoT Greengrass Core-Software.

com.aws.greengrass.deployment. IotJobsHelper: Beim Abonnieren des Themas IoT-Stellenbeschreibungen ist keine Verbindung verfügbar. Werde es irgendwann erneut versuchen

Diese Warnmeldung wird möglicherweise angezeigt, wenn das Hauptgerät keine Verbindung herstellen kann, AWS IoT Core um Benachrichtigungen über Bereitstellungsaufträge zu abonnieren. Gehen Sie wie folgt vor:

  • Vergewissern Sie sich, dass das Hauptgerät mit dem Internet verbunden ist und den von Ihnen konfigurierten AWS IoT Datenendpunkt erreichen kann. Weitere Informationen zu Endpunkten, die von Kerngeräten verwendet werden, finden Sie unterGeräteverkehr über einen Proxy oder eine Firewall zulassen.

  • Überprüfen Sie die Greengrass-Protokolle auf andere Fehler, die andere Hauptursachen aufdecken.

software.amazon.awssdk.services.iam.model. IamException: Das in der Anfrage enthaltene Sicherheitstoken ist ungültig

Dieser Fehler wird möglicherweise angezeigt, wenn Sie die AWS IoT Greengrass Core-Software mit automatischer Bereitstellung Installieren Sie die AWS IoT Greengrass Core-Software mit automatischer Ressourcenbereitstellung installieren und das Installationsprogramm ein ungültiges AWS Sitzungstoken verwendet. Gehen Sie wie folgt vor:

  • Wenn Sie temporäre Sicherheitsanmeldeinformationen verwenden, überprüfen Sie, ob das Sitzungstoken korrekt ist und ob Sie das vollständige Sitzungstoken kopieren und einfügen.

  • Wenn Sie langfristige Sicherheitsanmeldeinformationen verwenden, stellen Sie sicher, dass das Gerät nicht über ein Sitzungstoken aus einer Zeit verfügt, in der Sie zuvor temporäre Anmeldeinformationen verwendet haben. Gehen Sie wie folgt vor:

    1. Führen Sie den folgenden Befehl aus, um die Umgebungsvariable für das Sitzungstoken aufzuheben.

      Linux or Unix
      unset AWS_SESSION_TOKEN
      Windows Command Prompt (CMD)
      set AWS_SESSION_TOKEN=
      PowerShell
      Remove-Item Env:\AWS_SESSION_TOKEN
    2. Prüfen Sie, ob die AWS Anmeldeinformationsdatei,~/.aws/credentials, ein Sitzungstoken, aws_session_token enthält. Wenn ja, entfernen Sie diese Zeile aus der Datei.

      aws_session_token = AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk

Sie können die AWS IoT Greengrass Core-Software auch ohne Angabe von AWS Anmeldeinformationen installieren. Für weitere Informationen siehe Installieren AWS IoT Greengrass Kernsoftware mit manueller Ressourcenbereitstellung oder Installieren AWS IoT Greengrass Kernsoftware mit AWS IoT Bereitstellung von Flotten.

software.amazon.awssdk.services.iot.model. IotException: Benutzer: Der Benutzer ist nicht berechtigt, Folgendes auszuführen: iot: < > GetPolicy

Dieser Fehler wird möglicherweise angezeigt, wenn Sie die AWS IoT Greengrass Core-Software mit automatischer Bereitstellung Installieren Sie die AWS IoT Greengrass Core-Software mit automatischer Ressourcenbereitstellung installieren und das Installationsprogramm AWS Anmeldeinformationen verwendet, die nicht über die erforderlichen Berechtigungen verfügen. Weitere Informationen zu den erforderlichen Berechtigungen finden Sie unterMinimale IAM-Richtlinie für das Installationsprogramm zur Bereitstellung von Ressourcen.

Überprüfen Sie die Berechtigungen für die IAM-Identität der Anmeldeinformationen und gewähren Sie der IAM-Identität alle erforderlichen Berechtigungen, die fehlen.

Fehler: com.aws.greengrass.shadowmanager.sync.model. FullShadowSyncRequest: Die Cloud Shadow Get-Anfrage konnte nicht ausgeführt werden

Dieser Fehler wird möglicherweise angezeigt, wenn Sie die Shadow-Manager-Komponente verwenden, um Geräteschatten mit zu synchronisieren AWS IoT Core. Der HTTP-Statuscode 403 weist darauf hin, dass dieser Fehler aufgetreten ist, weil die AWS IoT Richtlinie des Hauptgeräts keine Anruferlaubnis gewährtGetThingShadow.

com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request. {thing name=MyGreengrassCore, shadow name=MyShadow} 2021-07-14T21:09:02.456Z [ERROR] (pool-2-thread-109) com.aws.greengrass.shadowmanager.sync.SyncHandler: sync. Skipping sync request. {thing name=MyGreengrassCore, shadow name=MyShadow} com.aws.greengrass.shadowmanager.exception.SkipSyncRequestException: software.amazon.awssdk.services.iotdataplane.model.IotDataPlaneException: null (Service: IotDataPlane, Status Code: 403, Request ID: f6e713ba-1b01-414c-7b78-5beb3f3ad8f6, Extended Request ID: null)

Um lokale Shadows mit synchronisieren zu können AWS IoT Core, muss die AWS IoT Richtlinie des Kerngeräts die folgenden Berechtigungen gewähren:

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

Prüfen Sie die AWS IoT Richtlinie des Kerngeräts und fügen Sie alle fehlenden erforderlichen Berechtigungen hinzu. Weitere Informationen finden Sie hier:

Die Operation aws.greengrass# > wird von < Greengrass nicht unterstützt

Dieser Fehler tritt möglicherweise auf, wenn Sie einen IPC-Vorgang (Interprocess Communication) in einer benutzerdefinierten AWS Greengrass-Komponente verwenden und die erforderliche, bereitgestellte Komponente nicht auf dem Kerngerät installiert ist.

Um dieses Problem zu beheben, fügen Sie die erforderliche Komponente als Abhängigkeit zu Ihrem Komponentenrezept hinzu, sodass die AWS IoT Greengrass Core-Software die erforderliche Komponente installiert, wenn Sie Ihre Komponente bereitstellen.

java.io. FileNotFoundException: < stream-manager-store-root-dir /stream_manager_metadata_store > (Erlaubnis verweigert)

Möglicherweise wird dieser Fehler in der Stream-Manager-Protokolldatei (aws.greengrass.StreamManager.log) angezeigt, wenn Sie den Stream-Manager so konfigurieren, dass er einen Stammordner verwendet, der nicht existiert oder über die richtigen Berechtigungen verfügt. Weitere Informationen zur Konfiguration dieses Ordners finden Sie unter Stream-Manager-Konfiguration.

com.aws.greengrass.security.provider.pkcs11. PKCS11CryptoKeyService: Der private Schlüssel oder das Zertifikat mit dem Label-Label ist nicht vorhanden < >

Dieser Fehler tritt auf, wenn die PKCS #11 -Anbieterkomponente den privaten Schlüssel oder das Zertifikat, das Sie bei der Konfiguration der AWS IoT Greengrass Core-Software für die Verwendung eines Hardware-Sicherheitsmoduls (HSM) angeben, nicht finden oder laden kann. Gehen Sie wie folgt vor:

  • Vergewissern Sie sich, dass der private Schlüssel und das Zertifikat im HSM gespeichert sind. Verwenden Sie dazu den Steckplatz, die Benutzer-PIN und die Objektbezeichnung, für deren Verwendung Sie die AWS IoT Greengrass Core-Software konfiguriert haben.

  • Stellen Sie sicher, dass der private Schlüssel und das Zertifikat dieselbe Objektbezeichnung im HSM verwenden.

  • Wenn Ihr HSM Objekt-IDs unterstützt, überprüfen Sie, ob der private Schlüssel und das Zertifikat dieselbe Objekt-ID im HSM verwenden.

Lesen Sie in der Dokumentation zu Ihrem HSM nach, wie Sie Details zu den Sicherheitstoken im HSM abfragen können. Wenn Sie den Slot, die Objektbezeichnung oder die Objekt-ID für ein Sicherheitstoken ändern müssen, lesen Sie in der Dokumentation zu Ihrem HSM nach, wie das geht.

software.amazon.awssdk.services.secretsmanager.model. SecretsManagerException: Benutzer: Der Benutzer ist nicht berechtigt, Folgendes auszuführen: secretsmanager: on resource: arn < > GetSecretValue < >

Dieser Fehler kann auftreten, wenn Sie die Secret Manager-Komponente verwenden, um ein AWS Secrets Manager Geheimnis bereitzustellen. Wenn die Token-Exchange-IAM-Rolle des Kerngeräts keine Berechtigung zum Abrufen des Secrets gewährt, schlägt die Bereitstellung fehl und die Greengrass-Protokolle enthalten diesen Fehler.

Um ein Kerngerät zum Herunterladen eines Secrets zu autorisieren
  1. Fügen Sie die secretsmanager:GetSecretValue Berechtigung zur Token-Exchange-Rolle des Kerngeräts hinzu. Das folgende Beispiel für eine Richtlinienerklärung gewährt die Erlaubnis, den Wert eines Geheimnisses abzurufen.

    { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef" ] }

    Weitere Informationen finden Sie unter Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS.

  2. Wenden Sie die Bereitstellung erneut auf das Kerngerät an. Führen Sie eine der folgenden Aktionen aus:

    • Überarbeiten Sie die Bereitstellung ohne Änderungen. Das Kerngerät versucht erneut, das Secret herunterzuladen, wenn es die überarbeitete Bereitstellung erhält. Weitere Informationen finden Sie unter Bereitstellungen überarbeiten.

    • Starten Sie die AWS IoT Greengrass Core-Software neu, um die Bereitstellung erneut zu versuchen. Weitere Informationen finden Sie unter Führen Sie die AWS IoT Greengrass Core-Software aus.

    Die Bereitstellung ist erfolgreich, wenn der Secret Manager das Geheimnis erfolgreich herunterlädt.

software.amazon.awssdk.services.secretsmanager.model. SecretsManagerException: Der Zugriff auf KMS ist nicht erlaubt

Dieser Fehler kann auftreten, wenn Sie die Secret Manager-Komponente verwenden, um ein AWS Secrets Manager Geheimnis bereitzustellen, das mit einem AWS Key Management Service Schlüssel verschlüsselt ist. Wenn die Token-Exchange-IAM-Rolle des Kerngeräts keine Berechtigung zum Entschlüsseln des Geheimnisses gewährt, schlägt die Bereitstellung fehl und die Greengrass-Protokolle enthalten diesen Fehler.

Um das Problem zu beheben, fügen Sie die kms:Decrypt Berechtigung zur Token-Exchange-Rolle des Kerngeräts hinzu. Weitere Informationen finden Sie hier:

java.lang. NoClassDefFoundError:/ com/awsgreengrass/securityCryptoKeySpi

Dieser Fehler wird möglicherweise angezeigt, wenn Sie versuchen, die AWS IoT Greengrass Core-Software mit Hardwaresicherheit zu installieren, und Sie eine frühere Greengrass Nucleus-Version verwenden, die keine Hardware-Sicherheitsintegration unterstützt. Um die Hardware-Sicherheitsintegration nutzen zu können, müssen Sie Greengrass Nucleus v2.5.3 oder höher verwenden.

com.aws.greengrass.security.provider.pkcs11. PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED

Dieser Fehler wird möglicherweise angezeigt, wenn Sie die TPM2-Bibliothek verwenden, wenn Sie Core als Systemdienst ausführen. AWS IoT Greengrass

Dieser Fehler weist darauf hin, dass Sie eine Umgebungsvariable hinzufügen müssen, die den Speicherort des PKCS #11 -Speichers in der AWS IoT Greengrass Core-Systemd-Servicedatei angibt.

Weitere Informationen finden Sie im Abschnitt Anforderungen der PKCS #11 -Anbieter Komponentendokumentation.

Das Greengrass-Core-Gerät steckt auf Nucleus v2.12.3 fest

Wenn Ihr Greengrass-Core-Gerät Ihre Bereitstellung von Nucleus Version 2.12.3 nicht überarbeitet, müssen Sie die Datei möglicherweise herunterladen und durch Greengrass Nucleus Version 2.12.2 ersetzen. Greengrass.jar Gehen Sie wie folgt vor:

  1. Führen Sie auf Ihrem Greengrass-Core-Gerät den folgenden Befehl aus, um die Greengrass Core-Software zu beenden.

    Linux or Unix
    sudo systemctl stop greengrass
    Windows Command Prompt (CMD)
    sc stop "greengrass"
    PowerShell
    Stop-Service -Name "greengrass"
  2. Laden Sie die AWS IoT Greengrass Software auf Ihrem Kerngerät in eine Datei mit dem Namen herunter. greengrass-2.12.2.zip

    Linux or Unix
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
    Windows Command Prompt (CMD)
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
    PowerShell
    iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip -OutFile greengrass-2.12.2.zip
  3. Entpacken Sie die AWS IoT Greengrass Core-Software in einen Ordner auf Ihrem Gerät. GreengrassInstallerErsetzen Sie es durch den Ordner, den Sie verwenden möchten.

    Linux or Unix
    unzip greengrass-2.12.2.zip -d GreengrassInstaller && rm greengrass-2.12.2.zip
    Windows Command Prompt (CMD)
    mkdir GreengrassInstaller && tar -xf greengrass-2.12.2.zip -C GreengrassInstaller && del greengrass-2.12.2.zip
    PowerShell
    Expand-Archive -Path greengrass-2.12.2.zip -DestinationPath .\\GreengrassInstaller rm greengrass-2.12.2.zip
  4. Führen Sie den folgenden Befehl aus, um die Greengrass-JAR-Datei der Nucleus-Version 2.12.3 durch die Greengrass-JAR-Datei der Nucleus-Version 2.12.2 zu überschreiben.

    Linux or Unix
    sudo cp ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
    Windows Command Prompt (CMD)
    robocopy ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib /E
    PowerShell
    cp -Path ./GreengrassInstaller/lib/Greengrass.jar -Destination /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
  5. Führen Sie den folgenden Befehl aus, um die Greengrass Core-Software zu starten.

    Linux or Unix
    sudo systemctl start greengrass
    Windows Command Prompt (CMD)
    sc start "greengrass"
    PowerShell
    Start-Service -Name "greengrass"

Problem mit der Systemd-Vorlage von Greengrass Nucleus v2.14.0

Dieses Problem kann auftreten, wenn Sie Greengrass Nucleus v2.14.0 auf einem Linux-Gerät mit der standardmäßigen Systemd-Dienstvorlage installiert haben. Gehen Sie wie folgt vor:

  1. Führen Sie auf Ihrem Greengrass-Core-Gerät den folgenden Befehl aus, um die Systemd-Servicedatei auf den Stand von Nucleus v2.13.0 und früher zurückzusetzen.

    Linux or Unix
    sudo sed -i 's|ExecStart=/bin/sh -c "\(.*\) >> .*/logs/loader.log 2>&1"|ExecStart=/bin/sh \1|' /etc/systemd/system/greengrass.service
  2. Wenden Sie die Änderungen an.

    Linux or Unix
    sudo systemctl daemon-reload sudo systemctl restart greengrass

AWS IoT Greengrass Probleme mit der Cloud

Verwenden Sie die folgenden Informationen, um Probleme mit der AWS IoT Greengrass Konsole und der API zu beheben. Jeder Eintrag entspricht einer Fehlermeldung, die möglicherweise angezeigt wird, wenn Sie eine Aktion ausführen.

Beim Aufrufen der CreateComponentVersion Operation ist ein Fehler aufgetreten (AccessDeniedException): User: arn:aws:iam: < :123456789012:user/ username is not authorized to perform: null >

Dieser Fehler wird möglicherweise angezeigt, wenn Sie eine Komponentenversion über die Konsole oder mit dem Vorgang erstellen. AWS IoT Greengrass CreateComponentVersion

Dieser Fehler weist darauf hin, dass Ihr Rezept kein gültiges JSON- oder YAML-Format ist. Überprüfen Sie die Syntax Ihres Rezepts, beheben Sie alle Syntaxprobleme und versuchen Sie es erneut. Sie können einen Online-JSON- oder YAML-Syntaxprüfer verwenden, um Syntaxprobleme in Ihrem Rezept zu identifizieren.

Ungültige Eingabe: In Artifacts sind folgende Fehler aufgetreten: {<s3 ArtifactUri > = Auf die angegebene Artefaktressource kann nicht zugegriffen werden}

Dieser Fehler wird möglicherweise angezeigt, wenn Sie eine Komponentenversion über die AWS IoT Greengrass Konsole oder mit dem CreateComponentVersion Vorgang erstellen. Dieser Fehler weist darauf hin, dass ein S3-Artefakt im Komponentenrezept nicht gültig ist.

Gehen Sie wie folgt vor:

  • Vergewissern Sie sich, dass sich der S3-Bucket in dem Bereich befindet AWS-Region , an dem Sie die Komponente erstellt haben. AWS IoT Greengrass unterstützt keine regionsübergreifenden Anfragen nach Komponentenartefakten.

  • Stellen Sie sicher, dass der Artefakt-URI eine gültige S3-Objekt-URL ist, und überprüfen Sie, ob das Artefakt unter dieser S3-Objekt-URL existiert.

  • Vergewissern Sie sich, dass Sie AWS-Konto über die entsprechende S3-Objekt-URL auf das Artefakt zugreifen dürfen.

INAKTIVER Bereitstellungsstatus

Möglicherweise erhalten Sie einen INACTIVE Bereitstellungsstatus, wenn Sie die ListDeployments API ohne die erforderlichen abhängigen AWS IoT Richtlinien aufrufen. Sie müssen über die erforderlichen Berechtigungen verfügen, um einen genauen Bereitstellungsstatus zu erhalten. Sie können die abhängigen Aktionen finden, indem Sie in den Aktionen, die von definiert wurden, nachschauen AWS IoT Greengrass V2 und den erforderlichen Berechtigungen folgenListDeployments. Ohne die erforderlichen abhängigen AWS IoT Berechtigungen wird Ihnen weiterhin der Bereitstellungsstatus angezeigt, möglicherweise wird jedoch ein falscher Bereitstellungsstatus von INACTIVE angezeigt.

CreateDeployment gibt eine erfolgreiche Antwort zurück, GetDeployment gibt jedoch einen 404-Fehler zurück

Dieses Problem tritt möglicherweise auf, wenn Sie den CreateDeployment Vorgang zur Bereitstellung für ein AWS IoT Ding oder eine Dinggruppe aufrufen. Der CreateDeployment Aufruf gibt einen 200 Statuscode mit einer gültigen Bereitstellungs-ID zurück. Wenn Sie jedoch GetDeployment mit dieser Bereitstellungs-ID anrufen, erhalten Sie eine ResourceNotFoundException Fehlermeldung. In der AWS IoT Greengrass Konsole wird die Seite „Bereitstellung nicht gefunden“ für die Bereitstellungs-URL angezeigt. Bei der vorherigen Bereitstellung für das Ziel wird möglicherweise auch ein INACTIVE Status angezeigt, für den es keinen Ersatz gibt.

Dieses Problem kann auftreten, wenn mehrere CreateDeployment Anfragen gleichzeitig auf AWS IoT dasselbe Ziel abzielen. Eine Rennbedingung kann dazu führen, dass die Cloud den Einsatz nicht aufzeichnet. Das Kerngerät empfängt die Bereitstellung immer noch über den AWS IoT Device Shadow und wendet sie an, aber der AWS IoT Greengrass Cloud-Dienst hat keine Aufzeichnungen darüber. Wenn dieses Problem auftritt, kann es sich auch auf nachfolgende Bereitstellungen für dasselbe Ziel auswirken.

Gehen Sie wie folgt vor, um dieses Problem zu lösen und zu verhindern:

  • Vermeiden Sie es, gleichzeitig CreateDeployment Anfragen zu senden, die auf AWS IoT dasselbe Ziel abzielen. Serialisieren Sie Ihre Bereitstellungsanfragen oder fügen Sie eine Verzögerung zwischen ihnen hinzu, um sicherzustellen, dass jeweils nur ein CreateDeployment Anruf auf ein bestimmtes Objekt abzielt.

  • Wenn sich dieses Problem bereits auf Ihr Ziel auswirkt, geben nachfolgende Bereitstellungen möglicherweise weiterhin 404-Fehler zurück. Um dieses Problem zu beheben, löschen Sie den veralteten Bereitstellungsdatensatz für das betroffene Ziel, damit die nächste Bereitstellung normal ablaufen kann.

Probleme bei der Bereitstellung wichtiger Geräte

Beheben Sie Bereitstellungsprobleme auf Greengrass-Core-Geräten. Jeder Eintrag entspricht einer Protokollmeldung, die Sie möglicherweise auf Ihrem Hauptgerät sehen.

Themen

Fehler: com.aws.greengrass.componentmanager.exceptions. PackageDownloadException: Artefakt konnte nicht heruntergeladen werden

Dieser Fehler wird möglicherweise angezeigt, wenn die AWS IoT Greengrass Core-Software ein Komponenten-Artefakt nicht herunterladen kann, wenn das Core-Gerät eine Bereitstellung anwendet. Die Bereitstellung schlägt aufgrund dieses Fehlers fehl.

Wenn Sie diesen Fehler erhalten, enthält das Protokoll auch einen Stack-Trace, den Sie verwenden können, um das spezifische Problem zu identifizieren. Jeder der folgenden Einträge entspricht einer Meldung, die Sie möglicherweise im Stack-Trace der Failed to download artifact Fehlermeldung sehen.

software.amazon.awssdk.services.s3.model.S3Exception: null (Dienst: S3, Statuscode: 403, Anforderungs-ID: null,...)

Der Fehler könnte diesen PackageDownloadException Stack-Trace in den folgenden Fällen beinhalten:

  • Das Komponentenartefakt ist unter der S3-Objekt-URL, die Sie im Rezept der Komponente angeben, nicht verfügbar. Vergewissern Sie sich, dass Sie das Artefakt in den S3-Bucket hochgeladen haben und dass die Artefakt-URI mit der S3-Objekt-URL des Artefakts im Bucket übereinstimmt.

  • Die Token-Exchange-Rolle des Kerngeräts erlaubt es der AWS IoT Greengrass Core-Software nicht, das Komponenten-Artefakt von der S3-Objekt-URL herunterzuladen, die Sie im Rezept der Komponente angeben. Stellen Sie sicher, dass die Token-Exchange-Rolle s3:GetObject die S3-Objekt-URL zulässt, unter der das Artefakt verfügbar ist.

software.amazon.awssdk.services.s3.model.S3Exception: Zugriff verweigert (Dienst: S3, Statuscode: 403, Anforderungs-ID: requestId) < >

Der Fehler könnte diesen Stack-Trace beinhalten, wenn das Kerngerät nicht zum Aufrufen berechtigt ist. PackageDownloadException s3:GetBucketLocation Die Fehlermeldung enthält auch die folgende Meldung.

reason: Failed to determine S3 bucket location

Stellen Sie sicher, dass die Token-Exchange-Rolle des Kerngeräts den S3-Bucket zulässts3:GetBucketLocation, in dem das Artefakt verfügbar ist.

Fehler: com.aws.greengrass.componentmanager.exceptions. ArtifactChecksumMismatchException: Die Integritätsprüfung für das heruntergeladene Artefakt ist fehlgeschlagen. Wahrscheinlich aufgrund einer Dateibeschädigung.

Dieser Fehler wird möglicherweise angezeigt, wenn die AWS IoT Greengrass Core-Software ein Komponentenartefakt nicht herunterladen kann, wenn das Kerngerät eine Bereitstellung anwendet. Die Bereitstellung schlägt fehl, weil die Prüfsumme der heruntergeladenen Artefaktdatei nicht mit der Prüfsumme übereinstimmt, die beim Erstellen der Komponente AWS IoT Greengrass berechnet wurde.

Gehen Sie wie folgt vor:

  • Prüfen Sie, ob sich die Artefaktdatei im S3-Bucket, in dem Sie sie hosten, geändert hat. Wenn sich die Datei seit der Erstellung der Komponente geändert hat, stellen Sie sie auf die vorherige Version zurück, die das Kerngerät erwartet. Wenn Sie die vorherige Version der Datei nicht wiederherstellen können oder wenn Sie die neue Version der Datei verwenden möchten, erstellen Sie eine neue Version der Komponente mit der Artefaktdatei.

  • Überprüfen Sie die Internetverbindung Ihres Hauptgeräts. Dieser Fehler kann auftreten, wenn die Artefaktdatei beim Herunterladen beschädigt wird. Erstellen Sie eine neue Bereitstellung und versuchen Sie es erneut.

Fehler: com.aws.greengrass.componentmanager.exceptions. NoAvailableComponentVersionException: Die Version des < Komponentennamens konnte nicht mit der Cloud ausgehandelt werden, und es gibt keine lokal gültige > Version, die die Anforderungen erfüllt < >

Dieser Fehler wird möglicherweise angezeigt, wenn ein Kerngerät keine Komponentenversion finden kann, die die Anforderungen der Bereitstellungen für dieses Kerngerät erfüllt. Das Kerngerät sucht im AWS IoT Greengrass Dienst und auf dem lokalen Gerät nach der Komponente. Die Fehlermeldung enthält das Ziel jeder Bereitstellung und die Versionsanforderungen dieser Bereitstellung für die Komponente. Das Bereitstellungsziel kann ein Ding, eine Dinggruppe oder ein Objekt seinLOCAL_DEPLOYMENT, das die lokale Bereitstellung auf dem Kerngerät darstellt.

Dieses Problem kann in den folgenden Fällen auftreten:

  • Das Kerngerät ist das Ziel mehrerer Bereitstellungen mit widersprüchlichen Anforderungen an die Komponentenversion. Beispielsweise könnte das Kerngerät das Ziel mehrerer Bereitstellungen sein, die eine com.example.HelloWorld Komponente enthalten, wobei für eine Bereitstellung Version 1.0.0 und für die andere Version 1.0.1 erforderlich ist. Da es unmöglich ist, eine Komponente zu haben, die beide Anforderungen erfüllt, schlägt die Bereitstellung fehl.

  • Die Komponentenversion ist weder im AWS IoT Greengrass Dienst noch auf dem lokalen Gerät vorhanden. Die Komponente könnte beispielsweise gelöscht worden sein.

  • Es gibt Komponentenversionen, die die Versionsanforderungen erfüllen, aber keine ist mit der Plattform des Kerngeräts kompatibel.

  • Die AWS IoT Richtlinie des Kerngeräts gewährt die greengrass:ResolveComponentCandidates Genehmigung nicht. Suchen Sie Status Code: 403 im Fehlerprotokoll nach, um dieses Problem zu identifizieren. Um dieses Problem zu beheben, fügen Sie die greengrass:ResolveComponentCandidates Berechtigung der AWS IoT Richtlinie für das Hauptgerät hinzu. Weitere Informationen finden Sie unter Minimale AWS IoT Richtlinie für AWS IoT Greengrass V2 Kerngeräte.

Um dieses Problem zu beheben, überarbeiten Sie die Bereitstellungen, sodass sie kompatible Komponentenversionen enthalten, oder entfernen Sie inkompatible Versionen. Weitere Informationen zur Überarbeitung von Cloud-Bereitstellungen finden Sie unter. Bereitstellungen überarbeiten Weitere Informationen zum Überarbeiten lokaler Bereitstellungen finden Sie im AWS IoT Greengrass CLI-Befehl deployment create.

software.amazon.awssdk.services.greengrassv2data.model. ResourceNotFoundException: Die neueste Version von Component ComponentName erhebt keinen Anspruch auf Plattformkernkompatibilität < > < DevicePlatform >

Dieser Fehler tritt möglicherweise auf, wenn Sie eine Komponente auf einem Kerngerät bereitstellen und die Komponente keine Plattform auflistet, die mit der Plattform des Kerngeräts kompatibel ist. Führen Sie eine der folgenden Aktionen aus:

  • Wenn es sich bei der Komponente um eine benutzerdefinierte Greengrass-Komponente handelt, können Sie die Komponente so aktualisieren, dass sie mit dem Kerngerät kompatibel ist. Fügen Sie ein neues Manifest hinzu, das der Plattform des Kerngeräts entspricht, oder aktualisieren Sie ein vorhandenes Manifest, sodass es der Plattform des Kerngeräts entspricht. Weitere Informationen finden Sie unter AWS IoT Greengrass Referenz zum Komponentenrezept.

  • Wenn die Komponente von bereitgestellt wird AWS, überprüfen Sie, ob eine andere Version der Komponente mit dem Kerngerät kompatibel ist. Wenn keine Version kompatibel ist, kontaktieren Sie uns unter AWS re:Post Verwendung des AWS IoT Greengrass Tags oder wenden Sie sich an Support.

com.aws.greengrass.componentmanager.exceptions. PackagingException: Die Bereitstellung versucht, den Nucleus von der aws.greengrass.Nucleus- Version auf die aws.greengrass.Nucleus- < Version > zu aktualisieren, aber es wurde keine Komponente des Typs Nucleus als Zielkomponente aufgenommen < >

Dieser Fehler tritt möglicherweise auf, wenn Sie eine Komponente bereitstellen, die vom Greengrass-Nukleus abhängt, und auf dem Kerngerät eine frühere Greengrass-Nukleus-Version als die neueste verfügbare Nebenversion ausgeführt wird. Dieser Fehler tritt auf, weil die AWS IoT Greengrass Core-Software versucht, Komponenten automatisch auf die neueste kompatible Version zu aktualisieren. Die AWS IoT Greengrass Core-Software verhindert jedoch, dass der Greengrass Nucleus auf eine neue Nebenversion aktualisiert wird, da mehrere AWS bereitgestellte Komponenten von bestimmten Nebenversionen des Greengrass Nucleus abhängen. Weitere Informationen finden Sie unter Verhalten bei der Aktualisierung von Greengrass Nucleus.

Sie müssen das Deployment überarbeiten, um die Greengrass Nucleus-Version anzugeben, die Sie verwenden möchten. Führen Sie eine der folgenden Aktionen aus:

  • Überarbeiten Sie die Bereitstellung, um die Greengrass-Nucleus-Version anzugeben, die derzeit auf dem Kerngerät ausgeführt wird.

  • Überarbeiten Sie die Bereitstellung, um eine spätere Nebenversion des Greengrass Nucleus anzugeben. Wenn Sie diese Option wählen, müssen Sie auch die Versionen aller AWS bereitgestellten Komponenten aktualisieren, die von bestimmten Nebenversionen des Greengrass Nucleus abhängen. Weitere Informationen finden Sie unter AWS-mitgelieferte Komponenten.

Fehler: com.aws.greengrass.deployment.exceptions. DeploymentException: Die Bereitstellung kann nicht verarbeitet werden. Das Greengrass-Startverzeichnis ist nicht eingerichtet oder Greengrass ist nicht als Systemdienst eingerichtet

Dieser Fehler tritt möglicherweise auf, wenn Sie ein Greengrass-Gerät von einer Dinggruppe in eine andere verschieben und dann zurück zur ursprünglichen Gruppe mit Bereitstellungen, für die Greengrass neu gestartet werden muss.

Um dieses Problem zu beheben, erstellen Sie das Startverzeichnis für das Gerät neu. Wir empfehlen außerdem dringend, den Greengrass Nucleus auf Version 2.9.6 oder höher zu aktualisieren.

Das Folgende ist ein Linux-Skript zur Neuerstellung des Startverzeichnisses. Speichern Sie das Skript in einer Datei mit dem Namenfix_directory.sh.

#!/bin/bash set -e GG_ROOT=$1 GG_VERSION=$2 CURRENT="$GG_ROOT/alts/current" if [ ! -L "$CURRENT" ]; then mkdir -p $GG_ROOT/alts/directory_fix echo "Relinking $GG_ROOT/alts/directory_fix to $CURRENT" ln -sf $GG_ROOT/alts/directory_fix $CURRENT fi TARGET=$(readlink $CURRENT) if [[ ! -d "$TARGET" ]]; then echo "Creating directory: $TARGET" mkdir -p "$TARGET" fi DISTRO_LINK="$TARGET/distro" DISTRO="$GG_ROOT/packages/artifacts-unarchived/aws.greengrass.Nucleus/$GG_VERSION/aws.greengrass.nucleus/" echo "Relinking Nucleus artifacts to $DISTRO_LINK" ln -sf $DISTRO $DISTRO_LINK

Um das Skript auszuführen, führen Sie den folgenden Befehl aus:

[root@ip-172-31-27-165 ~]# ./fix_directory.sh /greengrass/v2 2.9.5 Relinking /greengrass/v2/alts/directory_fix to /greengrass/v2/alts/current Relinking Nucleus artifacts to /greengrass/v2/alts/directory_fix/distro

Information: com.aws.greengrass.deployment.exceptions. RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service hat beim Abrufen der vollständigen Bereitstellungskonfiguration einen Fehler zurückgegeben

Dieser Fehler wird möglicherweise angezeigt, wenn das Kerngerät ein umfangreiches Bereitstellungsdokument empfängt. Dabei handelt es sich um ein Bereitstellungsdokument, das größer ist als 7 KB (für Bereitstellungen, die auf Dinge abzielen) oder 31 KB (für Bereitstellungen, die auf Dinggruppen abzielen). Um ein umfangreiches Bereitstellungsdokument abzurufen, muss die AWS IoT Richtlinie eines Kerngeräts die entsprechende Genehmigung zulassen. greengrass:GetDeploymentConfiguration Dieser Fehler kann auftreten, wenn das Kerngerät nicht über diese Berechtigung verfügt. Wenn dieser Fehler auftritt, wird die Bereitstellung auf unbestimmte Zeit wiederholt und ihr Status lautet In Bearbeitung ()IN_PROGRESS.

Um dieses Problem zu beheben, fügen Sie die greengrass:GetDeploymentConfiguration Berechtigung zur Richtlinie des Hauptgeräts hinzu. AWS IoT Weitere Informationen finden Sie unter Aktualisieren Sie die AWS IoT Richtlinie eines Kerngeräts.

Warnung: com.aws.greengrass.deployment. DeploymentService: Die Hierarchie der Dinggruppen konnte nicht abgerufen werden

Diese Warnung wird möglicherweise angezeigt, wenn das Kerngerät eine Bereitstellung erhält und die AWS IoT Richtlinie des Kerngeräts die greengrass:ListThingGroupsForCoreDevice Genehmigung nicht zulässt. Wenn Sie eine Bereitstellung erstellen, verwendet das Kerngerät diese Berechtigung, um seine Dinggruppen zu identifizieren und Komponenten für alle Dinggruppen zu entfernen, aus denen Sie das Kerngerät entfernt haben. Wenn auf dem Kerngerät Greengrass Nucleus v2.5.0 ausgeführt wird, schlägt die Bereitstellung fehl. Wenn auf dem Kerngerät Greengrass Nucleus v2.5.1 oder höher ausgeführt wird, wird die Bereitstellung fortgesetzt, es werden jedoch keine Komponenten entfernt. Weitere Informationen zum Verhalten beim Entfernen von Dinggruppen finden Sie unter. AWS IoT Greengrass Komponenten auf Geräten bereitstellen

Um das Verhalten des Kerngeräts zu aktualisieren und Komponenten für Dinggruppen zu entfernen, aus denen Sie das Kerngerät entfernen, fügen Sie die greengrass:ListThingGroupsForCoreDevice Berechtigung zur AWS IoT Richtlinie für das Kerngerät hinzu. Weitere Informationen finden Sie unter Aktualisieren Sie die AWS IoT Richtlinie eines Kerngeräts.

Bei der Bereitstellung werden unerwartet Komponenten von einem Kerngerät entfernt

Bei einer Bereitstellung werden Komponenten vom Kerngerät entfernt, die Sie nicht entfernen wollten, und auf dem Gerät werden sie nicht mehr ausgeführt.

Auf Greengrass Nucleus v2.18.2 und früheren Versionen führt eine bestimmte Abfolge von Ereignissen dazu, dass ein Gerät seine Aufzeichnungen darüber verliert, welche Komponenten jede Dinggruppe eingesetzt hat. Nach diesem Verlust behandelt ein Deployment diese Komponenten als verwaist und entfernt sie. Greengrass Nucleus v2.18.3 behebt dieses Problem.

Die Sequenz beginnt, wenn die erste Bereitstellung auf einem Gerät fehlschlägt und ein Rollback erfolgt. Die vollständige Sequenz finden Sie unterWie ein Gerät diesen Datensatz verliert.

Wie überprüfe ich, ob ein Gerät diesen Datensatz verloren hat

Mit diesen Schritten wird die Konfiguration des Geräts überprüft, um die Ursache für das Entfernen zu ermitteln. Sie identifizieren nicht, welche Komponenten bei einer Bereitstellung entfernt wurden. Prüfen /greengrass/v2/config/effectiveConfig.yaml Sie das Kerngerät.

  1. Um zu überprüfen, ob der interne Zustand des Geräts beschädigt ist, überprüfen Sie die dependencies Liste unter main Service inservices. Ein beschädigter interner Zustand ist der Zustand, der zum Verlust des Datensatzes führt. Auf einem Gerät, das mindestens eine erfolgreiche Bereitstellung abgeschlossen hat, enthält diese Liste DeploymentServiceFleetStatusService,TelemetryAgent, undUpdateSystemPolicyService. Fehlen diese Namen auf einem Gerät, das zuvor eine erfolgreiche Bereitstellung abgeschlossen hat, ist der interne Zustand beschädigt. Auf einem Gerät, das noch nie eine erfolgreiche Bereitstellung abgeschlossen hat, ist eine Liste, die nur den Nucleus enthält, normal und weist nicht auf ein Problem hin.

  2. Um zu überprüfen, ob das Gerät den Datensatz bereits verloren hat, suchen Sie DeploymentService unter services und suchen Sie nach der GroupToRootComponents Konfiguration. Auf einem fehlerfreien Gerät, das mindestens eine Bereitstellung erhalten hat, listet diese Konfiguration jede Dinggruppe und die Komponenten auf, die diese Gruppe bereitstellt. Wenn diese Konfiguration fehlt oder leer ist, während Komponenten auf dem Gerät installiert sind und ausgeführt werden, hat das Gerät den Datensatz verloren.

Ob bei Bereitstellungen Komponenten entfernt werden, nachdem das Gerät diesen Datensatz verloren hat

Wenn ein Gerät diesen Datensatz verloren hat, hängt es davon ab, welche Bereitstellung als Nächstes ausgeführt wird, ob es Komponenten verliert.

Eine Bereitstellung entfernt Komponenten, wenn sie ausgeführt wird, während der Datensatz fehlt und die Komponentenliste der fehlenden Gruppe nicht enthält:

  • Eine lokale Bereitstellung wird ausgeführt. Eine lokale Bereitstellung enthält nur ihre eigenen Änderungen und stützt sich auf die lokalen Aufzeichnungen des Geräts, um alles andere beizubehalten. Bei einigen Flotten wird eine Komponente ausgeführt, die bei jedem Start des Geräts eine lokale Bereitstellung übermittelt. Aus diesem Grund erfolgt die Deinstallation häufig unmittelbar nach einem Neustart.

  • Auf einem Gerät, das zu mehr als einer Objektgruppe gehört, zielt eine Bereitstellung nur auf einige dieser Gruppen ab. Diese Bereitstellung stellt die Gruppen wieder her, auf die sie abzielt. Es entfernt die Komponenten der Gruppen, auf die es nicht abzielt.

Eine Bereitstellung entfernt keine Komponenten, wenn:

  • Auf dem Gerät wird keine Bereitstellung ausgeführt. Die installierten Komponenten werden weiterhin normal ausgeführt. Das Gerät bleibt möglicherweise auf unbestimmte Zeit in diesem Zustand, ohne dass dies Auswirkungen hat.

  • Die nächste Bereitstellung zielt auf die Dinggruppe ab, deren Komponentendatensatz auf dem Gerät fehlt. Diese Bereitstellung enthält die vollständige Komponentenliste der Gruppe und stellt den Datensatz wieder her, wodurch das Gerät automatisch wiederhergestellt wird.

Wichtig

Vermeiden Sie es, lokale Bereitstellungen auf dem Gerät auszuführen, bis Sie das Gerät wiederhergestellt haben. Wenn eine Komponente auf dem Gerät beim Start des Geräts eine lokale Bereitstellung übermittelt, stellen Sie das Gerät wieder her, bevor es erneut gestartet wird. Bei dieser Bereitstellung werden die Komponenten entfernt.

Wiederherstellung

Durch einen Neustart des Geräts wird der fehlende Datensatz nicht wiederhergestellt. Sie müssen Bereitstellungen erstellen, um das Gerät wiederherzustellen.

Um ein Gerät wiederherzustellen, das diesen Datensatz verloren hat, erstellen Sie eine Bereitstellung, die auf jede Objektgruppe abzielt, zu der das Kerngerät gehört. Eine Bereitstellung, die auf eine Dinggruppe abzielt, enthält die vollständige Liste der Komponenten für diese Gruppe. Dadurch wird der fehlende lokale Datensatz neu erstellt. Bei einer lokalen Bereitstellung kann das Gerät nicht wiederhergestellt werden, da es keine Komponenteninformationen anderer Gruppen enthält.

Wichtig

Auf einem Gerät, das zu mehreren Objektgruppen gehört, stellt jede Bereitstellung nur die Zielgruppe wieder her. Bei einer Bereitstellung für eine Gruppe werden möglicherweise Komponenten entfernt, die zu Gruppen gehören, denen Sie noch nicht erneut zugewiesen wurden. Erstellen Sie eine Bereitstellung für jede Objektgruppe, zu der das Gerät gehört.

Nachdem Sie die Wiederherstellungsbereitstellungen erstellt haben, stellen Sie sicher, dass jede Bereitstellung erfolgreich abgeschlossen wurde. Wenn eine Wiederherstellungsbereitstellung fehlschlägt und ein Rollback auf einer Nucleus-Version vor 2.18.3 durchgeführt wird, verliert das Gerät den Datensatz erneut. Sie müssen die Wiederherstellung wiederholen.

Nach erfolgreichem Abschluss einer Wiederherstellungsbereitstellung verliert das Gerät diesen Datensatz nicht erneut. Dies gilt auch dann, wenn auf dem Gerät immer noch Greengrass Nucleus v2.18.2 oder früher ausgeführt wird. Die Bereitstellung stellt den internen Zustand wieder her, der den Datensatz schützt, sodass spätere Bereitstellungsfehler und Rollbacks diesen Verlust nicht verursachen. Wenn Sie die AWS IoT Greengrass Core-Software erneut installieren, verliert das Gerät diesen Datensatz möglicherweise erneut.

Prävention

Aktualisieren Sie das Core-Gerät auf Greengrass Nucleus v2.18.3 oder höher, um dieses Problem zu vermeiden.

Anmerkung

Überwachen Sie Nucleus-Upgrade-Installationen auf Geräten, die diesen Datensatz möglicherweise verloren haben. Wenn eine Nucleus-Upgrade-Bereitstellung fehlschlägt und ein Rollback auf einem Gerät erfolgt, das nicht repariert wurde, kann das Gerät diesen Datensatz sofort verlieren. In diesem Fall sollten Sie unmittelbar nach dem fehlgeschlagenen Upgrade eine Installation erstellen, die auf alle Dinggruppen des Geräts abzielt, um den Verlust von Komponenten zu verhindern.

Wie ein Gerät diesen Datensatz verliert

Ein Gerät verliert diesen Datensatz, wenn alle der folgenden Bedingungen zutreffen:

  1. Das Gerät wurde noch nicht erfolgreich bereitgestellt.

  2. Die erste Bereitstellung auf dem Gerät schlägt nach der Aktivierung fehl und führt einen Rollback durch.

  3. Eine nachfolgende Bereitstellung wird auf dem Gerät ausgeführt, wodurch der interne Zustand beschädigt wird.

  4. Das Gerät wird zu einem späteren Zeitpunkt neu gestartet.

Ein Gerät, dessen erste Bereitstellung erfolgreich abgeschlossen wurde, verliert diesen Datensatz nicht.

Information: com.aws.greengrass.deployment. DeploymentDocumentDownloader: Rufen Sie Greengrass Cloud auf, um die vollständige Bereitstellungskonfiguration zu erhalten

Möglicherweise wird diese Informationsmeldung mehrmals ohne Fehler gedruckt, da das Kerngerät den Fehler auf Protokollebene DEBUG protokolliert. Dieses Problem kann auftreten, wenn das Kerngerät ein umfangreiches Bereitstellungsdokument empfängt. Wenn dieses Problem auftritt, wird die Bereitstellung auf unbestimmte Zeit wiederholt und ihr Status lautet In Bearbeitung ()IN_PROGRESS. Weitere Informationen zur Behebung dieses Problems finden Sie in diesem Eintrag zur Problembehandlung.

Verursacht durch: software.amazon.awssdk.services.greengrassv2data.model. GreengrassV2DataException: null (Dienst: GreengrassV2Data, Statuscode: 403, Anforderungs-ID: some_request_id, Erweiterte Anforderungs-ID: null) < >

Dieser Fehler wird möglicherweise angezeigt, wenn eine Dataplane-API keine Berechtigung hat. iot:Connect Wenn Sie nicht die richtige Richtlinie haben, erhalten Sie eine. GreengrassV2DataException: 403 Folgen Sie diesen Anweisungen, um eine Berechtigungsrichtlinie zu erstellen:Erstellen Sie eine AWS IoT Richtlinie.

Probleme mit den wichtigsten Gerätekomponenten

Beheben Sie Probleme mit Greengrass-Komponenten auf Kerngeräten.

Warnung: '<Befehl>' wird nicht als interner oder externer Befehl erkannt

Möglicherweise wird dieser Fehler in den Protokollen einer Greengrass-Komponente angezeigt, wenn die AWS IoT Greengrass Core-Software einen Befehl im Lifecycle-Skript der Komponente nicht ausführt. Der Status der Komponente wird BROKEN als Ergebnis dieses Fehlers angezeigt. Dieser Fehler kann auftreten, wenn der Systembenutzer, der die Komponente ausführt, z. B. ggc_user die ausführbare Datei des Befehls in den Ordnern im PATH nicht finden kann.

Vergewissern Sie sich auf Windows-Geräten, dass sich der Ordner mit der ausführbaren Datei in dem Ordner PATH für den Systembenutzer befindet, der die Komponente ausführt. Wenn sie in der fehltPATH, führen Sie einen der folgenden Schritte aus:

  • Fügen Sie den Ordner der ausführbaren Datei zur PATH Systemvariablen hinzu, die für alle Benutzer verfügbar ist. Starten Sie dann die Komponente neu.

    Wenn Sie Greengrass Nucleus 2.5.0 ausführen, müssen Sie nach dem Update der PATH Systemvariablen die AWS IoT Greengrass Core-Software neu starten, um die Komponenten mit der aktualisierten Version auszuführen. PATH Wenn die AWS IoT Greengrass Core-Software die aktualisierte Version PATH nach dem Neustart der Software nicht verwendet, starten Sie das Gerät neu und versuchen Sie es erneut. Weitere Informationen finden Sie unter Führen Sie die AWS IoT Greengrass Core-Software aus.

  • Fügen Sie den Ordner der ausführbaren Datei zur PATH Benutzervariablen für den Systembenutzer hinzu, der die Komponente ausführt.

Das Python-Skript protokolliert keine Nachrichten

Greengrass-Core-Geräte sammeln Protokolle, anhand derer Sie Probleme mit Komponenten identifizieren können. Wenn Ihre Python-Skripte stdout und stderr -Meldungen nicht in Ihren Komponentenprotokollen erscheinen, müssen Sie möglicherweise den Puffer leeren oder die Pufferung für diese Standardausgabestreams in Python deaktivieren. Führen Sie eine der folgenden Aktionen aus:

  • Führen Sie Python mit dem Argument -u aus, um die Pufferung bei und zu deaktivieren. stdout stderr

    Linux or Unix
    python3 -u hello_world.py
    Windows
    py -3 -u hello_world.py
  • Verwenden Sie Setenv im Rezept Ihrer Komponente, um die Umgebungsvariable https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUNBUFFERED PYTHONUNBUFFERED auf eine nicht leere Zeichenfolge zu setzen. Diese Umgebungsvariable deaktiviert die Pufferung bei und. stdout stderr

  • Leeren Sie den Puffer für die stdout oder Streams. stderr Führen Sie eine der folgenden Aktionen aus:

    • Leert eine Nachricht, wenn Sie drucken.

      import sys print('Hello, error!', file=sys.stderr, flush=True)
    • Löschen Sie eine Nachricht nach dem Drucken. Sie können mehrere Nachrichten senden, bevor Sie den Stream leeren.

      import sys print('Hello, error!', file=sys.stderr) sys.stderr.flush()

Weitere Hinweise dazu, wie Sie überprüfen können, ob Ihr Python-Skript Protokollmeldungen ausgibt, finden Sie unterAWS IoT Greengrass Protokolle überwachen.

Die Komponentenkonfiguration wird nicht aktualisiert, wenn die Standardkonfiguration geändert wird

Wenn Sie das Rezept DefaultConfiguration einer Komponente ändern, ersetzt die neue Standardkonfiguration während einer Bereitstellung nicht die bestehende Konfiguration der Komponente. Um die neue Standardkonfiguration anzuwenden, müssen Sie die Konfiguration der Komponente auf die Standardeinstellungen zurücksetzen. Wenn Sie die Komponente bereitstellen, geben Sie eine einzelne leere Zeichenfolge als Reset-Update an.

Console
Pfade zurücksetzen
[""]
AWS CLI

Mit dem folgenden Befehl wird eine Bereitstellung auf einem Kerngerät erstellt.

aws greengrassv2 create-deployment --cli-input-json file://reset-configuration-deployment.json

Die reset-configuration-deployment.json Datei enthält das folgende JSON-Dokument.

{ "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "deploymentName": "Deployment for MyGreengrassCore", "components": { "com.example.HelloWorld": { "componentVersion": "1.0.0", "configurationUpdate": {, "reset": [""] } } } }
Greengrass CLI

Der folgende Greengrass CLI Greengrass-CLI-Befehl erstellt eine lokale Bereitstellung auf einem Kerngerät.

sudo greengrass-cli deployment create \ --recipeDir recipes \ --artifactDir artifacts \ --merge "com.example.HelloWorld=1.0.0" \ --update-config reset-configuration-deployment.json

Die reset-configuration-deployment.json Datei enthält das folgende JSON-Dokument.

{ "com.example.HelloWorld": { "RESET": [""] } }

awsiot.greengrasscoreipc.model. UnauthorizedError

Möglicherweise wird dieser Fehler in den Protokollen einer Greengrass-Komponente angezeigt, wenn die Komponente nicht berechtigt ist, eine IPC-Operation an einer Ressource auszuführen. Um einer Komponente die Erlaubnis zum Aufrufen einer IPC-Operation zu erteilen, definieren Sie eine IPC-Autorisierungsrichtlinie in der Konfiguration der Komponente. Weitere Informationen finden Sie unter Autorisieren Sie Komponenten zur Ausführung von IPC-Vorgängen.

Tipp

Wenn Sie das Rezept DefaultConfiguration einer Komponente ändern, müssen Sie die Konfiguration der Komponente auf die neue Standardkonfiguration zurücksetzen. Wenn Sie die Komponente bereitstellen, geben Sie eine einzelne leere Zeichenfolge als Reset-Update an. Weitere Informationen finden Sie unter Die Komponentenkonfiguration wird nicht aktualisiert, wenn die Standardkonfiguration geändert wird.

com.aws.greengrass.authorization.exceptions. AuthorizationException: Doppelte Richtlinien-ID "id" für Principal "ComponentList“ < > < >

Dieser Fehler wird möglicherweise angezeigt, wenn mehrere IPC-Autorisierungsrichtlinien, auch für alle Komponenten auf dem Kerngerät, dieselbe Richtlinien-ID verwenden.

Überprüfen Sie die IPC-Autorisierungsrichtlinien Ihrer Komponenten, korrigieren Sie alle Duplikate und versuchen Sie es erneut. Um eindeutige Richtlinien-IDs zu erstellen, empfehlen wir, den Komponentennamen, den IPC-Dienstnamen und einen Zähler zu kombinieren. Weitere Informationen finden Sie unter Autorisieren Sie Komponenten zur Ausführung von IPC-Vorgängen.

Tipp

Wenn Sie das Rezept DefaultConfiguration einer Komponente ändern, müssen Sie die Konfiguration der Komponente auf die neue Standardkonfiguration zurücksetzen. Wenn Sie die Komponente bereitstellen, geben Sie eine einzelne leere Zeichenfolge als Reset-Update an. Weitere Informationen finden Sie unter Die Komponentenkonfiguration wird nicht aktualisiert, wenn die Standardkonfiguration geändert wird.

com.aws.greengrass.tes. CredentialRequestHandler: Fehler beim Abrufen AwsCredentials von TES (HTTP 400)

Dieser Fehler wird möglicherweise angezeigt, wenn ein Kerngerät keine AWS Anmeldeinformationen vom Token-Austauschdienst abrufen kann. Der HTTP 400-Statuscode gibt an, dass dieser Fehler aufgetreten ist, weil die Token-Exchange-IAM-Rolle des Kerngeräts nicht existiert oder keine Vertrauensstellung besteht, die es dem AWS IoT Anmeldeinformationsanbieter ermöglicht, sie anzunehmen.

Gehen Sie wie folgt vor:

  1. Identifizieren Sie die Token-Exchange-Rolle, die das Kerngerät verwendet. Die Fehlermeldung enthält den AWS IoT Rollenalias des Kerngeräts, der auf die Token-Exchange-Rolle verweist. Führen Sie den folgenden Befehl auf Ihrem Entwicklungscomputer aus und MyGreengrassCoreTokenExchangeRoleAlias ersetzen Sie ihn durch den Namen des AWS IoT Rollenalias aus der Fehlermeldung.

    aws iot describe-role-alias --role-alias MyGreengrassCoreTokenExchangeRoleAlias

    Die Antwort enthält den Amazon-Ressourcennamen (ARN) der Token-Exchange-IAM-Rolle.

    { "roleAliasDescription": { "roleAlias": "MyGreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/MyGreengrassCoreTokenExchangeRoleAlias", "roleArn": "arn:aws:iam::123456789012:role/MyGreengrassV2TokenExchangeRole", "owner": "123456789012", "credentialDurationSeconds": 3600, "creationDate": "2021-02-05T16:46:18.042000-08:00", "lastModifiedDate": "2021-02-05T16:46:18.042000-08:00" } }
  2. Prüfen Sie, ob die Rolle existiert. Führen Sie den folgenden Befehl aus und MyGreengrassV2TokenExchangeRole ersetzen Sie ihn durch den Namen der Token-Exchange-Rolle.

    aws iam get-role --role-name MyGreengrassV2TokenExchangeRole

    Wenn der Befehl einen NoSuchEntity Fehler zurückgibt, ist die Rolle nicht vorhanden und Sie müssen sie erstellen. Weitere Informationen zum Erstellen und Konfigurieren dieser Rolle finden Sie unterAutorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS.

  3. Stellen Sie sicher, dass die Rolle über eine Vertrauensbeziehung verfügt, die es dem AWS IoT Anmeldeinformationsanbieter ermöglicht, sie anzunehmen. Die Antwort aus dem vorherigen Schritt enthält einenAssumeRolePolicyDocument, der die Vertrauensbeziehungen der Rolle definiert. Die Rolle muss eine Vertrauensbeziehung definieren, die es credentials.iot.amazonaws.com ermöglicht, sie anzunehmen. Dieses Dokument sollte dem folgenden Beispiel ähneln.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    Wenn es aufgrund der Vertrauensbeziehungen der Rolle nicht möglich ist, sie credentials.iot.amazonaws.com anzunehmen, müssen Sie diese Vertrauensbeziehung zur Rolle hinzufügen. Weitere Informationen finden Sie unter Ändern einer Rolle im AWS Identity and Access Management IAM-Benutzerhandbuch.

com.aws.greengrass.tes. CredentialRequestHandler: Fehler beim Abrufen AwsCredentials von TES (HTTP 403)

Dieser Fehler wird möglicherweise angezeigt, wenn ein Kerngerät keine AWS Anmeldeinformationen vom Token-Austauschdienst abrufen kann. Der HTTP-Statuscode 403 weist darauf hin, dass dieser Fehler aufgetreten ist, weil die AWS IoT Richtlinien des Kerngeräts die iot:AssumeRoleWithCertificate Berechtigung für den AWS IoT Rollenalias des Kerngeräts nicht gewähren.

Überprüfen Sie die AWS IoT Richtlinien des Kerngeräts und fügen Sie die iot:AssumeRoleWithCertificate Berechtigung für den AWS IoT Rollenalias des Kerngeräts hinzu. Die Fehlermeldung enthält den aktuellen AWS IoT Rollenalias des Kerngeräts. Weitere Informationen zu dieser Berechtigung und zur Aktualisierung der AWS IoT Richtlinien des Hauptgeräts finden Sie unter Minimale AWS IoT Richtlinie für AWS IoT Greengrass V2 Kerngeräte undAktualisieren Sie die AWS IoT Richtlinie eines Kerngeräts.

com.aws.greengrass.tes. CredentialsProviderError: Anmeldeinformationen von keinem Anbieter konnten geladen werden

Dieser Fehler wird möglicherweise angezeigt, wenn die Komponente versucht, AWS Anmeldeinformationen anzufordern, und keine Verbindung zum Token-Austauschdienst herstellen kann.

Gehen Sie wie folgt vor:

  • Vergewissern Sie sich, dass die Komponente eine Abhängigkeit von der Token-Exchange-Dienstkomponente deklariert. aws.greengrass.TokenExchangeService Ist dies nicht der Fall, fügen Sie die Abhängigkeit hinzu und stellen Sie die Komponente erneut bereit.

  • Wenn die Komponente in Docker ausgeführt wird, stellen Sie sicher, dass Sie die richtigen Netzwerkeinstellungen und Umgebungsvariablen entsprechend anwenden. Verwenden Sie AWS Anmeldeinformationen in Docker-Container-Komponenten (Linux)

  • Wenn die Komponente in NodeJS geschrieben ist, setzen Sie dns.set auf. DefaultResultOrder ipv4first

  • Suchen Sie /etc/hosts nach einem Eintrag, der mit beginnt und enthält. ::1 localhost Entfernen Sie den Eintrag, um festzustellen, ob er dazu geführt hat, dass die Komponente an der falschen Adresse eine Verbindung zum Token-Austauschdienst hergestellt hat.

Beim Versuch, ECS-Metadaten abzurufen, ist ein Fehler aufgetreten: Es konnte keine Verbindung zur Endpunkt-URL hergestellt werden: "<token ExchangeServiceEndpoint>“

Dieser Fehler wird möglicherweise angezeigt, wenn die Komponente den Token-Austauschdienst nicht ausführt und eine Komponente versucht, AWS Anmeldeinformationen anzufordern.

Gehen Sie wie folgt vor:

  • Vergewissern Sie sich, dass die Komponente eine Abhängigkeit von der Token-Exchange-Dienstkomponente deklariert,aws.greengrass.TokenExchangeService. Ist dies nicht der Fall, fügen Sie die Abhängigkeit hinzu und stellen Sie die Komponente erneut bereit.

  • Prüfen Sie, ob die Komponente in ihrem install Lebenszyklus AWS Anmeldeinformationen verwendet. AWS IoT Greengrass garantiert nicht die Verfügbarkeit des Token-Austauschdienstes während des install Lebenszyklus. Aktualisieren Sie die Komponente, um den Code, der AWS Anmeldeinformationen verwendet, in den startup run OR-Lebenszyklus zu verschieben, und stellen Sie die Komponente dann erneut bereit.

CopyFrom: < ConfigurationPath > ist bereits ein Container, kein Blatt

Dieser Fehler wird möglicherweise angezeigt, wenn Sie einen Konfigurationswert von einem Containertyp (eine Liste oder ein Objekt) in einen anderen Typ (eine Zeichenfolge, eine Zahl oder einen booleschen Wert) ändern. Gehen Sie wie folgt vor:

  1. Prüfen Sie im Rezept der Komponente, ob die Standardkonfiguration diesen Konfigurationswert auf eine Liste oder ein Objekt festlegt. Wenn ja, entfernen oder ändern Sie diesen Konfigurationswert.

  2. Erstellen Sie eine Bereitstellung, um diesen Konfigurationswert auf seinen Standardwert zurückzusetzen. Weitere Informationen erhalten Sie unter Erstellen von Bereitstellungen und Komponentenkonfigurationen aktualisieren.

Anschließend können Sie diesen Konfigurationswert auf eine Zeichenfolge, eine Zahl oder einen booleschen Wert festlegen.

com.aws.greengrass.componentmanager.plugins.docker.exceptions. DockerLoginException: Fehler beim Einloggen in die Registrierung mit Anmeldeinformationen — 'Der Stub hat schlechte Daten erhalten. '

Möglicherweise wird dieser Fehler in den Greengrass-Nukleus-Protokollen angezeigt, wenn die Docker-Anwendungsmanager-Komponente versucht, ein Docker-Image aus einem privaten Repository in Amazon Elastic Container Registry (Amazon ECR) herunterzuladen. Dieser Fehler tritt auf, wenn Sie den wincred Docker Credential Helper () verwenden. docker-credential-wincred Daher kann Amazon ECR die Anmeldeinformationen nicht speichern.

Ergreifen Sie eine der folgenden Aktionen:

  • Wenn Sie den wincred Docker Credential Helper nicht verwenden, entfernen Sie das docker-credential-wincred Programm vom Kerngerät.

  • Wenn Sie den wincred Docker Credential Helper verwenden, gehen Sie wie folgt vor:

    1. Benennen Sie das docker-credential-wincred Programm auf dem Kerngerät um. wincredErsetzen Sie den Windows Docker-Anmeldeinformationshelfer durch einen neuen Namen. Sie können ihn beispielsweise in umbenennen. docker-credential-wincredreal

    2. Aktualisieren Sie die credsStore Option in der Docker-Konfigurationsdatei (.docker/config.json), um den neuen Namen für den Windows Docker-Anmeldeinformationshelfer zu verwenden. Wenn Sie das Programm beispielsweise in umbenannt habendocker-credential-wincredreal, aktualisieren Sie die credsStore Option auf. wincredreal

      { "credsStore": "wincredreal" }

java.io.IOException: Das Programm „cmd“ kann nicht ausgeführt werden...: [LogonUser] Das Passwort für dieses Konto ist abgelaufen.

Dieser Fehler wird möglicherweise auf einem Windows-Core-Gerät angezeigt, wenn der Systembenutzer, der die Prozesse der Komponente ausführt, z. B. ggc_user ein abgelaufenes Passwort hat. Daher kann die AWS IoT Greengrass Core-Software keine Komponentenprozesse als dieser Systembenutzer ausführen.

Um das Passwort eines Greengrass-Systembenutzers zu aktualisieren
  1. Führen Sie den folgenden Befehl als Administrator aus, um das Passwort des Benutzers festzulegen. ggc_userErsetzen Sie es durch den Systembenutzer und password ersetzen Sie es durch das festzulegende Passwort.

    net user ggc_user password
  2. Verwenden Sie das PsExec Tool, um das neue Passwort des Benutzers in der Credential Manager-Instanz für das LocalSystem Konto zu speichern. passwordErsetzen Sie es durch das von Ihnen festgelegte Benutzerkennwort.

    psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
Tipp

Abhängig von Ihrer Windows-Konfiguration ist das Benutzerkennwort möglicherweise so eingerichtet, dass es zu einem späteren Zeitpunkt abläuft. Um sicherzustellen, dass Ihre Greengrass-Anwendungen weiterhin funktionieren, verfolgen Sie, wann das Passwort abläuft, und aktualisieren Sie es, bevor es abläuft. Sie können das Passwort des Benutzers auch so einstellen, dass es niemals abläuft.

  • Führen Sie den folgenden Befehl aus, um zu überprüfen, wann ein Benutzer und sein Passwort ablaufen.

    net user ggc_user | findstr /C:expires
  • Führen Sie den folgenden Befehl aus, um das Passwort eines Benutzers so einzustellen, dass es niemals abläuft.

    wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
  • Wenn Sie Windows 10 oder höher verwenden und der wmic Befehl veraltet ist, führen Sie den folgenden PowerShell Befehl aus.

    Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}

aws.greengrass. StreamManager: Instant überschreitet den Mindest- oder Höchstwert für den Moment

Wenn Sie Stream Manager v2.0.7 auf eine Version zwischen v2.0.8 und v2.0.11 aktualisieren, wird möglicherweise der folgende Fehler in den Protokollen der Stream Manager-Komponente angezeigt, wenn die Komponente nicht gestartet werden kann.

2021-07-16T00:54:58.568Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: com.fasterxml.jackson.databind.JsonMappingException: Instant exceeds minimum or maximum instant (through reference chain: com.amazonaws.iot.greengrass.streammanager.export.PersistedSuccessExportStatesV1["lastExportTime"]). {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING} 2021-07-16T00:54:58.579Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: java.time.DateTimeException: Instant exceeds minimum or maximum instant. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING}

Wenn Sie Stream Manager v2.0.7 bereitgestellt haben und ein Upgrade auf eine neuere Version durchführen möchten, müssen Sie direkt auf Stream Manager v2.0.12 aktualisieren. Weitere Informationen zur Stream Manager-Komponente finden Sie unter. Stream-Manager

Probleme mit der Lambda-Funktionskomponente des Kerngeräts

Beheben Sie Probleme mit Komponenten der Lambda-Funktion auf Kerngeräten.

Die folgenden Cgroup-Subsysteme sind nicht gemountet: Geräte, Speicher

Dieser Fehler kann in den folgenden Fällen auftreten, wenn Sie eine containerisierte Lambda-Funktion ausführen:

  • Auf dem Kerngerät ist cgroup v1 nicht für den Speicher oder die Geräte-Cgroups aktiviert.

  • Auf dem Kerngerät ist Cgroups v2 aktiviert. Greengrass Lambda-Funktionen erfordern cgroups v1, und die Cgroups v1 und v2 schließen sich gegenseitig aus.

Um Cgroups v1 zu aktivieren, starten Sie das Gerät mit den folgenden Linux-Kernel-Parametern.

cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
Tipp

Bearbeiten Sie auf einem Raspberry Pi die /boot/cmdline.txt Datei, um die Kernel-Parameter des Geräts festzulegen.

ipc_client.py:64, HTTP-Fehler 400:Schlechte Anfrage, b'Für den Quelltext label-or-lambda-arn und den Betreff label-or-lambda-arn existiert kein Abonnement < > < >

Dieser Fehler wird möglicherweise angezeigt, wenn Sie eine V1-Lambda-Funktion, die das Core SDK verwendet, auf einem V2-Core-Gerät ausführen, ohne in der älteren Abonnement-Router-Komponente ein Abonnement anzugeben. AWS IoT Greengrass Legacy-Abonnement-Router Um dieses Problem zu beheben, stellen Sie den älteren Abonnement-Router bereit und konfigurieren Sie ihn, um die erforderlichen Abonnements anzugeben. Weitere Informationen finden Sie unter V1-Lambda-Funktionen importieren.

Die Komponentenversion wurde eingestellt

Möglicherweise wird auf Ihrem Personal Health Dashboard (PHD) eine Benachrichtigung angezeigt, wenn eine Komponentenversion auf Ihrem Hauptgerät eingestellt wird. Die Komponentenversion sendet diese Benachrichtigung innerhalb von 60 Minuten nach der Einstellung an Ihren Doktoranden.

Gehen Sie wie folgt vor, um zu sehen, welche Bereitstellungen Sie überarbeiten müssen, indem Sie Folgendes verwenden: AWS Command Line Interface

  1. Führen Sie den folgenden Befehl aus, um eine Liste Ihrer wichtigsten Geräte abzurufen.

    aws greengrassv2 list-core-devices
  2. Führen Sie den folgenden Befehl aus, um den Status der Komponenten auf jedem Kerngerät aus Schritt 1 abzurufen. coreDeviceNameErsetzen Sie es durch den Namen jedes Kerngeräts, das abgefragt werden soll.

    aws greengrassv2 list-installed-components --core-device-thing-name coreDeviceName
  3. Stellen Sie die Kerngeräte zusammen, auf denen die eingestellte Komponentenversion aus den vorherigen Schritten installiert wurde.

  4. Führen Sie den folgenden Befehl aus, um den Status aller Bereitstellungsaufträge für jedes Kerngerät aus Schritt 3 abzurufen. coreDeviceNameErsetzen Sie es durch den Namen des Kerngeräts, das abgefragt werden soll.

    aws greengrassv2 list-effective-deployments --core-device-thing-name coreDeviceName

    Die Antwort enthält die Liste der Bereitstellungsaufträge für das Kerngerät. Sie können die Bereitstellung überarbeiten, um eine andere Komponentenversion auszuwählen. Weitere Informationen zum Überarbeiten einer Bereitstellung finden Sie unter Überarbeiten von Bereitstellungen.

Probleme mit der Greengrass-Befehlszeilenschnittstelle

Beheben Sie Probleme mit der Greengrass-CLI.

java.lang. RuntimeException: IPC-Client konnte nicht erstellt werden

Dieser Fehler wird möglicherweise angezeigt, wenn Sie einen Greengrass-CLI-Befehl ausführen und einen anderen Stammordner angeben als den, in dem die AWS IoT Greengrass Core-Software installiert ist.

Gehen Sie wie folgt vor, um den Stammpfad festzulegen, und /greengrass/v2 ersetzen Sie ihn durch den Pfad zu Ihrer AWS IoT Greengrass Core-Softwareinstallation:

  • Legen Sie die Umgebungsvariable GGC_ROOT_PATH auf /greengrass/v2 fest.

  • Fügen Sie das --ggcRootPath /greengrass/v2 Argument Ihrem Befehl hinzu, wie im folgenden Beispiel gezeigt.

    greengrass-cli --ggcRootPath /greengrass/v2 <command> <subcommand> [arguments]

AWS Command Line Interface Probleme

Beheben Sie AWS CLI Probleme für AWS IoT Greengrass V2.

Fehler: Ungültige Auswahl: 'greengrassv2'

Dieser Fehler wird möglicherweise angezeigt, wenn Sie einen AWS IoT Greengrass V2 Befehl mit dem AWS CLI (zum Beispiel) ausführen. aws greengrassv2 list-core-devices

Dieser Fehler weist darauf hin, dass Sie eine Version von haben AWS CLI , die nicht unterstützt wird AWS IoT Greengrass V2. Um es AWS IoT Greengrass V2 mit dem verwenden zu können AWS CLI, benötigen Sie eine der folgenden Versionen oder höher:

  • Mindestversion AWS CLI V1: v1.18.197

  • Mindestversion AWS CLI V2: v2.1.11

Tipp

Sie können den folgenden Befehl ausführen, um die Version von zu überprüfen AWS CLI , die Sie haben.

aws --version

Um dieses Problem zu beheben, aktualisieren Sie das AWS CLI auf eine neuere Version, die dies unterstützt AWS IoT Greengrass V2. Weitere Informationen finden Sie AWS CLI im AWS Command Line Interface Benutzerhandbuch unter Installieren, Aktualisieren und Deinstallieren von.