Fehlerbehebung für AWS IoT Analytics - AWS IoT Analytics

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlerbehebung für AWS IoT Analytics

Im folgenden Abschnitt finden Sie Informationen zur Behebung von Fehlern und zur Behebung von Problemen mitAWS IoT Analytics.

Woher weiß ich, dass meine Nachrichten ankommenAWS IoT Analytics?

Prüfen Sie, ob die Regel zum Injizieren von Daten in den Channel über die Regel-Engine richtig konfiguriert ist.

aws iot get-topic-rule --rule-name your-rule-name

Die Antwort sollte wie folgt aussehen.

{ "ruleArn": "arn:aws:iot:us-west-2:your-account-id:rule/your-rule-name", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT * FROM 'iot/your-rule-name'", "ruleDisabled": false, "actions": [ { "iotAnalytics": { "channelArn": "arn:aws:iotanalytics:region:your_account_id:channel/your-channel-name" } } ], "ruleName": "your-rule-name" } }

Stellen Sie sicher, dass die in der Regel verwendete Region und der Kanal-Name korrekt sind. Um sicherzustellen, dass Ihre Daten die Regel-Engine erreichen und die Regel korrekt ausgeführt wird, möchten Sie möglicherweise ein neues Ziel hinzufügen, um eingehende Nachrichten vorübergehend im Amazon S3 S3-Bucket zu speichern.

Warum verliert meine Pipeline Nachrichten? Wie lässt sich dies beheben?

  • Eine Aktivität hat eine ungültige JSON-Eingabe erhalten:

    Alle Aktivitäten, außer Lambda-Aktivitäten, benötigen speziell eine gültige JSON-Zeichenfolge als Eingabe. Wenn der von einer Aktivität empfangene JSON ungültig ist, wird die Nachricht verworfen und gelangt nicht in den Datenspeicher. Stellen Sie sicher, dass Sie gültige JSON-Nachrichten in den Service einspeisen. Stellen Sie im Falle einer binären Eingabe sicher, dass die erste Aktivität in Ihrer Pipeline eine Lambda-Aktivität ist, die die Binärdaten in gültiges JSON konvertiert, bevor sie an die nächste Aktivität übergeben oder im Datenspeicher gespeichert werden. Weitere Informationen finden Sie unter Beispiel 2 für eine Lambda-Funktion.

  • Eine Lambda-Funktion, die von einer Lambda-Aktivität aufgerufen wird, besitzt keine ausreichenden Berechtigungen:

    Stellen Sie sicher, dass jede Lambda-Funktion in einer Lambda-Aktivität über die Berechtigung verfügt, vomAWS IoT Analytics Dienst aus aufgerufen zu werden. Sie können zur Erteilung der Erlaubnis folgendenAWS CLI Befehl verwenden.

    aws lambda add-permission --function-name <name> --region <region> --statement-id <id> --principal iotanalytics.amazonaws.com --action lambda:InvokeFunction
  • Ein Filter oder eine removeAttribute-Aktivität ist falsch definiert:

    Stellen Sie sicher, dass die Definitionen, falls vorhanden,filter oder dieremoveAttribute Aktivitäten korrekt sind. Wenn Sie eine Nachricht herausfiltern oder alle Attribute aus einer Nachricht entfernen, wird diese Nachricht nicht in den Datenspeicher aufgenommen.

Warum gibt es keine Daten in meinem Datenspeicher?

  • Nach der Dateneinspeisung dauert es eine gewisse Zeit, bis die Daten zur Verfügung stehen:

    Es kann nach der Übernahme der Daten in einen Kanal einige Minuten dauern, bis diese Daten im Datenspeicher zur Verfügung stehen. Die Dauer variiert je nach Anzahl der Pipeline-Aktivitäten und der Definition von benutzerdefinierten Lambda-Aktivitäten in Ihrer Pipeline.

  • Nachrichten werden in Ihrer Pipeline herausgefiltert:

    Stellen Sie sicher, dass Sie keine Nachrichten in der Pipeline löschen. (Siehe vorherige Frage und Antwort.)

  • Ihre Datensatzabfrage ist falsch:

    Stellen Sie sicher, dass die Abfrage, die den Datensatz aus dem Datenspeicher generiert, korrekt ist. Löschen Sie alle unnötigen Filter aus der Abfrage, um sicherzustellen, dass Ihre Daten Ihren Datenspeicher erreichen.

Warum wird mein Datensatz nur angezeigt__dt?

  • Diese Spalte wird vom Dienst automatisch hinzugefügt und enthält die ungefähre Zeit der Datenübernahme. Sie kann verwendet werden, um Ihre Abfragen zu optimieren. Wenn Ihr Datensatz nichts anderes enthält, lesen Sie die vorherige Frage und Antwort.

Wie kodiere ich ein Ereignis, das durch die Vervollständigung des Datensatzes gesteuert wird?

  • Sie müssen die Abfrage auf der Grundlage desdescribe-dataset Befehls einrichten, um zu überprüfen, ob der Status des Datensatzes mit einem bestimmten Zeitstempel ERFOLGREICH ist.

Wie konfiguriere ich meine Notebook-Instanz für die Verwendung richtigAWS IoT Analytics?

Führen Sie diese Schritte aus, um sicherzustellen, dass die IAM-Rolle, mit der Sie die Notebook-Instance erstellen, über die erforderlichen Berechtigungen verfügt:

  1. Gehen Sie zur SageMaker Konsole und erstellen Sie eine Notebook-Instanz.

  2. Tragen Sie die Details ein und wählen Sie create a new Role (eine neue Rolle erstellen). Notieren Sie sich den ARN der Rolle.

  3. Erstellen Sie die Notebook-Instance. Dadurch entsteht auch eine Rolle, die verwendet SageMaker werden kann.

  4. Gehen Sie zur IAM-Konsole und ändern Sie die neu erstellte SageMaker Rolle. Wenn Sie diese Rolle öffnen, sollte sie über eine verwaltete Richtlinie verfügen.

  5. Klicken Sie auf Inline-Richtlinie hinzufügen, wählen Sie IoTAnalytics als Dienst und wählen Sie unter Leseberechtigung die Option aus GetDatasetContent.

  6. Überprüfen Sie die Richtlinie, fügen Sie einen Richtliniennamen hinzu und erstellen Sie sie dann. Die neu erstellte Rolle hat jetzt die Richtlinienberechtigung, aus der ein Datensatz gelesenAWS IoT Analytics werden kann.

  7. Gehen Sie zurAWS IoT Analytics Konsole und erstellen Sie Notizbücher in der Notebook-Instanz.

  8. Warten Sie, bis sich die Notebook-Instance im Zustand „In Service” (in Betrieb) befindet.

  9. Wählen Sie create notebooks (Notebooks erstellen) und wählen Sie die von Ihnen erstellte Notebook-Instance aus. Dadurch wird ein Jupyter-Notizbuch mit der ausgewählten Vorlage erstellt, das auf Ihre Datensätze zugreifen kann.

Warum kann ich in einer Instanz keine Notizbücher erstellen?

  • Stellen Sie sicher, dass Sie eine Notebook-Instance mit der richtigen IAM-Richtlinie erstellen. (Befolgen Sie die Schritten aus der vorherigen Frage.)

  • Stellen Sie sicher, dass sich die Notebook-Instance im Zustand „In Service” (in Betrieb) befindet. Wenn Sie eine Instanz erstellen, beginnt sie im Status „Pending“. In der Regel dauert es etwa fünf Minuten, bis sie in den Zustand „In Service” (In Betrieb) wechselt. Wenn die Notebook-Instance nach etwa fünf Minuten in den Status „Fehlgeschlagen“ wechselt, überprüfen Sie die Berechtigungen erneut.

Warum sehe ich meine Datensätze nicht in Amazon QuickSight?

Amazon benötigt QuickSight möglicherweise eine Genehmigung, um den Inhalt IhresAWS IoT Analytics Datensatzes lesen zu können. Gehen Sie folgendermaßen vor, um die Erlaubnis zu erteilen.

  1. Wählen Sie Ihren Kontonamen in der oberen rechten Ecke von Amazon QuickSight und wählen Sie Verwalten QuickSight.

  2. Wählen Sie im linken Navigationsbereich Sicherheit und Berechtigungen aus. Vergewissern Sie sich unterQuickSight Zugriff aufAWS Dienste, dass Zugriff gewährt wurdeAWS IoT Analytics.

    1. Wenn SieAWS IoT Analytics keinen Zugriff haben, wählen Sie Hinzufügen oder Entfernen.

    2. Wählen Sie das Kästchen neben AWS IoT Analyticsund wählen Sie dann Aktualisieren aus. Dadurch erhält Amazon die QuickSight Erlaubnis, den Inhalt Ihres Datensatzes zu lesen.

  3. Versuchen Sie erneut, Ihre Daten zu visualisieren.

Stellen Sie sicher, dass Sie für beideAWS IoT Analytics und Amazon dieselbeAWS Region auswählen QuickSight. Andernfalls könnten Probleme beim Zugriff auf dieAWS Ressourcen auftreten. Eine Liste der unterstützten Regionen finden Sie unter AWS IoT AnalyticsEndpunkte und Kontingente und QuickSight Amazon-Endpunkte und Kontingente in der Allgemeine Amazon Web Services-Referenz.

Warum sehe ich die Schaltfläche „Containerize“ auf meinem vorhandenen Jupyter-Notebook nicht?

  • Dies wird durch ein fehlendesAWS IoT Analytics Containerization Plugin verursacht. Wenn Sie Ihre SageMaker Notebook-Instance vor dem 23. August 2018 erstellt haben, müssen Sie das Plugin manuell installieren, indem Sie den Anweisungen unter Ein Notizbuch in Containern folgen.

  • Wenn Sie die Schaltfläche „Containerize“ nicht sehen, nachdem Sie die SageMaker Notebook-Instanz von derAWS IoT Analytics Konsole aus erstellt oder manuell installiert haben, wenden Sie sich an denAWS IoT Analytics technischen Support.

Warum schlägt die Installation meines Containerisierungs-Plugins fehl?

  • Normalerweise schlägt die Plugin-Installation aufgrund fehlender Berechtigungen in der SageMaker Notebook-Instanz fehl. Prüfen Sie unter Berichtigungen, welche Berechtigungen für die Notebook-Instance erforderlich sind, und fügen Sie die erforderlichen Berechtigungen zur Notebook-Instance-Rolle hinzu. Wenn das Problem weiterhin besteht, erstellen Sie von derAWS IoT Analytics Konsole aus eine neue Notebook-Instanz.

  • Sie können die folgende Meldung im Protokoll getrost ignorieren, wenn sie während der Installation des Plugins erscheint: „Um diese Erweiterung im Browser jedes Mal zu initialisieren, wenn das Notebook (oder eine andere App) geladen wird.“

Warum gibt mein Containerisierungs-Plugin einen Fehler aus?

  • Die Containerisierung kann aus mehreren Gründen fehlschlagen und Fehlermeldungen erzeugen. Stellen Sie sicher, dass Sie über den richtigen Kernel verfügen, bevor Sie Ihr Notebook containerisieren. Containerisierte Kernel beginnen mit dem Präfix "Containerized".

  • Da das Plugin ein Docker-Image in einem ECR-Repository erstellt und speichert, stellen Sie sicher, dass Ihre Notebook-Instance-Rolle über ausreichende Berechtigungen zum Lesen, Aufführen und Erstellen von ECR-Repositorys verfügt. Prüfen Sie unter Berichtigungen, welche Berechtigungen für die Notebook-Instance erforderlich sind, und fügen Sie die erforderlichen Berechtigungen zur Notebook-Instance-Rolle hinzu.

  • Stellen Sie außerdem sicher, dass der Name des Repositorys die ECR-Anforderungen erfüllt. ECR-Repository-Namen müssen mit einem Buchstaben beginnen und dürfen nur Kleinbuchstaben, Ziffern, Bindestriche, Unterstriche und Schrägstriche enthalten.

  • Wenn der Containerisierungsprozess mit dem folgenden Fehler fehlschlägt: „Diese Instanz hat nicht genügend freien Speicherplatz, um die Containerisierung auszuführen“, versuchen Sie, das Problem mit einer größeren Instanz zu lösen.

  • Wenn Sie Verbindungsfehler oder einen Image-Erstellungsfehler sehen, versuchen Sie es erneut. Wenn das Problem weiterhin besteht, starten Sie die Instance neu und installieren Sie die neueste Plugin-Version.

Warum sehe ich meine Variablen während der Containerisierung nicht?

  • DasAWS IoT Analytics Containerisierungs-Plugin erkennt automatisch alle Variablen in Ihrem Notebook, nachdem es das Notebook mit dem Kernel „Containerized“ ausgeführt hat. Verwenden Sie einen der containerisierten Kernel, um das Notebook auszuführen, und führen Sie dann die Containerisierung durch.

Welche Variablen kann ich meinem Container als Eingabe hinzufügen?

  • Sie können alle Variablen, deren Wert Sie während der Laufzeit ändern möchten, als Eingabe zu Ihrem Container hinzufügen. Auf diese Weise können Sie denselben Container mit unterschiedlichen Parametern ausführen, die zum Zeitpunkt der Datensatzerstellung angegeben werden müssen. Das Jupyter-PluginAWS IoT Analytics zur Containerisierung vereinfacht diesen Prozess, indem es die Variablen im Notebook automatisch erkennt und sie im Rahmen des Containerisierungsprozesses verfügbar macht.

Wie stelle ich meine Container-Ausgabe als Eingabe für die nachfolgende Analyse ein?

  • Eine spezieller S3-Speicherort, an dem die ausgeführten Artefakte gespeichert werden können, wird für jede Ausführung Ihres Container-Datasets erstellt Um auf diesen Ausgabespeicherort zuzugreifen, erstellen Sie eine Variable mit dem Typ outputFileUriValue in Ihrem Container-Dataset. Der Wert dieser Variable sollte ein S3-Pfad sein, der für die Speicherung Ihrer zusätzlichen Ausgabedateien verwendet wird. Um in nachfolgenden Läufen auf diese gespeicherten Artefakte zuzugreifen, können Sie diegetDatasetContent API verwenden und die entsprechende Ausgabedatei auswählen, die für den nachfolgenden Lauf erforderlich ist.

Warum schlägt mein Container-Dataset fehl?

  • Stellen Sie sicher, dass Sie das richtigeexecutionRole an das Container-Dataset übergeben. Die Vertrauenspolitik derexecutionRole mussiotanalytics.amazonaws.com sowohl als auch beinhaltensagemaker.amazonaws.com.

  • Wenn Sie den Grund für den Fehler sehenAlgorithmError, versuchen Sie, Ihren Container-Code manuell zu debuggen. Diese Fehlermeldung wird angezeigt, wenn ein Fehler im Container-Code vorliegt oder die Ausführungsrolle nicht über die Berechtigung zum Ausführen des Containers verfügt. Wenn Sie mithilfe desAWS IoT Analytics Jupyter-Plug-ins containerisiert haben, erstellen Sie eine neue SageMaker Notebook-Instanz mit derselben Rolle wie die ExecutionRole des ContainerDataset und versuchen Sie, das Notebook manuell auszuführen. Wenn der Container außerhalb des Jupyter-Plugins erstellt wurde, versuchen Sie, den Code manuell auszuführen und die Berechtigung auf die executionRole (Ausführungsrolle) einzuschränken.