

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.

# Aktivierung der Entminimierung von Error-Stack-Traces JavaScript
<a name="CloudWatch-RUM-JavaScriptStackTraceSourceMaps"></a>

Wenn der JavaScript Quellcode Ihrer Webanwendung minimiert ist, kann es schwierig sein, Fehler-Stack-Traces zu lesen. 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
<a name="CloudWatch-RUM-RequirementsJavaScriptStackTraceSourceMaps"></a>

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` AS-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-Spezifikation](https://sourcemaps.info/spec.html) definierten Struktur folgen. Die Felder `version`, `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](https://webpack.js.org/guides/code-splitting/).

**Topics**
+ [Anforderungen und Syntax](#CloudWatch-RUM-RequirementsJavaScriptStackTraceSourceMaps)
+ [Konfigurieren Sie Ihre Amazon-S3-Bucket-Ressourcenrichtlinie, um dem RUM-Service Zugriff zu gewähren](#CloudWatch-RUM-ConfigureS3)
+ [Quellkarten hochladen](#CloudWatch-RUM-UploadSourceMaps)
+ [Konfigurieren Sie ReleaseID in Ihrem CloudWatch RUM-Webclient](#CloudWatch-RUM-ConfigureRumID)
+ [CloudWatch RUM-App-Monitor aktivieren, um Stack-Traces zu deminifizieren JavaScript](#CloudWatch-RUM-unminifyjavascript)
+ [Anzeigen von nicht minimierten Stack-Traces in der RUM-Konsole](#CloudWatch-RUM-viewunminifiedstacktraces)
+ [Unminimierte Stack-Traces in Logs anzeigen CloudWatch](#CloudWatch-RUM-viewunminifiedstacktracesCWL)
+ [Fehlerbehebung bei Quellkarten](#CloudWatch-RUM-troubleshootsourcemaps)

## Konfigurieren Sie Ihre Amazon-S3-Bucket-Ressourcenrichtlinie, um dem RUM-Service Zugriff zu gewähren
<a name="CloudWatch-RUM-ConfigureS3"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) 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.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RUM Service S3 Read Permissions",
            "Effect": "Allow",
            "Principal": {
                "Service": "rum.amazonaws.com"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::{{BUCKET_NAME}}",
                "arn:aws:s3:::{{BUCKET_NAME}}/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "{{ACCOUNT_ID}}",
                    "aws:SourceArn": "arn:aws:rum:{{REGION}}:{{ACCOUNT_ID}}:appmonitor/{{APP_MONITOR_NAME}}"
                }
            }
        }
    ]
}
```

------

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 Kontextschlüssel für `aws:SourceAccount` globale Bedingungen enthält, damit der RUM-Dienst Zugriff darauf hat, die Schlüssel zum Abrufen der Quellzuordnungsdateien zu verwenden.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RUM Service KMS Read Permissions",
            "Effect": "Allow",
            "Principal": {
                "Service": "rum.amazonaws.com"
            },
            "Action": "kms:Decrypt",
            "Resource": "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{KEY_ID}}",
            "Condition": {
                "StringEquals": {
                "aws:SourceAccount": "{{123456789012}}",
    "aws:SourceArn": "arn:aws:rum:{{us-east-1}}:{{123456789012}}/{{APP_MONITOR_NAME}}"
                }
            }
        }
    ]
}
```

------

## Quellkarten hochladen
<a name="CloudWatch-RUM-UploadSourceMaps"></a>

Konfigurieren Sie Ihr JavaScript Paket so, dass bei der Minimierung Quellzuordnungen generiert werden. Wenn Sie Ihre Anwendung erstellen, erstellt das Bundle 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: $0 {{S3_BUCKET_NAME}} {{RELEASE_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
<a name="CloudWatch-RUM-ConfigureRumID"></a>

CloudWatch RUM verwendet die Konfiguration`releaseId`, um den Ordner zum Abrufen der Quellzuordnungsdateien zu ermitteln. 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 Skript 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
}
```

## CloudWatch RUM-App-Monitor aktivieren, um Stack-Traces zu deminifizieren JavaScript
<a name="CloudWatch-RUM-unminifyjavascript"></a>

Um die JavaScript Stack-Traces zu deminifizieren, 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://{{BUCKET_NAME}}` formatiert werden. In diesem Fall sollten sich die Quellkartendateien am folgenden Speicherort befinden.

```
{{BUCKET_NAME}}
    |- {{RELEASE_ID}}
        |-index.d5a07c87.js.map
```

Wenn ein untergeordnetes Verzeichnis das Stammverzeichnis ist, sollte die Amazon-S3-URI als `Amazon S3://{{BUCKET_NAME}}/{{DIRECTORY}}` formatiert werden. In diesem Fall sollten sich die Quellkartendateien am folgenden Speicherort befinden.

```
{{BUCKET_NAME}}
    |- {{DIRECTORY}}
        |-{{RELEASE_ID}}
            |-index.d5a07c87.js.map
```

## Anzeigen von nicht minimierten Stack-Traces in der RUM-Konsole
<a name="CloudWatch-RUM-viewunminifiedstacktraces"></a>

Nachdem Sie Ihre Quellzuordnungen auf Amazon S3 hochgeladen, Quellzuordnungen auf Ihrem RUM-App-Monitor aktiviert und Ihre Webanwendung mit dem im CloudWatch RUM-Webclient `releaseId` konfigurierten bereitgestellt haben, wählen Sie in der 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
<a name="CloudWatch-RUM-viewunminifiedstacktracesCWL"></a>

Aktivieren Sie die Speicherung von RUM-Ereignissen in den CloudWatch Protokollen, indem Sie die **Datenspeicherung** aktivieren. Nach der Aktivierung können Sie das neue Feld **event\_details.unminifiedStack** durchsuchen. Auf diese Weise können Sie mithilfe von CloudWatch Log-Abfragen Trends analysieren und Probleme in mehreren Sitzungen miteinander verknüpfen.

## Fehlerbehebung bei Quellkarten
<a name="CloudWatch-RUM-troubleshootsourcemaps"></a>

CloudWatch RUM bietet sofort einsatzbereite Metriken zur Fehlerbehebung bei der Einrichtung Ihrer Quellenkarte. 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 ist dem JavaScript Fehlerereignis `releaseId` zugeordnet.


| 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 nicht in der Lage sein, eine Zeile im Stack-Trace zu deminifizieren, einschließlich, aber nicht beschränkt auf:
+ 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 hat wie die in Ihrem CloudWatch RUM-Webclient konfigurierte ReleaseID.
+ 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.