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 CloudWatch Protokolle in Logs schreiben, sodass Sie Probleme bei Kerngeräten remote 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 mit der Software
Beheben Sie Probleme mit der AWS IoT Greengrass Kernsoftware.
Themen
Die AWS IoT Greengrass Core-Software konnte nicht als Systemdienst gestartet werden
Failed to map segment from shared object: operation not permitted
com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
Operation aws.greengrass#<operation> is not supported by Greengrass
java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
ThrottlingException von der ListDeployments API
ThrottlingException
von 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 Limiterhöhung des Ratenlimits der
DescribeJob
API zu beantragen. Sie können zur Service-Kontingentkonsole gehen, Kontingente von auswählen AWS IoT und das Limit heißt DescribeJob Throttle Limit. Sie können es von 10 auf 50 erhöhen.
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 Sie die 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
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 einen 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 Führen Sie die AWS IoT Greengrass Core-Software ohne Systemdienst aus.
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 unterKonfiguration der AWS IoT Greengrass Core-Software.
-
Vergewissern Sie sich, dass AWS IoT das Gerät Ihres Kerngeräts ein Zertifikat verwendet
iot:Connect
, das dieiot:Publish
,iot:Receive
, undiot: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 die
iot:Connect
,iot:Publish
iot:Receive
, undiot: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 erhalten 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/tmp
Ordner standardmäßig.
Führen Sie eine der folgenden Aktionen aus:
-
Führen Sie den folgenden Befehl aus, um den
/tmp
Ordner mit denexec
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./path/to/use
Ersetzen 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:
-
Entpacken Sie das heruntergeladene AWS IoT Greengrass Core-Installationsarchiv
-
Öffnen Sie im
Greengrass
Verzeichnis diebin/greengrass.xml.template
Datei. -
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 unterGeräteverkehr über einen Proxy oder eine Firewall zulassen.
-
Suchen Sie in den Greengrass-Protokollen nach anderen Fehlern, die andere Ursachen 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:
-
Führen Sie den folgenden Befehl aus, um die Umgebungsvariable für das Sitzungstoken zu deaktivieren.
-
Ü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:
-
AWS IoT Core Richtlinienaktionen im AWS IoT Entwicklerhandbuch
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.
-
Geheime Werte abrufen —
aws.greengrass.SecretManager
-
Interagiere mit lokalen Schatten —
aws.greengrass.ShadowManager
-
Lokale Bereitstellungen und Komponenten verwalten —
aws.greengrass.Cli
v2.6.0 oder höher -
Authentifizieren und autorisieren Sie Client-Geräte — v2.2.0 oder höher
aws.greengrass.clientdevices.Auth
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.
-
Stellen Sie sicher, dass der private Schlüssel und das Zertifikat dieselbe Objektbezeichnung im HSM verwenden.
-
Wenn Ihr HSM Objekte unterstützt IDs, überprüfen Sie, ob der private Schlüssel und das Zertifikat dieselbe Objekt-ID im HSM verwenden.
In der Dokumentation für Ihr 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
-
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.
-
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 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 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:
-
Geheime Verschlüsselung und Entschlüsselung im AWS Secrets Manager Benutzerhandbuch
-
Autorisieren Sie Kerngeräte für die Interaktion mit Diensten AWS
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-Dienstdatei 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:
-
Führen Sie auf Ihrem Greengrass Core-Gerät den folgenden Befehl aus, um die Greengrass Core-Software zu beenden.
-
Laden Sie die AWS IoT Greengrass Software auf Ihrem Core-Gerät in eine Datei mit dem Namen herunter.
greengrass-2.12.2.zip
-
Entpacken Sie die AWS IoT Greengrass Core-Software in einen Ordner auf Ihrem Gerät.
GreengrassInstaller
Ersetzen Sie es durch den Ordner, den Sie verwenden möchten. -
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.
-
Führen Sie den folgenden Befehl aus, um die Greengrass Core-Software zu starten.
Greengrass nucleus v2.14.0 systemd template issue
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:
-
Führen Sie auf Ihrem Greengrass-Core-Gerät den folgenden Befehl aus, um die Systemd-Dienstdatei auf den Stand von Nucleus v2.13.0 und früheren Versionen zurückzusetzen.
-
Wenden Sie die Änderungen an.
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, möglicherweise wird jedoch ein falscher Bereitstellungsstatus von INACTIVE
angezeigt.
Hauptprobleme bei der Gerätebereitstellung
Beheben Sie Bereitstellungsprobleme auf Greengrass-Core-Geräten. Jeder Eintrag entspricht einer Protokollnachricht, die Sie möglicherweise auf Ihrem Kerngerät sehen.
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.
Themen
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ässt
s3: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 keine s3:GetBucketLocation
Anrufberechtigung hat. 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 Core-Gerä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 SieStatus Code: 403
im Fehlerprotokoll nach, um dieses Problem zu identifizieren. Um dieses Problem zu beheben, fügen Sie diegreengrass:ResolveComponentCandidates
Berechtigung zur AWS IoT Richtlinie des Kerngeräts 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 inkompatible Versionen entfernen. Weitere Informationen zur Überarbeitung von Cloud-Bereitstellungen finden Sie unter. Bereitstellungen überarbeiten Weitere Informationen zum Überarbeiten 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:Post
Verwendung des AWS IoT Greengrass Tags oder kontaktieren Sie uns 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 von Greengrass Nucleus.
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 AWS-mitgelieferte 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.
Im Folgenden finden Sie 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 erhält, 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 Sie die AWS IoT Richtlinie eines Kerngeräts.
Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy
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, ohne dass Komponenten entfernt werden. 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
entsprechende Berechtigung zur AWS IoT Richtlinie des Kerngeräts hinzu. Weitere Informationen finden Sie unter Aktualisieren Sie die AWS IoT Richtlinie eines Kerngerä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 Sie eine AWS IoT Richtlinie.
Probleme mit den wichtigsten Gerätekomponenten
Beheben Sie Probleme mit Greengrass-Komponenten auf Kerngeräten.
Themen
Warn: '<command>' is not recognized as an internal or external command
Die Komponentenkonfiguration wird nicht aktualisiert, wenn die Standardkonfiguration geändert wird
com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers
copyFrom: <configurationPath> is already a container, not a leaf
aws.greengrass.StreamManager: Instant exceeds minimum or maximum instant
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
Ü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 UpdatePATH
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.
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
-
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 unterAWS IoT Greengrass Protokolle überwachen.
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.
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 die Rezeptur 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: 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 eine eindeutige Richtlinie zu erstellen IDs, 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:
-
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
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" } }
-
Überprüfen Sie, ob die Rolle existiert. Führen Sie den folgenden Befehl aus und
MyGreengrassV2TokenExchangeRole
ersetzen Sie ihn 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. -
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 eine
AssumeRolePolicyDocument
, 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
anzunehmen, 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 V2 Kerngeräte undAktualisieren Sie die AWS IoT Richtlinie eines Kerngerä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:
-
Ü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. -
Wenn die Komponente im Docker ausgeführt wird, stellen Sie sicher, dass Sie entsprechend die richtigen Netzwerkeinstellungen und Umgebungsvariablen anwenden. Verwenden Sie AWS Anmeldeinformationen in Docker-Container-Komponenten (Linux)
-
Wenn die Komponente in NodeJS geschrieben ist, legen Sie dns fest. setDefaultResultBestellung zu.
ipv4first
-
/etc/hosts
Suchen Sie nach einem Eintrag, der mit beginnt::1
und enthältlocalhost
. Entfernen Sie den Eintrag, um festzustellen, ob die Komponente dadurch eine Verbindung mit dem Token-Austauschdienst unter der falschen Adresse hergestellt hat.
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 desinstall
Lebenszyklus. Aktualisieren Sie die Komponente, um den Code, der AWS Anmeldeinformationen verwendet, in denstartup
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:
-
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.
-
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: 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
Dockerdocker-credential-wincred
Aus diesem Grund kann Amazon ECR die Anmeldeinformationen nicht speichern.
Ergreifen Sie eine der folgenden Aktionen:
-
Wenn Sie den
wincred
Docker Credential Helper nicht verwenden, entfernen Sie dasdocker-credential-wincred
Programm vom Kerngerät. -
Wenn Sie den
wincred
Docker Credential Helper verwenden, gehen Sie wie folgt vor:-
Benennen Sie das
docker-credential-wincred
Programm auf dem Core-Gerät um.wincred
Ersetzen Sie es durch einen neuen Namen für den Windows Docker Credential Helper. Sie können ihn beispielsweise umbenennen in.docker-credential-wincredreal
-
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 diecredsStore
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
-
Führen Sie den folgenden Befehl als Administrator aus, um das Passwort des Benutzers festzulegen.
ggc_user
Ersetzen Sie es durch den Systembenutzer undpassword
ersetzen Sie es durch das festzulegende Passwort.net user
ggc_user
password
-
Verwenden Sie das PsExec Hilfsprogramm
, um das neue Passwort des Benutzers in der Credential Manager-Instanz für das LocalSystem Konto zu speichern. password
Ersetzen 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 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
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 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.
Themen
The following cgroup subsystems are not mounted: devices, memory
In den folgenden Fällen wird dieser Fehler möglicherweise angezeigt, 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 Core-Gerä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 V1-Lambda-Funktionen importieren.
Die Version der Komponente 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
-
Führen Sie den folgenden Befehl aus, um eine Liste Ihrer Kerngeräte abzurufen.
aws greengrassv2 list-core-devices
-
Führen Sie den folgenden Befehl aus, um den Status der Komponenten auf jedem Kerngerät aus Schritt 1 abzurufen.
Ersetzen Sie ihn durch den Namen jedes abzufragenden Kerngeräts.coreDeviceName
aws greengrassv2 list-installed-components --core-device-thing-name
coreDeviceName
-
Stellen Sie die Kerngeräte zusammen, auf denen die nicht mehr verfügbare Komponentenversion aus den vorherigen Schritten installiert wurde.
-
Führen Sie den folgenden Befehl aus, um den Status aller Bereitstellungsaufträge für jedes Kerngerät aus Schritt 3 abzurufen.
Ersetzen Sie ihn durch den Namen des abzufragenden Kerngeräts.coreDeviceName
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 zur Überarbeitung 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
ersetzen Sie ihn durch den Pfad zu Ihrer AWS IoT Greengrass Core-Softwareinstallation:/greengrass/v2
-
Legen Sie die Umgebungsvariable
GGC_ROOT_PATH
auf
fest./greengrass/v2
-
Fügen Sie das
--ggcRootPath
Argument zu Ihrem Befehl hinzu, wie im folgenden Beispiel gezeigt./greengrass/v2
greengrass-cli --ggcRootPath
<command> <subcommand> [arguments]/greengrass/v2
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
-
Minimale AWS CLI V2-Version: 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 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.