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.
Ermöglicht die Beseitigung von Fehler-Stack-Traces JavaScript
Wenn der JavaScript Quellcode Ihrer Webanwendung minimiert ist, können Fehler-Stack-Traces schwer zu lesen sein. Sie können die Entminimierung der Stack-Traces aktivieren, indem Sie Ihre Quellzuordnungen auf Amazon S3 hochladen. CloudWatch RUM ruft die Quellzuordnungen ab, um die Zeilen- und Spaltennummern im minimierten Quellcode wieder dem ursprünglichen, nicht minimierten Quellcode zuzuordnen. Das verbessert die Lesbarkeit Ihrer Fehler-Stack-Traces und hilft dabei, den Ort des Fehlers im ursprünglichen Quellcode zu identifizieren.
Anforderungen und Syntax
Quellkarten sind entscheidend für das Debuggen und Nachverfolgen von Problemen in Ihrer Webanwendung in verschiedenen Versionen. Stellen Sie sicher, dass jede Webanwendungsversion über eine eindeutige Quellkarte verfügt. Jede Version sollte eine eigene eindeutige releaseId haben. Eine releaseId muss eine Zeichenfolge mit einer Länge zwischen 1 und 200 Zeichen sein und darf nur Buchstaben, Zahlen, Unterstriche, Bindestriche, Doppelpunkte, Schrägstriche und Punkte enthalten. Um die releaseId als Metadaten zu RUM-Ereignissen hinzuzufügen, konfigurieren Sie den CloudWatch RUM-Webclient.
Es wird erwartet, dass es sich bei den Quellkarten um einfache JSON-Dateien handelt, die der in der Source-Map-V3-Spezifikationversion, file, sources, names und mappings sind erforderlich.
Stellen Sie sicher, dass die Größe der einzelnen Quellkarten die Grenze von 50 MB nicht überschreitet. Darüber hinaus ruft der RUM-Service nur bis zu 50 MB an Quellkarten pro Stack-Trace ab. Teilen Sie den Quellcode bei Bedarf in mehrere kleinere Teile auf. Weitere Informationen finden Sie unter Codesplitting mit WebpackJS
Themen
Konfigurieren Sie Ihre Amazon-S3-Bucket-Ressourcenrichtlinie, um dem RUM-Service Zugriff zu gewähren
Stellen Sie sicher, dass sich Ihr Amazon-S3-Bucket in derselben Region wie Ihre RUM-App-Überwachung befindet. Konfigurieren Sie Ihren Amazon-S3-Bucket, um dem RUM-Service Zugriff auf das Abrufen von Quellkartendateien zu gewähren. Fügen Sie die globalen Bedingungskontextschlüssel aws:SourceArn und aws:SourceAccount hinzu, um die Berechtigungen des Services auf die Ressource zu beschränken. Dies ist der effektivste Weg, um sich vor dem verwirrtes Stellvertreterproblem zu schützen.
Das folgende Beispiel zeigt, wie Sie die globalen Bedingungskontextschlüssel aws:SourceArn und aws:SourceAccount in Amazon S3 verwenden können, um das Problem des verwirrten Stellvertreters zu verhindern.
Wenn Sie AWS KMS Schlüssel zum Verschlüsseln der Daten verwenden, stellen Sie sicher, dass die Ressourcenrichtlinie des Schlüssels ähnlich konfiguriert ist aws:SourceArn und die aws:SourceAccount globalen Bedingungskontextschlüssel enthält, um dem RUM-Service Zugriff auf die Schlüssel zum Abrufen der Quellzuordnungsdateien zu gewähren.
Quellkarten hochladen
Konfigurieren Sie Ihr JavaScript Paket so, dass bei der Minimierung Quellzuordnungen generiert werden. Wenn Sie Ihre Anwendung erstellen, erstellt das Paket ein Verzeichnis (z. B. dist), das die minimierten JavaScript Dateien und die entsprechenden Quellzuordnungen enthält. Ein Beispiel finden Sie unten.
./dist |-index.d5a07c87.js |-index.d5a07c87.js.map
Laden Sie die Quellkartendatei in Ihren Amazon-S3-Bucket hoch. Die Dateien sollten sich in einem Ordner mit der releaseId als Namen befinden. Wenn mein Bucket-Name beispielsweise my-application-source-maps lautet und die releaseId 2.0.0 ist, dann befindet sich die Quellkartendatei am folgenden Speicherort:
my-application-source-maps |-2.0.0 |-index.d5a07c87.js.map
Um das Hochladen Ihrer Quellkarten zu automatisieren, können Sie das folgende Bash-Skript erstellen und es als Teil Ihres Build-Prozesses ausführen.
#!/bin/bash # Ensure the script is called with required arguments if [ "$#" -ne 2 ]; then echo "Usage: $0S3_BUCKET_NAMERELEASE_ID" exit 1 fi # Read arguments S3_BUCKET="$1" RELEASE_ID="$2" # Set the path to your build directory BUILD_DIR="./dist" # Upload all .map files recursively if aws s3 cp "$BUILD_DIR" "s3://$S3_BUCKET/$RELEASE_ID/" --recursive --exclude "*" --include "*.map"; then echo "Successfully uploaded all source map files" else echo "Failed to upload source map files" fi
Konfigurieren Sie ReleaseID in Ihrem CloudWatch RUM-Webclient
CloudWatch RUM verwendet die KonfigurationreleaseId, um den Ordner zu ermitteln, in dem die Quellzuordnungsdateien abgerufen werden. Benennen Sie die releaseId genauso wie Ihren Ordner mit Quellkartendateien. Wenn Sie das oben angegebene Bash-Skript oder ein ähnliches verwendet haben, sollte das im Skript releaseId konfigurierte mit dem in Ihrem CloudWatch RUM-Webclient konfigurierten identisch sein. Sie müssen Version 1.21.0 oder höher des CloudWatch RUM-Webclients verwenden.
import { AwsRum, AwsRumConfig } from "aws-rum-web"; try { const config: AwsRumConfig = { sessionSampleRate: 1, endpoint: "https://dataplane.rum.us-west-2.amazonaws.com", telemetries: ["performance", "errors", "http"], allowCookies: true, releaseId: "RELEASE_ID", //Add this }; const APPLICATION_ID: string = "APP_MONITOR_ID"; const APPLICATION_VERSION: string = "1.0.0"; const APPLICATION_REGION: string = "us-west-2"; new AwsRum(APPLICATION_ID, APPLICATION_VERSION, APPLICATION_REGION, config); } catch (error: any) { // Ignore errors thrown during CloudWatch RUM web client initialization }
Aktivieren Sie den CloudWatch RUM App Monitor, um die Minimierung von JavaScript Stack-Traces aufzuheben
Um die Minimierung von JavaScript Stack-Traces aufzuheben, setzen Sie den Status des App-Monitors auf. SourceMap ENABLED Geben Sie die Amazon-S3-URI für den Bucket oder Ordner an, der alle Quellkarten für Ihre App-Überwachung enthält.
Wenn Quellkarten direkt im Haupt-Bucket (nicht in einem Unterordner) gespeichert werden, sollte die Amazon-S3-URI als Amazon S3:// formatiert werden. In diesem Fall sollten sich die Quellkartendateien am folgenden Speicherort befinden.BUCKET_NAME
BUCKET_NAME|-RELEASE_ID|-index.d5a07c87.js.map
Wenn ein untergeordnetes Verzeichnis das Stammverzeichnis ist, sollte die Amazon-S3-URI als Amazon S3:// formatiert werden. In diesem Fall sollten sich die Quellkartendateien am folgenden Speicherort befinden.BUCKET_NAME/DIRECTORY
BUCKET_NAME|-DIRECTORY|-RELEASE_ID|-index.d5a07c87.js.map
Anzeigen von nicht minimierten Stack-Traces in der RUM-Konsole
Nachdem Sie Ihre Quellzuordnungen auf Amazon S3 hochgeladen, Quellzuordnungen auf Ihrem RUM-App-Monitor aktiviert und Ihre Webanwendung mit den im RUM-Webclient releaseId konfigurierten bereitgestellt haben, wählen Sie in der CloudWatch RUM-Konsole Ereignisse aus. Auf dieser Registerkarte werden die Rohdaten der RUM-Ereignisse angezeigt. Filtern Sie nach dem JS-Fehlerereignistyp und sehen Sie sich das neueste JS-Fehlerereignis an. Sie werden den nicht minimierten Stack-Trace im neuen event_details.unminifiedStack-Feld für Ereignisse sehen, die nach der Aktivierung des Features aufgenommen wurden.
Unminimierte Stack-Traces in Logs anzeigen CloudWatch
Aktivieren Sie den RUM-Ereignisspeicher in den CloudWatch Protokollen, indem Sie den Datenspeicher aktivieren. Nach der Aktivierung können Sie das neue Feld event_details.unminifiedStack durchsuchen. Auf diese Weise können Sie mithilfe von CloudWatch Protokollabfragen Trends analysieren und Probleme in mehreren Sitzungen miteinander in Beziehung setzen.
Fehlerbehebung bei Quellkarten
CloudWatch RUM bietet sofort einsatzbereite Metriken zur Fehlerbehebung bei der Einrichtung Ihrer Quellkarte. Diese Metriken werden im Metrik-Namespace namens AWS/RUM veröffentlicht. Alle der folgenden Metriken werden mit einer application_name-Dimension veröffentlicht. Der Wert dieser Dimension ist der Name der App-Überwachung. Die Metriken werden auch mit einer aws:releaseId-Dimension veröffentlicht. Der Wert dieser Dimension entspricht releaseId dem JavaScript Fehlerereignis.
| MetricName | Einheit | Description |
|---|---|---|
|
UnminifyLineFailureCount |
Anzahl |
Die Anzahl der Stack-Trace-Zeilen im JS-Fehlerereignis, deren Minimierung nicht aufgehoben werden konnte. Zusätzliche Details zu dem Fehler werden der spezifischen fehlgeschlagenen Zeile im Feld event_details.UnminifiedStack hinzugefügt. |
|
UnminifyLineSuccessCount |
Anzahl |
Die Anzahl der Stack-Trace-Zeilen im JS-Fehlerereignis, deren Minimierung erfolgreich aufgehoben wurde. |
UnminifyEventFailureCount |
Anzahl |
Die Anzahl der JS-Fehlerereignisse, bei denen die Minimierung bei keiner Zeile aufgehoben werden konnte. Zusätzliche Details zum Fehler werden im Feld event_details.unminifiedStack hinzugefügt. |
UnminifyEventSuccessCount |
Anzahl |
Die Anzahl der JS-Fehlerereignisse, bei denen die Minimierung bei mindestens einer Stack-Trace-Zeile erfolgreich aufgehoben wurde. |
CloudWatch RUM kann aus verschiedenen Gründen die Minimierung einer Zeile im Stack-Trace nicht aufheben, unter anderem aus folgenden Gründen:
-
Die entsprechende Quellkartendatei konnte aufgrund von Berechtigungsproblemen nicht abgerufen werden. Stellen Sie sicher, dass die Bucket-Ressourcenrichtlinie korrekt konfiguriert ist.
-
Die entsprechende Quellkartendatei ist nicht vorhanden. Stellen Sie sicher, dass die Quellzuordnungsdateien in den richtigen Bucket oder Ordner hochgeladen wurden, der denselben Namen wie die in Ihrem CloudWatch RUM-Webclient konfigurierte ReleaseID hat.
-
Die entsprechende Quellkartendatei ist zu groß. Teilen Sie Ihren Quellcode in kleinere Teile auf.
-
Quellkartendateien mit einer Größe von 50 MB wurden bereits für den Stack-Trace abgerufen. Reduzieren Sie die Länge des Stack-Trace, da 50 MB eine serviceseitige Beschränkung darstellen.
-
Die Quellkarte ist ungültig und konnte nicht indiziert werden. Stellen Sie sicher, dass es sich bei der Quellkarte um eine einfache JSON-Datei handelt, die der in der Source Map-V3-Spezifikation definierten Struktur folgt und die folgenden Felder enthält: Version, Datei, Quellen, Namen, Zuordnungen.
-
Die Quellkarte konnte den minimierten Quellcode nicht dem nicht minimierten Stack-Trace zuordnen. Stellen Sie sicher, dass die Quellkarte die richtige Quellkarte für die angegebene releaseId ist.