Problembehebung 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.

Problembehebung 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.

Protokolle der AWS IoT Greengrass Kernsoftware und der Komponenten anzeigen

Die AWS IoT Greengrass Core-Software schreibt Protokolle in das lokale Dateisystem, mit denen Sie Echtzeitinformationen über das Kerngerät abrufen können. Sie können Core-Geräte auch so konfigurieren, dass sie Protokolle in CloudWatch Logs schreiben, sodass Sie Probleme bei Kerngeräten per Fernzugriff beheben können. Mithilfe dieser Protokolle können Sie Probleme mit Komponenten, Bereitstellungen und Kerngeräten identifizieren. Weitere Informationen finden Sie unter Überwachen von AWS IoT Greengrass Protokollen.

AWS IoT Greengrass Kernprobleme mit der Software

Beheben Sie Probleme mit der AWS IoT Greengrass Kernsoftware.

Themen

Das Kerngerät konnte nicht eingerichtet werden

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

Die AWS IoT Greengrass Core-Software konnte nicht als Systemdienst gestartet werden

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 Umgebungsvariablen PATH (Linux) oder der Systemvariablen PATH (Windows) nicht verfügbar ist.

Nucleus kann nicht als Systemdienst eingerichtet werden

Dieser Fehler tritt möglicherweise auf, wenn das Installationsprogramm der AWS IoT Greengrass Core-Software nicht AWS IoT Greengrass als Systemdienst eingerichtet werden kann. Auf Linux-Geräten tritt dieser Fehler normalerweise auf, wenn das Core-Gerät nicht über das Systemd-Init-System verfügt. Das Installationsprogramm kann die AWS IoT Greengrass Core-Software erfolgreich einrichten, auch wenn der Systemdienst nicht eingerichtet werden kann.

Führen Sie eine der folgenden Aktionen aus:

  • Konfigurieren Sie die AWS IoT Greengrass Core-Software und führen Sie sie als Systemdienst aus. Sie müssen die Software als Systemdienst konfigurieren, um alle Funktionen von nutzen zu können AWS IoT Greengrass. Sie können systemd installieren oder ein anderes Init-System verwenden. Weitere Informationen finden Sie unter Den Greengrass Nucleus als Systemdienst konfigurieren.

  • Führen Sie die AWS IoT Greengrass Core-Software ohne Systemdienst aus. Sie können die Software mit einem Loader-Skript ausführen, das der Installer im Greengrass-Stammordner einrichtet. Weitere Informationen finden Sie unter Ausführen der AWS IoT Greengrass Core-Software ohne Systemservice.

Es konnte keine Verbindung hergestellt werden AWS IoT Core

Dieser Fehler tritt möglicherweise auf, wenn die AWS IoT Greengrass Core-Software beispielsweise keine Verbindung AWS IoT Core zum Abrufen von Bereitstellungsaufträgen herstellen kann. Gehen Sie wie folgt vor:

  • Vergewissern Sie sich, dass Ihr Core-Gerät eine Verbindung zum Internet herstellen kann und AWS IoT Core. Weitere Informationen zum AWS IoT Core Endpunkt, mit dem Ihr Gerät eine Verbindung herstellt, finden Sie unterKonfigurieren Sie die AWS IoT Greengrass Core-Software.

  • Vergewissern Sie sich, dass das Gerät AWS IoT Ihres Kerngeräts ein Zertifikat verwendetiot:Connect, das die, iot:Publishiot:Receive, und iot:Subscribe -Berechtigungen zulässt.

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

Fehler: Nicht genügend Arbeitsspeicher

Dieser Fehler tritt normalerweise auf, wenn Ihr Gerät nicht über ausreichend 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 bereits eine 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.

User root is not allowed to execute

Dieser Fehler wird möglicherweise angezeigt, wenn der Benutzer, der die AWS IoT Greengrass Core-Software ausführt, (normalerweiseroot) nicht berechtigt ist, die Software sudo mit einem Benutzer und einer Gruppe zu verwenden. 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 sie unter anderen Gruppen auszuführen. Die Zugriffsrechte für den Benutzer /etc/sudoers sollten wie im folgenden Beispiel aussehen.

root ALL=(ALL:ALL) ALL

com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with

Dieser Fehler tritt möglicherweise auf, wenn das Kerngerät versucht, eine Komponente auszuführen, und der Greengrass-Nucleus keinen Standardsystembenutzer für die Ausführung von Komponenten angibt.

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

Failed to map segment from shared object: operation not permitted

Dieser Fehler tritt möglicherweise auf, wenn die AWS IoT Greengrass Core-Software nicht gestartet werden kann, weil der /tmp Ordner mit noexec entsprechenden Berechtigungen bereitgestellt wurde. 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 AWS IoT Greengrass Core-Software angeben. Ersetzen Sie /path/to/use durch den Pfad zu einem Ordner, den die CRT-Bibliothek verwenden kann. AWS

    { "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: Failed to get trust manager

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

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

com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime

Diese Warnmeldung wird möglicherweise angezeigt, wenn das Core-Gerä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 unterZulassen von Gerätedatenverkehr über einen Proxy oder eine Firewall.

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

software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid

Dieser Fehler tritt möglicherweise auf, wenn Sie die AWS IoT Greengrass Core-Software mit automatischer Bereitstellung 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 Sicherheitsanmeldedaten 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 zu deaktivieren.

      Linux or Unix
      unset AWS_SESSION_TOKEN
      Windows Command Prompt (CMD)
      set AWS_SESSION_TOKEN=
      PowerShell
      Remove-Item Env:\AWS_SESSION_TOKEN
    2. Überprü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. Weitere Informationen finden Sie unter Installieren Sie die AWS IoT Greengrass Core-Software mit manueller Ressourcenbereitstellung oder Installieren Sie die AWS IoT Greengrass Core-Software mit AWS IoT Flottenbereitstellung.

software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy

Dieser Fehler tritt möglicherweise auf, wenn Sie die AWS IoT Greengrass Core-Software mit automatischer Bereitstellung installieren und das Installationsprogramm AWS Anmeldeinformationen verwendet, für die nicht die erforderlichen Berechtigungen erforderlich sind. 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.

Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request

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 gibt an, dass dieser Fehler aufgetreten ist, weil die AWS IoT Richtlinie des Kerngeräts keine Anrufberechtigung 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 zu synchronisieren AWS IoT Core, muss die AWS IoT Richtlinie des Kerngeräts die folgenden Berechtigungen gewähren:

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

Überprüfen Sie die AWS IoT Richtlinien des Core-Geräts und fügen Sie alle erforderlichen Berechtigungen hinzu, die noch fehlen. Weitere Informationen finden Sie hier:

Operation aws.greengrass#<operation> is not supported by Greengrass

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 bei der Bereitstellung Ihrer Komponente installiert hat.

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

Dieser Fehler wird möglicherweise 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 nicht ü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: Private key or certificate with label <label> does not exist

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:

  • Überprüfen Sie anhand des Steckplatzes, der Benutzer-PIN und der Objektbezeichnung, für die Sie die AWS IoT Greengrass Core-Software konfiguriert haben, ob der private Schlüssel und das Zertifikat im HSM gespeichert sind.

  • Vergewissern Sie sich, 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.

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

software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>

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 Erlaubnis zum Abrufen des Geheimnisses erteilt, schlägt die Bereitstellung fehl und die Greengrass-Protokolle enthalten diesen Fehler.

Um ein Core-Gerät zum Herunterladen eines Secrets zu autorisieren
  1. Fügen Sie die secretsmanager:GetSecretValue Berechtigung zur Token-Austauschrolle des Kerngeräts hinzu. Das folgende Beispiel für eine Richtlinienanweisung erteilt 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, den geheimen Schlüssel herunterzuladen, wenn es die überarbeitete Bereitstellung erhält. Weitere Informationen finden Sie unter Überarbeiten von Bereitstellungen.

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

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

software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed

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 Erlaubnis zur Entschlüsselung des Geheimnisses erteilt, 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-Austauschrolle des Kerngeräts hinzu. Weitere Informationen finden Sie hier:

java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi

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 die Hardware-Sicherheitsintegration nicht unterstützt. Um die Hardware-Sicherheitsintegration verwenden 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 AWS IoT Greengrass Core als Systemdienst ausführen.

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.

Greengrass core device stuck on nucleus v2.12.3

Wenn Ihr Greengrass Core-Gerät Ihre Bereitstellung von Nucleus Version 2.12.3 nicht überarbeitet, müssen Sie die Greengrass.jar Datei möglicherweise herunterladen und durch Greengrass Nucleus Version 2.12.2 ersetzen. 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 Core-Gerä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 Nucleus Version 2.12.3 Greengrass JAR-Datei mit der Nucleus Version 2.12.2 Greengrass JAR-Datei 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"

AWS IoT Greengrass Cloud-Probleme

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.

An error occurred (AccessDeniedException) when calling the CreateComponentVersion operation: 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 AWS IoT Greengrass Konsole oder während des CreateComponentVersionVorgangs erstellen.

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.

Invalid Input: Encountered following errors in Artifacts: {<s3ArtifactUri> = Specified artifact resource cannot be accessed}

Dieser Fehler tritt möglicherweise auf, wenn Sie eine Komponentenversion über die AWS IoT Greengrass Konsole oder während des Vorgangs erstellen. CreateComponentVersion 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 an derselben AWS-Region Stelle befindet, an der Sie die Komponente erstellt haben. AWS IoT Greengrass unterstützt keine regionsübergreifenden Anfragen nach Komponentenartefakten.

  • Überprüfen Sie, ob es sich bei der Artefakt-URI um eine gültige S3-Objekt-URL handelt, und überprüfen Sie, ob das Artefakt unter dieser S3-Objekt-URL vorhanden ist.

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

INACTIVE deployment status

Möglicherweise erhalten Sie einen INACTIVE Bereitstellungsstatus, wenn Sie die ListDeploymentsAPI 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 suchen, die von definiert sind, AWS IoT Greengrass V2 und den erforderlichen Berechtigungen folgenListDeployments. Ohne die erforderlichen abhängigen AWS IoT Berechtigungen wird Ihnen weiterhin der Bereitstellungsstatus angezeigt, aber möglicherweise wird der Bereitstellungsstatus von INACTIVE falsch angezeigt.

Hauptprobleme bei der Gerätebereitstellung

Beheben Sie Bereitstellungsprobleme auf Greengrass-Kerngeräten. Jeder Eintrag entspricht einer Protokollnachricht, die Sie möglicherweise auf Ihrem Kerngerät sehen.

Themen

Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact

Dieser Fehler wird möglicherweise angezeigt, wenn die AWS IoT Greengrass Core-Software ein Komponentenartefakt nicht herunterlädt, wenn das Kerngerä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, anhand dessen Sie das spezifische Problem identifizieren können. 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 (Service: S3, Status Code: 403, Request ID: null, ...)

Der PackageDownloadException Fehler kann diesen Stack-Trace in den folgenden Fällen beinhalten:

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

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

software.amazon.awssdk.services.s3.model.S3Exception: Access Denied (Service: S3, Status Code: 403, Request ID: <requestID>

Der PackageDownloadException Fehler kann diesen Stack-Trace beinhalten, wenn das Kerngerät nicht über die Berechtigung zum Aufrufen s3:GetBucketLocation verfügt. Die Fehlermeldung enthält auch die folgende Meldung.

reason: Failed to determine S3 bucket location

Vergewissern Sie sich, dass die Token-Austauschrolle des Kerngeräts den S3-Bucket zulässts3:GetBucketLocation, in dem das Artefakt verfügbar ist.

Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.

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 bei der Erstellung der AWS IoT Greengrass Komponente berechnet wurde.

Gehen Sie wie folgt vor:

  • Prüfen Sie, ob sich die Artefaktdatei in dem S3-Bucket, in dem Sie sie hosten, geändert hat. Wenn sich die Datei seit der Erstellung der Komponente geändert hat, stellen Sie die vorherige Version wieder her, die das Kerngerät erwartet. Wenn Sie die Datei nicht auf ihre vorherige Version zurücksetzen 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.

Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>

Dieser Fehler wird möglicherweise angezeigt, wenn ein Kerngerät keine Komponentenversion finden kann, die den Anforderungen der Bereitstellungen für dieses Kerngerät entspricht. 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 seinLOCAL_DEPLOYMENT, was 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 kann 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. Es ist unmöglich, eine Komponente zu haben, die beide Anforderungen erfüllt, sodass die Bereitstellung fehlschlägt.

  • 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 zur AWS IoT Richtlinie des Kerngeräts hinzu. Weitere Informationen finden Sie unter Minimale AWS IoT Richtlinie für -AWS IoT Greengrass V2Core-Geräte.

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

software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility

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 mit der Plattform des Kerngeräts übereinstimmt. Weitere Informationen finden Sie unter AWS IoT Greengrass Referenz zum Komponenten-Rezept.

  • 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:PostVerwendung des AWS IoT Greengrass Tags oder kontaktieren Sie uns AWS Support.

com.aws.greengrass.componentmanager.exceptions.PackagingException: The deployment attempts to update the nucleus from aws.greengrass.Nucleus-<version> to aws.greengrass.Nucleus-<version> but no component of type nucleus was included as target component

Dieser Fehler tritt möglicherweise auf, wenn Sie eine Komponente bereitstellen, die vom Greengrass Nucleus abhängt und auf dem Kerngerät eine frühere Greengrass Nucleus-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-Kern auf eine neue Nebenversion aktualisiert wird, da mehrere AWS bereitgestellte Komponenten von bestimmten Nebenversionen des Greengrass-Nukleus abhängen. Weitere Informationen finden Sie unter Aktualisierungsverhalten des Greengrass-Kerns.

Sie müssen die Bereitstellung ü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-Nukleus zu spezifizieren. Wenn Sie diese Option wählen, müssen Sie auch die Versionen aller AWS bereitgestellten Komponenten aktualisieren, die von bestimmten Nebenversionen von Greengrass Nucleus abhängen. Weitere Informationen finden Sie unter AWSVon bereitgestellte Komponenten.

Error: com.aws.greengrass.deployment.exceptions.DeploymentException: Unable to process deployment. Greengrass launch directory is not set up or Greengrass is not set up as a system service

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, auf Version 2.9.6 oder höher von Greengrass Nucleus zu aktualisieren.

Das Folgende ist ein Linux-Skript zum Neuerstellen des Startverzeichnisses. Speichern Sie das Skript in einer Datei namensfix_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

Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration

Dieser Fehler tritt möglicherweise auf, wenn das Core-Gerät ein umfangreiches Bereitstellungsdokument empfängt, bei dem es sich um ein Bereitstellungsdokument mit mehr als 7 KB (für Bereitstellungen, die auf Dinge abzielen) oder 31 KB (für Bereitstellungen, die auf Dinggruppen abzielen) handelt. Um ein umfangreiches Bereitstellungsdokument abzurufen, muss die AWS IoT Richtlinie eines Kerngeräts die greengrass:GetDeploymentConfiguration Genehmigung zulassen. 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 Kerngeräts hinzu. AWS IoT Weitere Informationen finden Sie unter Aktualisieren der AWS IoT Richtlinie eines Core-Geräts.

Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy

Diese Warnung wird möglicherweise angezeigt, wenn das Core-Gerät eine Bereitstellung erhält und die AWS IoT Richtlinie des Core-Gerä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, ohne dass Komponenten entfernt werden. Weitere Informationen zum Verhalten beim Entfernen von Dinggruppen finden Sie unter. Bereitstellen von AWS IoT Greengrass Komponenten auf Geräten

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 entsprechende Berechtigung zur AWS IoT Richtlinie des Kerngeräts hinzu. Weitere Informationen finden Sie unter Aktualisieren der AWS IoT Richtlinie eines Core-Geräts.

Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration

Diese Informationsmeldung wird möglicherweise 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 erhält. 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.

Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some_request_id>, Extended Request ID: null)

Dieser Fehler wird möglicherweise angezeigt, wenn eine Datenebenen-API nicht über iot:Connect die entsprechenden Berechtigungen verfügt. Wenn Sie nicht über die richtige Richtlinie verfügen, erhalten Sie eine. GreengrassV2DataException: 403 Folgen Sie diesen Anweisungen, um eine Berechtigungsrichtlinie zu erstellen:Erstellen einer AWS IoT-Richtlinie.

Probleme mit den wichtigsten Gerätekomponenten

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

Warn: '<command>' is not recognized as an internal or external command

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ühren kann. Der Status der Komponente ergibt BROKEN sich aus diesem Fehler. 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.

Überprüfen Sie auf Windows-Geräten, ob sich der Ordner, der die ausführbare Datei enthält, im Ordner PATH für den Systembenutzer befindet, der die Komponente ausführt. Wenn es 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 Komponenten mit der aktualisierten Version auszuführen. PATH Wenn die AWS IoT Greengrass Core-Software das Update PATH nach dem Neustart der Software nicht verwendet, starten Sie das Gerät neu und versuchen Sie es erneut. Weitere Informationen finden Sie unter Ausführen der AWS IoT Greengrass -Core-Software.

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

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 auf stdout und zu deaktivieren. 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 PYTHONUNBUFFERED auf eine nicht leere Zeichenfolge zu setzen. Diese Umgebungsvariable deaktiviert die Pufferung bei und. stdout stderr

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

    • Leert eine Nachricht beim Drucken.

      import sys print('Hello, error!', file=sys.stderr, flush=True)
    • Löscht 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 Logmeldungen ausgibt, finden Sie unterÜberwachen von AWS IoT Greengrass Protokollen.

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

Wenn Sie die DefaultConfiguration Rezeptur 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

Der folgende Befehl erstellt eine Bereitstellung auf einem Kerngerät.

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-Befehl erstellt eine lokale Bereitstellung auf einem Core-Gerä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, einen IPC-Vorgang für eine Ressource auszuführen. Um einer Komponente die Berechtigung zum Aufrufen einer IPC-Operation zu erteilen, definieren Sie in der Konfiguration der Komponente eine IPC-Autorisierungsrichtlinie. Weitere Informationen finden Sie unter Autorisieren Sie Komponenten zur Ausführung von IPC-Vorgängen.

Tipp

Wenn Sie das DefaultConfiguration in der Rezeptur 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: Duplicate policy ID "<id>" for principal "<componentList>"

Dieser Fehler tritt möglicherweise auf, 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 DefaultConfiguration in der Rezeptur 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: Error in retrieving AwsCredentials from TES (HTTP 400)

Dieser Fehler tritt möglicherweise auf, wenn ein Core-Gerä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 Vertrauensbeziehung besteht, die es dem Anbieter der AWS IoT Anmeldeinformationen ermöglicht, sie anzunehmen.

Gehen Sie wie folgt vor:

  1. Identifizieren Sie die Token-Austauschrolle, die das Kerngerät verwendet. Die Fehlermeldung enthält den AWS IoT Rollenalias des Kerngeräts, der auf die Token-Austauschrolle verweist. Führen Sie den folgenden Befehl auf Ihrem Entwicklungscomputer aus und MyGreengrassCoreTokenExchangeRoleAliasersetzen 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. Überprüfen Sie, ob die Rolle existiert. Führen Sie den folgenden Befehl aus und ersetzen Sie MyGreengrassV2 TokenExchangeRole durch den Namen der Token-Austauschrolle.

    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. Vergewissern Sie sich, dass die Rolle über eine Vertrauensstellung verfügt, die es dem Anbieter der AWS IoT Anmeldeinformationen ermöglicht, diese zu übernehmen. Die Antwort aus dem vorherigen Schritt enthält eineAssumeRolePolicyDocument, die die Vertrauensbeziehungen der Rolle definiert. Die Rolle muss eine Vertrauensbeziehung definieren, die es erlaubtcredentials.iot.amazonaws.com, sie anzunehmen. Dieses Dokument sollte dem folgenden Beispiel ähneln.

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

    Wenn die Vertrauensbeziehungen der Rolle es nicht zulassen, dies credentials.iot.amazonaws.com zu übernehmen, müssen Sie diese Vertrauensbeziehung der Rolle hinzufügen. Weitere Informationen finden Sie unter Ändern einer Rolle im AWS Identity and Access Management IAM-Benutzerhandbuch.

com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)

Dieser Fehler tritt möglicherweise auf, wenn ein Kerngerät keine AWS Anmeldeinformationen vom Token-Austauschdienst abrufen kann. Der HTTP-Statuscode 403 gibt an, 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 Kerngeräts finden Sie unter Minimale AWS IoT Richtlinie für -AWS IoT Greengrass V2Core-Geräte undAktualisieren der AWS IoT Richtlinie eines Core-Geräts.

com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers

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

Gehen Sie wie folgt vor:

Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"

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

Gehen Sie wie folgt vor:

  • Überprüfen Sie, ob 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 install während ihres 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> is already a container, not a leaf

Dieser Fehler tritt möglicherweise auf, wenn Sie einen Konfigurationswert von einem Containertyp (eine Liste oder ein Objekt) in einen Nicht-Containertyp (eine Zeichenfolge, Zahl oder Boolean) ändern. Gehen Sie wie folgt vor:

  1. Prüfen Sie anhand der Rezeptur 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 finden 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: Error logging into the registry using credentials - 'The stub received bad data.'

Möglicherweise wird dieser Fehler in den Greengrass-Nukleus-Protokollen angezeigt, wenn die Docker Application Manager-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 Core-Gerät um. wincredErsetzen Sie es durch einen neuen Namen für den Windows Docker Credential Helper. Sie können ihn beispielsweise umbenennen in. docker-credential-wincredreal

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

      { "credsStore": "wincredreal" }

java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.

Dieser Fehler tritt möglicherweise auf einem Windows-Core-Gerät auf, 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 die Komponentenprozesse nicht 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. Ersetzen Sie ggc_user durch den Systembenutzer und ersetzen Sie password durch das festzulegende Passwort.

    net user ggc_user password
  2. Verwenden Sie das PsExec Hilfsprogramm, um das neue Passwort des Benutzers in der Credential Manager-Instanz für das Konto zu speichern. LocalSystem Ersetzen Sie das Passwort durch das Passwort des Benutzers, das Sie festgelegt haben.

    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 eingestellt, dass es an einem Datum in der future 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 Benutzerkennwort auch so einrichten, 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 nie abläuft.

    wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
  • Wenn Sie Windows 10 oder höher verwenden und der wmicBefehl 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 exceeds minimum or maximum instant

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 auf eine neuere Version aktualisieren möchten, müssen Sie direkt auf Stream Manager v2.0.12 aktualisieren. Weitere Hinweise zur Stream Manager-Komponente finden Sie unter. Stream-Manager

Probleme mit den Lambda-Funktionskomponenten des Kerngeräts

Beheben Sie Probleme mit Lambda-Funktionskomponenten auf Kerngeräten.

The following cgroup subsystems are not mounted: devices, memory

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

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

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

Um cgroups v1 zu aktivieren, starten Sie das Gerät mit den folgenden Linux-Kernelparametern.

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 Error 400:Bad Request, b'No subscription exists for the source <label-or-lambda-arn> and subject <label-or-lambda-arn>

Dieser Fehler wird möglicherweise angezeigt, wenn Sie eine V1-Lambda-Funktion, die das AWS IoT Greengrass Core-SDK verwendet, auf einem V2-Core-Gerät ausführen, ohne ein Abonnement in der älteren Abonnement-Router-Komponente anzugeben. 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 Importieren von V1-Lambda-Funktionen.

Die Komponentenversion wurde eingestellt

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

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

  1. Führen Sie den folgenden Befehl aus, um eine Liste Ihrer Kerngerä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 ihn durch den Namen jedes abzufragenden Kerngeräts.

    aws greengrassv2 list-installed-components --core-device-thing-name coreDeviceName
  3. Stellen Sie die Kerngeräte zusammen, auf denen die nicht mehr verfügbare 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 ihn durch den Namen des abzufragenden Kerngeräts.

    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 Bereitstellungen überarbeiten.

Probleme mit der Greengrass-Befehlszeilenschnittstelle

Beheben Sie Probleme mit der Greengrass-CLI.

java.lang.RuntimeException: Unable to create ipc client

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 zu Ihrem Befehl hinzu, wie im folgenden Beispiel gezeigt.

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

AWS Command Line Interface Probleme

AWS CLI Probleme beheben für AWS IoT Greengrass V2.

Error: Invalid choice: 'greengrassv2'

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

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 zu überprüfen, AWS CLI welche Version Sie haben.

aws --version

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