

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.

# Synthetische Überwachung (Canarys)
<a name="CloudWatch_Synthetics_Canaries"></a>

Sie können Amazon CloudWatch Synthetics verwenden, um *kanarische*, konfigurierbare Skripts zu erstellen, die nach einem Zeitplan ausgeführt werden, um Ihre Endgeräte zu überwachen und. APIs Canarys folgen denselben Routen und führen dieselben Aktionen aus wie ein Kunde. So können Sie Ihre Kundenerfahrung kontinuierlich überprüfen, auch wenn Sie keinen Kundenverkehr auf Ihren Anwendungen haben. Durch den Einsatz von Canarys können Sie Probleme entdecken, bevor Ihre Kunden sie entdecken.

Canarys sind Skripts, die in Node.js, Python oder Java geschrieben wurden. Sie legen Lambda-Funktionen in Ihrem Konto an, die Node.js, Python oder Java als Laufzeit verwenden. Canarys arbeiten über HTTP- und HTTPS-Protokolle. Die Kanaren verwenden Lambda-Schichten, die die CloudWatch Synthetics-Bibliothek enthalten. Die Bibliothek umfasst CloudWatch Synthetics-Implementierungen für NodeJS, Python und Java.

Canarys in Node.js- und Python-Laufzeiten bieten programmatischen Zugriff auf Headless-Browser über Playwright, Puppeteer oder Selenium Webdriver. Es werden mehrere Browser unterstützt, darunter ein Headless-Google-Chrome-Browser und Mozilla Firefox. Weitere Informationen zu Playwright unter [Playwright](https://playwright.dev/). Weitere Informationen zu Puppeteer finden Sie unter [Puppeteer](https://developer.chrome.com/docs/puppeteer/). Weitere Informationen zu Selenium unter [Selenium](https://www.selenium.dev/). Canarys auf Selenium unterstützen nur den Chrome-Browser. Canarys in Java sind auf Flexibilität bei der Überwachung aller Arten von Services oder Anwendungen ausgelegt und enthalten keine Browserunterstützung oder Frameworks.

Canarys überprüfen die Verfügbarkeit und Latenz Ihrer Endpunkte und können Daten zur Ladezeit und Screenshots der Benutzeroberfläche speichern. Sie überwachen Ihre REST APIs - und Website-Inhalte und können nach unbefugten Änderungen durch Phishing, Code-Injection und Cross-Site-Scripting suchen. URLs

 CloudWatch Synthetics ist in [Application Signals](CloudWatch-Application-Monitoring-Sections.md) integriert, das Ihre Anwendungsdienste, Clients, Synthetics-Kanarien und Serviceabhängigkeiten erkennen und überwachen kann. Verwenden Sie Application Signals, um eine Liste oder eine visuelle Übersicht Ihrer Services zu erhalten, Integritätskennzahlen auf der Grundlage Ihrer Service-Level-Ziele (SLOs) einzusehen und eine Aufschlüsselung durchzuführen, um korrelierte Röntgenspuren für eine detailliertere Fehlerbehebung zu sehen. Um Ihre Canarys in Application Signals zu sehen, [aktivieren Sie X-Ray Active Tracing](CloudWatch_Synthetics_Canaries_tracing.md). Ihre Canarys werden auf der [Anwendungskarte](ServiceMap.md) angezeigt, die mit Ihren Services verbunden ist, sowie auf der [Service-Detailseite](ServiceDetail.md) der Services, die sie aufrufen. 

Eine Video-Demonstration von Canarys finden Sie hier:
+  [Einführung in Amazon CloudWatch Synthetics](https://www.youtube.com/watch?v=MItluIsvfTo) 
+  [Demo von Amazon CloudWatch Synthetics](https://www.youtube.com/watch?v=hF3NM9j-u7I) 
+  [Erstellen Sie Kanarienvögel mit Amazon Synthetics CloudWatch](https://www.youtube.com/watch?v=DSx65wW7lr0) 
+  [Visuelle Überwachung mit Amazon CloudWatch Synthetics](https://www.youtube.com/watch?v=_PCs-ucZz7E) 



Sie können ein Canary einmal oder nach einem regelmäßigen Zeitplan ausführen. Canarys können bis zu einmal pro Minute laufen. Sie können sowohl Cron- als auch Rate-Ausdrücke verwenden, um Canarys zu planen.

Informationen zu Sicherheitsproblemen, die vor dem Erstellen und Ausführen von Canarys berücksichtigt werden sollten, finden Sie unter [Sicherheitsüberlegungen für Synthetics-Canaries](servicelens_canaries_security.md). 

Standardmäßig erstellen Canaries mehrere CloudWatch Metriken im `CloudWatchSynthetics` Namespace. Diese Metriken erhalten `CanaryName` als Dimension. Canarys, die die `executeStep()`- oder `executeHttpStep()`-Funktion aus der Funktionsbibliothek verwenden, erhalten ebenfalls `StepName` als Dimension. Weitere Informationen zur Canary-Funktionsbibliothek finden Sie unter [Für Canary-Skripte verfügbare Bibliotheksfunktionen](CloudWatch_Synthetics_Canaries_Function_Library.md).

CloudWatch Synthetics lässt sich gut in die X-Ray Trace Map integrieren, AWS X-Ray die CloudWatch mit einen end-to-end Überblick über Ihre Dienste bietet, sodass Sie Leistungsengpässe effizienter erkennen und betroffene Benutzer identifizieren können. Kanarienvögel, die Sie mit CloudWatch Synthetics erstellen, werden auf der Trace-Map angezeigt. Weitere Informationen finden Sie unter [X-Ray Trace Map](https://docs.aws.amazon.com/xray/latest/devguide/xray-console-servicemap.html). 

CloudWatch Synthetics ist derzeit in allen AWS Handelsregionen und Regionen erhältlich. GovCloud

**Anmerkung**  
Im asiatisch-pazifischen Raum (Osaka) AWS PrivateLink wird dies nicht unterstützt. In der Region Asien-Pazifik (Jakarta) werden AWS PrivateLink und X-Ray nicht unterstützt.

**Topics**
+ [Erforderliche Rollen und Berechtigungen für CloudWatch Kanarienvögel](CloudWatch_Synthetics_Canaries_Roles.md)
+ [Erstellen eines Canarys](CloudWatch_Synthetics_Canaries_Create.md)
+ [Gruppen](CloudWatch_Synthetics_Groups.md)
+ [Lokales Testen eines Canary](CloudWatch_Synthetics_Debug_Locally.md)
+ [Problembehandlung bei fehlgeschlagenem Canary](CloudWatch_Synthetics_Canaries_Troubleshoot.md)
+ [Beispielcode für Canary-Skripte](CloudWatch_Synthetics_Canaries_Samples.md)
+ [Canary- und X-Ray-Ablaufverfolgung](CloudWatch_Synthetics_Canaries_tracing.md)
+ [Ausführen eines Canarys in einer VPC](CloudWatch_Synthetics_Canaries_VPC.md)
+ [Verschlüsseln von Canary-Artefakten](CloudWatch_Synthetics_artifact_encryption.md)
+ [Anzeigen von Canary-Statistiken und -Details](CloudWatch_Synthetics_Canaries_Details.md)
+ [CloudWatch von Canaries veröffentlichte Metriken](CloudWatch_Synthetics_Canaries_metrics.md)
+ [Einen Canary bearbeiten oder löschen](synthetics_canaries_deletion.md)
+ [Laufzeit für mehrere Canary starten, stoppen, löschen oder aktualisieren](synthetics_canaries_multi-action.md)
+ [Überwachung kanarischer Ereignisse mit Amazon EventBridge](monitoring-events-eventbridge.md)
+ [Durchführen sicherer Canary-Updates](performing-safe-canary-upgrades.md)

# Erforderliche Rollen und Berechtigungen für CloudWatch Kanarienvögel
<a name="CloudWatch_Synthetics_Canaries_Roles"></a>

Sowohl die Benutzer, die Canarys erstellen und verwalten, als auch die Canarys selbst benötigen bestimmte Berechtigungen.

# Erforderliche Rollen und Berechtigungen für Benutzer, die Canaries verwalten CloudWatch
<a name="CloudWatch_Synthetics_Canaries_UserPermissions"></a>

Um Canary-Details und die Ergebnisse von Canary-Ausführungen anzuzeigen, müssen Sie als Benutzer mit `CloudWatchSyntheticsFullAccess` oder ` CloudWatchSyntheticsReadOnlyAccess` und den angehängten Richtlinien angemeldet sein. Um alle Synthetics-Daten in der Konsole lesen zu können, benötigen Sie außerdem die Richtlinien `AmazonS3ReadOnlyAccess` und ` CloudWatchReadOnlyAccess`. Um den von Canarys verwendeten Quellcode anzeigen zu können, benötigen Sie auch die `AWSLambda_ReadOnlyAccess`-Richtlinie.

Um Canarys erstellen zu können, müssen Sie als ein Benutzer angemeldet sein, der über die ` CloudWatchSyntheticsFullAccess`-Richtlinie oder einen ähnlichen Satz von Berechtigungen verfügt. Um IAM-Rollen für die Canarys erstellen zu können, benötigen Sie außerdem die folgende Inline-Richtlinienanweisung:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:CreatePolicy",
                "iam:AttachRolePolicy"
            ],
            "Resource": [
                "arn:aws:iam::*:role/service-role/CloudWatchSyntheticsRole*",
                "arn:aws:iam::*:policy/service-role/CloudWatchSyntheticsPolicy*"
            ]
        }
    ]
}
```

------

**Wichtig**  
Wenn Sie einem Benutzer die Berechtigungen `iam:CreateRole`, `iam:CreatePolicy` und ` iam:AttachRolePolicy` gewähren, erhält dieser Benutzer vollen Administratorzugriff auf Ihr AWS -Konto. Beispielsweise kann ein Benutzer mit diesen Berechtigungen eine Richtlinie erstellen, die über vollständige Berechtigungen für alle Ressourcen verfügt, und diese Richtlinie an eine beliebige Rolle anhängen. Seien Sie sehr vorsichtig, wem Sie diese Berechtigungen erteilen.

Informationen zum Anhängen von Richtlinien und zum Erteilen von Berechtigungen für Benutzer finden Sie unter [Ändern von Berechtigungen für einen IAM-Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) und [So betten Sie eine Inline-Richtlinie für einen Benutzer oder eine Rolle ein](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#embed-inline-policy-console).

# Erforderliche Rollen und Berechtigungen für Canarys
<a name="CloudWatch_Synthetics_Canaries_CanaryPermissions"></a>

Jedem Canary muss eine IAM-Rolle zugeordnet sein, der bestimmte Berechtigungen zugewiesen sind. Wenn Sie mit der CloudWatch Konsole einen Canary erstellen, können Sie CloudWatch Synthetics wählen, um eine IAM-Rolle für den Canary zu erstellen. Wenn Sie dies tun, verfügt die Rolle über die erforderlichen Berechtigungen.

Wenn Sie die IAM-Rolle selbst oder eine IAM-Rolle erstellen möchten, die Sie verwenden können, wenn Sie das AWS CLI oder verwenden, um einen Canary APIs zu erstellen, muss die Rolle die in diesem Abschnitt aufgeführten Berechtigungen enthalten.

Alle IAM-Rollen für Canarys müssen die folgende Vertrauensrichtlinienanweisung enthalten.

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

****  

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

------

Darüber hinaus muss die IAM-Rolle des Canary eine der folgenden Anweisungen enthalten.

 **Basic Canary, das keinen Amazon VPC-Zugriff verwendet AWS KMS oder benötigt** 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::path/to/your/s3/bucket/canary/results/folder"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::name/of/the/s3/bucket/that/contains/canary/results"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup"
            ],
            "Resource": [
            "arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/cwsyn-canary_name-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "xray:PutTraceSegments"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Resource": "*",
            "Action": "cloudwatch:PutMetricData",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": "CloudWatchSynthetics"
                }
            }
        }
    ]
}
```

------

 **Canary, AWS KMS das kanarische Artefakte verschlüsselt, benötigt aber keinen Amazon VPC-Zugriff** 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::path/to/your/S3/bucket/canary/results/folder"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::name/of/the/S3/bucket/that/contains/canary/results"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup"
            ],
            "Resource": [
            "arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/cwsyn-canary_name-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "xray:PutTraceSegments"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Resource": "*",
            "Action": "cloudwatch:PutMetricData",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": "CloudWatchSynthetics"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/KMS_key_id",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": [
                        "s3.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

 **Canary, das Amazon VPC-Zugriff nicht verwendet, AWS KMS aber benötigt** 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::path/to/your/S3/bucket/canary/results/folder"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::name/of/the/S3/bucket/that/contains/canary/results"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup"
            ],
            "Resource": [
            "arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/cwsyn-canary_name-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "xray:PutTraceSegments"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Resource": "*",
            "Action": "cloudwatch:PutMetricData",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": "CloudWatchSynthetics"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

 **Canary, AWS KMS das kanarische Artefakte verschlüsselt und außerdem Amazon VPC-Zugriff benötigt** 

Wenn Sie einen Nicht-VPC-Canary aktualisieren, um mit der Verwendung einer VPC zu beginnen, müssen Sie die Rolle des Canary aktualisieren, um die in der folgenden Richtlinie aufgeführten Netzwerkschnittstellenberechtigungen aufzunehmen.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::path/to/your/S3/bucket/canary/results/folder"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::name/of/the/S3/bucket/that/contains/canary/results"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:CreateLogGroup"
            ],
            "Resource": [
            "arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/cwsyn-canary_name-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "xray:PutTraceSegments"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Resource": "*",
            "Action": "cloudwatch:PutMetricData",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": "CloudWatchSynthetics"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/KMS_key_id",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": [
                        "s3.us-east-1.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

## AWS verwaltete Richtlinien für CloudWatch Synthetics
<a name="CloudWatch_Synthetics_IAMManagedPolicies"></a>

Um Benutzern, Gruppen und Rollen Berechtigungen hinzuzufügen, ist es einfacher, AWS verwaltete Richtlinien zu verwenden, als Richtlinien selbst zu schreiben. Es erfordert Zeit und Fachwissen, um von Kunden verwaltete IAM-Richtlinien zu erstellen, die Ihrem Team nur die benötigten Berechtigungen bieten. Um schnell loszulegen, können Sie unsere AWS verwalteten Richtlinien verwenden. Diese Richtlinien decken allgemeine Anwendungsfälle ab und sind in Ihrem AWS Konto verfügbar. Weitere Informationen zu AWS verwalteten Richtlinien finden Sie unter [AWS Verwaltete Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) und AWS verwaltete Richtlinien im IAM-Benutzerhandbuch.

AWS Dienste verwalten und aktualisieren AWS verwaltete Richtlinien. Sie können die Berechtigungen in AWS verwalteten Richtlinien nicht ändern. Dienste ändern gelegentlich die Berechtigungen in einer AWS -verwalteten Richtlinie. Diese Art von Update betrifft alle Identitäten (Benutzer, Gruppen und Rollen), an welche die Richtlinie angehängt ist.

### CloudWatch Synthetics-Updates für AWS verwaltete Richtlinien
<a name="CloudWatch_Synthetics_IAMManagedPolicies_Updates"></a>

Sehen Sie sich Details zu Aktualisierungen der AWS verwalteten Richtlinien für CloudWatch Synthetics an, seit dieser Dienst begonnen hat, diese Änderungen zu verfolgen. Abonnieren Sie den RSS-Feed auf der Seite CloudWatch Dokumentenverlauf, um automatische Benachrichtigungen über Änderungen an dieser Seite zu erhalten. 


| Änderungen | Beschreibung | Date | 
| --- | --- | --- | 
|  Redundante Aktionen wurden entfernt von **CloudWatchSyntheticsFullAccess**  |  CloudWatch Synthetics hat die ` lambda:GetLayerVersionByArn` Aktionen `s3:PutBucketEncryption` und aus der ** CloudWatchSyntheticsFullAccess**Richtlinie entfernt, da diese Aktionen mit anderen Berechtigungen in der Richtlinie überflüssig waren. Die entfernten Aktionen stellten keine Berechtigungen bereit, und es gibt keine Nettoänderung an den Berechtigungen, die von der Richtlinie gewährt werden.  | 12. März 2021 | 
|  CloudWatch Synthetics begann, Änderungen zu verfolgen  |  CloudWatch Synthetics begann, Änderungen für seine AWS verwalteten Richtlinien zu verfolgen.  | 10. März 2021 | 

 **CloudWatchSyntheticsFullAccess** 

Hier sind die Inhalte der `CloudWatchSyntheticsFullAccess`-Richtlinie:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": [
                "synthetics:*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:PutEncryptionConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::cw-syn-results-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListRoles",
                "s3:ListAllMyBuckets",
                "xray:GetTraceSummaries",
                "xray:BatchGetTraces",
                "apigateway:GET"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::cw-syn-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::aws-synthetics-library-*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::*:role/service-role/CloudWatchSyntheticsRole*"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "lambda.amazonaws.com",
                        "synthetics.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:ListAttachedRolePolicies"
            ],
            "Resource": [
                "arn:aws:iam::*:role/service-role/CloudWatchSyntheticsRole*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:GetMetricData",
                "cloudwatch:GetMetricStatistics"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricAlarm",
                "cloudwatch:DeleteAlarms"
            ],
            "Resource": [
                "arn:aws:cloudwatch:*:*:alarm:Synthetics-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:DescribeAlarms"
            ],
            "Resource": [
                "arn:aws:cloudwatch:*:*:alarm:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:GetLogRecord",
                "logs:DescribeLogStreams",
                "logs:StartQuery",
                "logs:GetLogEvents",
                "logs:FilterLogEvents",
                "logs:GetLogGroupFields"
            ],
            "Resource": [
                "arn:aws:logs:*:*:log-group:/aws/lambda/cwsyn-*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:AddPermission",
                "lambda:PublishVersion",
                "lambda:UpdateFunctionCode",
                "lambda:UpdateFunctionConfiguration",
                "lambda:GetFunctionConfiguration",
                "lambda:GetFunction",
                "lambda:DeleteFunction",
                "lambda:ListTags",
                "lambda:TagResource",
                "lambda:UntagResource"
            ],
            "Resource": [
                "arn:aws:lambda:*:*:function:cwsyn-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "lambda:GetLayerVersion",
                "lambda:PublishLayerVersion",
                "lambda:DeleteLayerVersion"
            ],
            "Resource": [
                "arn:aws:lambda:*:*:layer:cwsyn-*",
                "arn:aws:lambda:*:*:layer:Synthetics:*",
                "arn:aws:lambda:*:*:layer:Synthetics_Selenium:*",
                "arn:aws:lambda:*:*:layer:AWS-CW-Synthetics*:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "sns:ListTopics"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "sns:CreateTopic",
                "sns:Subscribe",
                "sns:ListSubscriptionsByTopic"
            ],
            "Resource": [
                "arn:*:sns:*:*:Synthetics-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:ListAliases"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:*:*:key/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:*:*:key/*",
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "s3.*.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

 **CloudWatchSyntheticsReadOnlyAccess** 

Hier sind die Inhalte der `CloudWatchSyntheticsReadOnlyAccess`-Richtlinie:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "synthetics:Describe*",
                "synthetics:Get*",
                "synthetics:List*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# Einen Benutzer auf das Anzeigen bestimmter canarys beschränken
<a name="CloudWatch_Synthetics_Canaries_Restricted"></a>

Sie können die Fähigkeit eines Benutzers einschränken, Informationen über canarys anzuzeigen, sodass er nur Informationen über die von Ihnen angegebenen canarys sehen kann. Verwenden Sie dazu eine IAM-Richtlinie mit einer ` Condition`-Anweisung ähnlich der folgenden, und fügen Sie diese Richtlinie an einen Benutzer oder eine IAM-Rolle an.

Im folgenden Beispiel wird der Benutzer darauf beschränkt, nur Informationen über ` name-of-allowed-canary-1` und `name-of-allowed-canary-2` anzuzeigen. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "synthetics:DescribeCanaries",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "synthetics:Names": [
                        "name-of-allowed-canary-1",
                        "name-of-allowed-canary-2"
                    ]
                }
            }
        }
    ]
}
```

------

CloudWatch Synthetics unterstützt das Auflisten von bis zu fünf Elementen im `synthetics:Names` Array.

Sie können auch eine Richtlinie erstellen, die ein \$1** als Platzhalter in canary-Namen verwendet, die zulässig sein sollen, wie im folgenden Beispiel:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "synthetics:DescribeCanaries",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringLike": {
                    "synthetics:Names": [
                        "my-team-canary-*"
                    ]
                }
            }
        }
    ]
}
```

------

Jeder Benutzer, der mit einer dieser Richtlinien angemeldet ist, kann die CloudWatch Konsole nicht zum Anzeigen von Canary-Informationen verwenden. Sie können Informationen zu Canaries nur für die Kanarischen Inseln einsehen, die durch die Richtlinie autorisiert wurden, und nur, wenn sie die [DescribeCanaries](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_DescribeCanaries.html)API oder den Befehl [AWS CLI describe-canaries](https://docs.aws.amazon.com/cli/latest/reference/synthetics/describe-canaries.html) verwenden.

# Erstellen eines Canarys
<a name="CloudWatch_Synthetics_Canaries_Create"></a>

**Wichtig**  
Stellen Sie sicher, dass Sie Synthetics Canaries verwenden, um nur Endpunkte zu überwachen, APIs an denen Sie Eigentümer oder Berechtigungen haben. Abhängig von den Einstellungen für die Canary-Frequenz kann es bei diesen Endpunkten ggf. zu einem erhöhten Datenverkehr kommen.

Wenn Sie die CloudWatch Konsole verwenden, um einen Canary zu erstellen, können Sie einen von bereitgestellten Blueprint verwenden, um Ihren Canary CloudWatch zu erstellen, oder Sie können Ihr eigenes Skript schreiben. Weitere Informationen finden Sie unter [Verwenden von Canary-Vorlagen](CloudWatch_Synthetics_Canaries_Blueprints.md).

Sie können auch einen Canary erstellen, CloudFormation wenn Sie Ihr eigenes Skript für den Canary verwenden. Weitere Informationen finden Sie [ AWS::Synthetics::Canary](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-synthetics-canary.html)im *AWS CloudFormation Benutzerhandbuch*.

Wenn Sie Ihr eigenes Skript schreiben, können Sie mehrere Funktionen verwenden, die CloudWatch Synthetics in eine Bibliothek integriert hat. Weitere Informationen finden Sie unter [Synthetics Laufzeitversionen](CloudWatch_Synthetics_Canaries_Library.md).

**Anmerkung**  
Wenn Sie einen Canary erstellen, ist eine der erstellten Schichten eine Synthetics-Schicht, der ` Synthetics`vorangestellt ist. Diese Schicht gehört zum Synthetics-Servicekonto und enthält den Laufzeitcode.

**So erstellen Sie ein Canary**

1. Öffnen Sie die CloudWatch Konsole unter. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)

1. Wählen Sie im Navigationsbereich **Application Signals**, **Synthetics Canaries** aus.

   

1. Wählen Sie **Canary erstellen** aus.

1. Wählen Sie eine der folgenden Optionen:
   + Um Ihr Canary auf der Grundlage eines Vorlagenskripts zu erstellen, wählen Sie die Option **Use a blueprint (Eine Vorlage verwenden)**, und wählen Sie dann die Art von Canary aus, das Sie erstellen möchten. Weitere Informationen darüber, was jeder Typ von Vorlage bewirkt, finden Sie unter [Verwenden von Canary-Vorlagen](CloudWatch_Synthetics_Canaries_Blueprints.md).
   + Um ein eigenes Node.js-Skript zum Erstellen eines benutzerdefinierten Canarys hochzuladen, wählen Sie **Upload a script (Skript hochladen)** aus.

     Sie können dann Ihr Skript in den **Script (Skript)**-Bereich ziehen oder **Browse files (Dateien durchsuchen)** auswählen, um zum Skript in Ihrem Dateisystem zu navigieren.
   + Um das Skript aus einem S3-Bucket zu importieren, wählen Sie **Import from S3 (Aus S3 importieren)** aus. Geben Sie unter **Source location (Quellspeicherort)** den vollständigen Pfad zu Ihrem Canary ein oder wählen Sie **Browse S3 (S3 durchsuchen)** aus.

     Sie müssen über `s3:GetObject`- und `s3:GetObjectVersion`-Berechtigungen für den S3-Bucket verfügen, den Sie verwenden. Der Bucket muss sich in derselben AWS -Region befinden, in der Sie das Canary erstellen.

1. Geben Sie unter **Name** einen Namen für Ihr Canary ein. Der Name wird auf vielen Seiten verwendet, daher empfehlen wir Ihnen, ihm einen beschreibenden Namen zu geben, der es von anderen Canaries unterscheidet.

1. Geben Sie unter **Application or endpoint URL (Anwendungs- oder Endpunkt-URL)** die URL ein, die das Canary testen soll. Diese URL muss das Protokoll enthalten (z. B. https://).

   Wenn das Canary einen Endpunkt auf einer VPC testen soll, müssen Sie später in diesem Verfahren auch Informationen zu Ihrer VPC eingeben. 

1. Wenn Sie ein eigenes Skript für das Canary verwenden, geben Sie unter **Lambda-Handler** den Einstiegspunkt ein, an dem das Canary beginnen soll. Informationen zum Lambda-Handler-Format unter [Synthetics-Laufzeitversionen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library.html).

1. Wählen Sie unter **Skripteditor**, **Laufzeitversion** eine Synthetics-Laufzeitversion aus, um den Canary auszuführen. Informationen zu Synthetics-Laufzeitversionen finden Sie unter [Synthetics-Laufzeitversionen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library.html).

   Unter **Browserkonfiguration** können Sie den Browser zum Testen des Canary aktivieren. Sie müssen mindestens einen Browser auswählen.

1. Wenn Sie in Ihrem Skript Umgebungsvariablen verwenden, wählen Sie **Umgebungsvariablen** und geben Sie dann einen Wert für jede in Ihrem Skript definierte Umgebungsvariable an. Weitere Informationen finden Sie unter [Umgebungsvariablen](CloudWatch_Synthetics_Canaries_WritingCanary_Nodejs_Pup.md#CloudWatch_Synthetics_Environment_Variables).

1. Wählen Sie unter **Zeitplan** aus, ob dieser Canary nur einmal, kontinuierlich mit einem Ratenausdruck oder mit einem Cron-Ausdruck geplant werden soll.
   + Wenn Sie die CloudWatch Konsole verwenden, um einen Canary zu erstellen, der kontinuierlich läuft, können Sie eine Rate zwischen einmal pro Minute und einmal pro Stunde wählen.
   + Weitere Informationen zum Schreiben eines Cron-Ausdrucks für Canary-Scheduling finden Sie unter [Planen von Canary-Durchläufen mit Cron](CloudWatch_Synthetics_Canaries_cron.md).

1. (Optional) Um einen Timeout-Wert für den canary festzulegen, wählen Sie **Zusätzliche Konfiguration** und geben Sie dann den Timeout-Wert an. Legen Sie ihn nicht kürzer als 15 Sekunden fest, um Lambda-Kaltstarts und die Zeit zu ermöglichen, die zum Hochfahren der canary-Instrumentierung benötigt wird.

1. Geben Sie unter **Datenaufbewahrung** an, wie lange Informationen über fehlgeschlagene und erfolgreiche Canary-Ausführungen aufbewahrt werden sollen. Der Bereich liegt zwischen 1 und 455 Tagen.

   Diese Einstellung wirkt sich auf den Informationsbereich aus, der von [GetCanaryRuns](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_GetCanaryRuns.html)Operationen zurückgegeben wird, sowie auf den Informationsbereich, der in der Synthetics-Konsole angezeigt wird.

   Dies hat keinen Einfluss auf die in Ihren Amazon-S3-Buckets gespeicherten Daten oder Protokolle oder Metriken, die vom Canary veröffentlicht werden.

   Unabhängig von der Aufbewahrungsfrist für Daten auf Canary hat der Umfang der in der Konsole angezeigten Informationen bestimmte Grenzen. In der Startansicht der Synthetics-Konsole sind der relative und absolute Zeitraum auf sieben Tage begrenzt. In der Synthetics-Konsolenansicht für einen bestimmten Canary ist der relative Zeitraum auf sieben Tage und der absolute Zeitraum auf 30 Tage begrenzt.

1. Wählen Sie unter **Datenspeicher** den Amazon-S3-Bucket aus, der zum Speichern der Daten aus den Canary-Ausführungen verwendet werden soll. Der Bucket-Name darf keinen Punkt (.) enthalten. Wenn Sie dieses Feld leer lassen, wird ein Amazon-S3-Bucket verwendet oder erstellt.

1. (Optional) Standardmäßig speichern AWS Kanarienvögel ihre Artefakte auf Amazon S3, und die Artefakte werden im Ruhezustand mit einem verwalteten AWS KMS Schlüssel verschlüsselt. Sie können eine andere Verschlüsselungsoption verwenden, indem Sie **Additional configuration** (Zusätzliche Konfiguration) im Abschnitt **Data Storage** (Datenspeicher) auswählen. Sie können dann den Schlüsseltyp auswählen, der für die Verschlüsselung verwendet werden soll. Weitere Informationen finden Sie unter [Verschlüsseln von Canary-Artefakten](CloudWatch_Synthetics_artifact_encryption.md). 

1. Wählen Sie unter **Access permissions (Zugriffsberechtigungen)** aus, ob eine IAM-Rolle zum Ausführen des Canarys erstellt oder eine vorhandene Rolle verwendet werden soll.

   Wenn Sie CloudWatch Synthetics die Rolle erstellen lassen, enthält sie automatisch alle erforderlichen Berechtigungen. Wenn Sie die Rolle selbst erstellen möchten, finden Sie unter [Erforderliche Rollen und Berechtigungen für Canarys](CloudWatch_Synthetics_Canaries_CanaryPermissions.md) Informationen zu den erforderlichen Berechtigungen.

   Wenn Sie beim Erstellen des Canaries die CloudWatch Konsole verwenden, um eine Rolle für einen Canary zu erstellen, können Sie die Rolle nicht für andere Canaries wiederverwenden, da diese Rollen nur für einen Canary spezifisch sind. Wenn Sie eine Rolle manuell erstellt haben, die für mehrere Canarys geeignet ist, können Sie diese vorhandene Rolle verwenden.

   Um eine vorhandene Rolle zu verwenden, müssen Sie über die `iam:PassRole`-Berechtigung verfügen, um diese Rolle an Synthetics und Lambda übergeben zu können. Darüber hinaus müssen Sie über die `iam:GetRole`-Berechtigung verfügen.

1. (Optional) Wählen Sie unter **Alarms (Alarme)** aus, ob CloudWatch-Standardalarme für dieses Canary erstellt werden sollen. Wenn Sie Alarme erstellen möchten, werden diese mit der folgenden Namenskonvention erstellt: `Synthetics-Alarm-canaryName -index `

   `index` ist eine Zahl, die jeden unterschiedlichen Alarm darstellt, der für diesen Canary erstellt wurde. Der erste Alarm hat einen Index von 1, der zweite Alarm hat einen Index von 2 usw.

1. (Optional) Um dieses Canary einen Endpunkt testen zu lassen, der sich auf einer VPC befindet, wählen Sie **VPC settings (VPC-Einstellungen)** und gehen dann wie folgt vor:

   1. Wählen Sie die VPC aus, die den Endpunkt hostet.

   1. Wählen Sie ein oder mehrere Subnetze auf Ihrer VPC aus. Sie müssen ein privates Subnetz auswählen, da eine Lambda-Instance nicht so konfiguriert werden kann, dass sie in einem öffentlichen Subnetz ausgeführt wird, wenn der Lambda-Instance während der Ausführung keine IP-Adresse zugewiesen werden kann. Weitere Informationen finden Sie unter [Konfigurieren einer Lambda-Funktion für den Zugriff auf Ressourcen in einer VPC](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html).

   1. Wählen Sie eine oder mehrere Sicherheitsgruppen auf Ihrer VPC aus.

   1. Um ausgehenden IPv6 Datenverkehr für diesen Canary zuzulassen, wählen Sie Traffic für ** IPv6Dual-Stack-Subnetze zulassen**. Auf diese Weise kann der Canary sowohl Endgeräte als auch Endgeräte überwachen, die IPv6 Dual-Stack-fähig sind. IPv6

      Sie können Endpunkte außerhalb Ihrer VPC überwachen, indem Sie den Canary-Benutzern Internetzugang gewähren und die VPC-Subnetze entsprechend konfigurieren. Weitere Informationen finden Sie unter [Ausführen eines Canarys in einer VPC](CloudWatch_Synthetics_Canaries_VPC.md).

   Wenn sich der Endpunkt auf einer VPC befindet, müssen Sie Ihren Canary so einrichten, dass er Informationen an CloudWatch Amazon S3 sendet. Weitere Informationen finden Sie unter [Ausführen eines Canarys in einer VPC](CloudWatch_Synthetics_Canaries_VPC.md).

1. (Optional) Fügen Sie unter **Tags** ein oder mehrere Schlüssel/Wert-Paare als Tags für dieses Canary hinzu. Mithilfe von Tags können Sie Ihre AWS Ressourcen identifizieren und organisieren und Ihre AWS Kosten verfolgen. Weitere Informationen finden Sie unter [Markierung von Ressourcen von Amazon CloudWatch Events](CloudWatch-Tagging.md).

   Wenn Sie möchten, dass die Tags, die Sie auf den Canary anwenden, auch auf die Lambda-Funktion angewendet werden, die der Canary verwendet, wählen Sie **Lambda-Funktion** unter **Tag-Replikation**. Wenn Sie diese Option wählen, synchronisiert CloudWatch Synthetics die Tags auf dem Canary und die Lambda-Funktion:
   + Synthetics wendet dieselben Tags, die Sie hier angeben, sowohl auf Ihre Canary- als auch auf Ihre Lambda-Funktion an.
   + Wenn Sie später die Tags des Canary aktualisieren und diese Option aktiviert lassen, ändert Synthetics die Tags in Ihrer Lambda-Funktion, damit sie mit dem Canary synchron bleiben. 

1. (Optional) Wählen Sie unter **Aktive Verfolgung** aus, ob die aktive X-Ray-Verfolgung für diesen Canary aktiviert werden soll. Aktive Ablaufverfolgung ist nur für Puppeteer- und Java-Laufzeiten verfügbar. Weitere Informationen finden Sie unter [Canary- und X-Ray-Ablaufverfolgung](CloudWatch_Synthetics_Canaries_tracing.md).

## Ressourcen, die für Canaries erstellt werden
<a name="CloudWatch_Synthetics_Canaries_Resources_Created"></a>

Wenn Sie ein Canary erstellen, werden die folgenden Ressourcen erstellt:
+ Eine IAM-Rolle mit dem Namen `CloudWatchSyntheticsRole-canary-name -uuid` (wenn Sie die CloudWatch Konsole verwenden, um den Canary zu erstellen und angeben, dass eine neue Rolle für den Canary erstellt werden soll)
+ Eine IAM-Richtlinie mit dem Namen `CloudWatchSyntheticsPolicy- canary-name-uuid`.
+ Ein S3-Bucket mit dem Namen `cw-syn-results-accountID -region`.
+ Alarme mit dem Namen `Synthetics-Alarm-MyCanaryName`, wenn Alarme für das Canary erstellt werden sollen.
+ Lambda-Funktionen und -Ebenen, wenn Sie eine Vorlage verwenden, um das Canary zu erstellen. Diese Ressourcen haben das Präfix `cwsyn-MyCanaryName`.
+ CloudWatch Protokolliert Protokollgruppen mit dem Namen`/aws/lambda/cwsyn-MyCanaryName -randomId`.

# Verwenden von Canary-Vorlagen
<a name="CloudWatch_Synthetics_Canaries_Blueprints"></a>

Dieser Abschnitt enthält Details zu den jeweiligen Canary-Vorlagen und zu den Aufgaben, für die jede Vorlage am besten geeignet ist. Vorlagen werden für die folgenden Canary-Arten bereitgestellt: 

**Topics**
+ [Heartbeat-Überwachung](#CloudWatch_Synthetics_Canaries_Blueprints_Heartbeat)
+ [API-Canary](#CloudWatch_Synthetics_Canaries_Blueprints_API)
+ [Broken Link Checker](#CloudWatch_Synthetics_Canaries_Blueprints_Broken_Links)
+ [Blueprint für die visuelle Überwachung](#CloudWatch_Synthetics_Canaries_Blueprints_VisualTesting)
+ [Canary-Recorder](#CloudWatch_Synthetics_Canaries_Blueprints_Recorder)
+ [GUI Workflow Builder](#CloudWatch_Synthetics_Canaries_Blueprints_GUI_Workflow)
+ [Blueprint für mehrere Prüfungen](#CloudWatch_Synthetics_Canaries_Blueprints_Multichecks_Blueprint)
+ [Blueprint Canary für mehrere Checks erstellen](CloudWatch_Synthetics_Canaries_MultiCheck_Blueprint.md)

Wenn Sie eine Vorlage zum Erstellen eines Canary verwenden und die Felder in der CloudWatch-Konsole ausfüllen, wird im Bereich **Script editor (Skript-Editor)** der Seite das Canary, das Sie erstellen, als Node.js-Skript angezeigt. Sie können Ihr Canary in diesem Bereich auch bearbeiten, um es weiter anzupassen.

## Heartbeat-Überwachung
<a name="CloudWatch_Synthetics_Canaries_Blueprints_Heartbeat"></a>

Über Heartbeat-Skripte werden die angegebene URL geladen und ein Screenshot der Seite sowie eine HTTP-Archivdatei (HAR-Datei) gespeichert. Sie speichern auch Protokolle der Zugriffe. URLs 

Sie können die HAR-Dateien verwenden, um sich detaillierte Leistungsdaten über die Webseiten anzeigen zu lassen. Sie können die Liste der Web-Anforderungen analysieren und Performance-Probleme wie die Ladezeit für ein Element erfassen.

Wenn dein Canary die Runtime-Version `syn-nodejs-puppeteer-3.1` oder eine neuere Version verwendet, kannst du den Heartbeat-Monitoring-Blueprint verwenden, um mehrere URLs zu überwachen URLs und dir den Status, die Dauer, die zugehörigen Screenshots und die Fehlerursache für jede URL in der Schrittzusammenfassung des Canary-Run-Berichts anzusehen.

## API-Canary
<a name="CloudWatch_Synthetics_Canaries_Blueprints_API"></a>

Über API Canarys können die grundlegenden Lese- und Schreibfunktionen einer REST-API getestet werden. REST steht für *Representational State Transfer* und ist eine Reihe von Regeln, die Entwickler bei der Erstellung einer API befolgen. Eine dieser Regeln besagt, dass ein Link zu einer bestimmten URL einen Datenabschnitt zurückgeben soll.

Canaries kann mit allen Funktionen arbeiten APIs und alle Arten von Funktionen testen. Jeder Canary kann mehrere API-Aufrufe ausführen.

Auf den Kanarischen Inseln, die eine Runtime-Version `syn-nodejs-2.2` oder eine neuere Version verwenden, unterstützt der API Canary Blueprint mehrstufige Canaries, die Ihre Schritte als HTTP überwachen. APIs Sie können mehrere auf einem einzigen Canary APIs testen. Jeder Schritt ist eine separate Anforderung, die auf eine andere URL zugreifen kann, unterschiedliche Header verwenden und unterschiedliche Regeln dafür verwenden kann, ob Kopfzeilen und Antwortkörper erfasst werden. Indem Sie Kopfzeilen und Antworttext nicht erfassen, können Sie verhindern, dass sensible Daten aufgezeichnet werden. 

Jede Anforderung in einem API-Canary besteht aus folgenden Informationen:
+ aus dem *Endpoint (Endpunkt)*, d. h. die URL, die Sie anfordern.
+ aus der *method (Methode)*, d. h. die Art der Anforderung, die an den Server gesendet wird. REST APIs unterstützt die Operationen GET (Lesen), POST (Schreiben), PUT (Update), PATCH (Update) und DELETE (Löschen).
+ aus den *headers (Headern)*, die Informationen sowohl für den Client als auch für den Server bereitstellen. Sie werden zur Authentifizierung und Bereitstellung von Informationen über den Body-Inhalt verwendet. Eine Liste der gültigen Header finden Sie unter [HTTP-Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers).
+ Die *data (Daten)* (oder der *Body*), die Informationen enthalten, die an den Server gesendet werden sollen. Diese werden nur für POST-, PUT-, PATCH- oder DELETE-Anforderungen verwendet.

**Anmerkung**  
API-Canary-Vorlagen werden von Playwright-Laufzeiten nicht unterstützt.

Die API-Canary-Vorlage unterstützt GET- und POST-Methoden. Wenn Sie diese Vorlage verwenden, müssen Sie Header angeben. Sie können beispielsweise einen **Schlüssel** angeben **Authorization** und die erforderlichen Autorisierungsdaten als **Wert** für diesen Schlüssel angeben.

Wenn Sie eine POST-Anforderung testen, geben Sie auch den Inhalt, der veröffentlicht werden soll, im **Datenfeld** an.

 **Integration mit API Gateway** 

Der API-Blueprint ist in Amazon API Gateway integriert. Auf diese Weise können Sie eine API Gateway-API und Staging aus demselben AWS Konto und derselben Region wie der Canary auswählen oder eine Swagger-Vorlage für die konto- und regionsübergreifende API-Überwachung von API Gateway hochladen. Sie können dann die restlichen Details in der Konsole auswählen, um den Canary zu erstellen, anstatt sie von Grund auf neu einzugeben. Weitere Informationen zum API Gateway finden Sie unter [Was ist Amazon API Gateway?](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html). 

 **Verwenden einer privaten API** 

Sie können in Amazon API Gateway einen Canary erstellen, der eine private API verwendet. Weitere Informationen finden Sie unter [Private API in Amazon API Gateway erstellen](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html).

## Broken Link Checker
<a name="CloudWatch_Synthetics_Canaries_Blueprints_Broken_Links"></a>

Der Broken Link Checker sammelt alle Links innerhalb der URL, die Sie mit `document.getElementsByTagName('a')` testen. Er testet nur bis zu der von Ihnen angegebenen Anzahl von Links, wobei die URL selbst als erster Link gezählt wird. Wenn Sie beispielsweise alle Links auf einer Seite überprüfen möchten, die fünf Links enthält, müssen Sie angeben, dass das Canary sechs Links verfolgen soll.

Canarys für Broken Link Checker, die mit der `syn-nodejs-2.0-beta`-Laufzeit oder höher erstellt wurden, unterstützen die folgenden zusätzlichen Features:
+ Stellt einen Bericht bereit, der die überprüften Links, Statuscode, Fehlergrund (falls vorhanden) sowie Screenshots der Quell- und Zielseite enthält.
+ Wenn Sie Canary-Ergebnisse anzeigen, können Sie filtern, um nur die fehlerhaften Links anzuzeigen, und dann den Link basierend auf dem Grund des Fehlers beheben.
+ Diese Version erfasst für jeden Link kommentierte Quellseiten-Screenshots und hebt den Anker hervor, in dem der Link gefunden wurde. Ausgeblendete Komponenten werden nicht mit Anmerkungen versehen.
+ Sie können diese Version so konfigurieren, dass Screenshots von Quell- und Zielseiten, nur Quellseiten oder nur Zielseiten erfasst werden.
+ Diese Version behebt ein Problem in der früheren Version, bei dem das Canary-Skript nach dem ersten gebrochenen Link stoppt, selbst wenn mehr Links von der ersten Seite gescrapt werden.

**Anmerkung**  
Vorlagen zur Überprüfung defekter Links werden von Playwright-Laufzeiten nicht unterstützt.

Wenn Sie einen vorhandenen Canary mit `syn-1.0` aktualisieren möchten, um die neue Laufzeit zu verwenden, müssen Sie den Canary löschen und neu erstellen. Durch das Aktualisieren eines vorhandenen Canarys auf die neue Laufzeitumgebung werden diese Features nicht verfügbar gemacht.

Ein Broken Link Checker Canary (Canary für fehlerhafte Links) erkennt die folgenden Arten von Verbindungsfehlern:
+ 404 Seite nicht gefunden
+ Ungültiger Hostname
+ Falsche URL. In der URL fehlt z. B. eine Klammer, sie weist zusätzliche Schrägstriche auf oder es wird das falsche Protokoll verwendet.
+ Ungültiger HTTP-Antwortcode
+ Der Hostserver gibt leere Antworten ohne Inhalt und ohne Antwortcode zurück.
+ Die HTTP-Anforderungen weisen während der Canary-Ausführung ständig Zeitüberschreitungen auf.
+ Der Host bricht immer wieder Verbindungen ab, weil er falsch konfiguriert oder überlastet ist.

## Blueprint für die visuelle Überwachung
<a name="CloudWatch_Synthetics_Canaries_Blueprints_VisualTesting"></a>

Der visuelle Überwachungs-Blueprint enthält Code, um Screenshots, die während eines Canary-Laufs aufgenommen wurden, mit Screenshots zu vergleichen, die während eines Baseline-Canary-Laufs aufgenommen wurden. Wenn die Diskrepanz zwischen den beiden Screenshots einen Schwellenwert überschreitet, schlägt der Canary fehl. Die visuelle Überwachung wird auf Canaries unterstützt, auf denen **syn-puppeteer-node-3.2** und höher ausgeführt wird. Es wird derzeit nicht in Canarys unterstützt, die Python und Selenium ausführen oder Playwright-Laufzeiten nutzen.

Der Blueprint für die visuelle Überwachung enthält die folgende Codezeile im Canary-Standardskript für Blueprints, die die visuelle Überwachung ermöglicht.

```
syntheticsConfiguration.withVisualCompareWithBaseRun(true);
```

Wenn der Canary zum ersten Mal erfolgreich ausgeführt wird, nachdem diese Zeile zum Skript hinzugefügt wurde, verwendet er die während dieser Ausführung erstellten Screenshots als Vergleichsbasis. Nach dem ersten Canary-Run kannst du die CloudWatch Konsole verwenden, um den Canary zu bearbeiten, um einen der folgenden Schritte auszuführen:
+ Legen Sie den nächsten Lauf des Canarys als neue Basislinie fest.
+ Zeichnen Sie Grenzen auf dem aktuellen Baseline-Screenshot, um Bereiche des Screenshots festzulegen, die bei visuellen Vergleichen ignoriert werden sollen.
+ Entfernen Sie einen Screenshot, der für die visuelle Überwachung verwendet wird.

Weitere Informationen zur Verwendung der CloudWatch Konsole zum Bearbeiten eines Canary finden Sie unter[Einen Canary bearbeiten oder löschen](synthetics_canaries_deletion.md).

Sie können den Canary-Run, der als Baseline verwendet wird, auch ändern, indem Sie die `lastrun` Parameter ` nextrun` oder verwenden oder eine Canary-Run-ID in der [UpdateCanary](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_UpdateCanary.html)API angeben.

Wenn Sie den Blueprint für die visuelle Überwachung verwenden, geben Sie die URL ein, unter der der Screenshot erstellt werden soll, und geben einen Differenzschwellenwert als Prozentsatz an. Nach dem Baseline-Lauf lösen zukünftige Läufe des Canary, die einen visuellen Unterschied größer als dieser Schwellenwert erkennen, einen Canary-Fehler aus. Nach dem Baseline-Lauf können Sie den Canary auch bearbeiten, um Grenzen auf dem Baseline-Screenshot zu „zeichnen“, die Sie während der visuellen Überwachung ignorieren möchten.

Die visuelle Überwachungsfunktion basiert auf dem ImageMagick Open-Source-Software-Toolkit. Weitere Informationen finden Sie unter [ ImageMagick](https://imagemagick.org/index.php).

## Canary-Recorder
<a name="CloudWatch_Synthetics_Canaries_Blueprints_Recorder"></a>

Mit dem Canary Recorder-Blueprint können Sie den CloudWatch Synthetics Recorder verwenden, um Ihre Klick- und Tippaktionen auf einer Website aufzuzeichnen und automatisch ein Node.js -Skript zu generieren, mit dem Sie einen Canary erstellen können, der dieselben Schritte ausführt. Der CloudWatch Synthetics Recorder ist eine von Amazon bereitgestellte Google Chrome-Erweiterung. Der Canary Recorder wird für Canarys, die die Playwright-Laufzeit verwenden, nicht unterstützt.

**Credits**: Der CloudWatch Synthetics Recorder basiert auf dem [Headless](https://github.com/checkly/headless-recorder) Recorder.

Weitere Informationen finden Sie unter [Verwenden des CloudWatch Synthetics Recorders für Google Chrome](CloudWatch_Synthetics_Canaries_Recorder.md).

## GUI Workflow Builder
<a name="CloudWatch_Synthetics_Canaries_Blueprints_GUI_Workflow"></a>

Mit der GUI-Workflow-Builder-Vorlage wird überprüft, ob Aktionen auf Ihrer Webseite ausgeführt werden können. Wenn Sie zum Beispiel eine Webseite mit einem Anmeldeformular haben, kann das Canary die Benutzer- und Passwortfelder ausfüllen und das Formular abschicken, um zu überprüfen, ob die Webseite ordnungsgemäß funktioniert.

Wenn Sie eine Vorlage verwenden, um diesen Typ von Canary zu erstellen, geben Sie die Aktionen an, die das Canary auf der Webseite ausführen soll. Folgende Aktionen können Sie verwenden:
+ **Click** (Klicken) – Wählt das von Ihnen angegebene Element aus und simuliert einen Benutzer, der auf das Element klickt oder es auswählt.

  Um das Element in einem Skript „Node.js“ anzugeben, verwenden Sie `[id=]` oder ` a[class=]`.

  Um das Element in einem Python-Skript anzugeben, verwenden Sie `xpath //*[@id=]` oder ` //*[@class=]`.
+ **Verify selector (Auswahl überprüfen)** – Überprüft, ob das angegebene Element auf der Webseite vorhanden ist. Dieser Test ist nützlich, um zu überprüfen, ob eine vorherige Aktion dazu geführt hat, dass die Seite mit den richtigen Elementen ausgefüllt wird.

  Um das zu verifizierende Element in einem Skript „Node.js“ anzugeben, verwenden Sie `[id=]` oder ` a[class=]`.

  Um das zu überprüfende Element in einem Python-Skript anzugeben, verwenden Sie `xpath //*[@id=]` oder `//*[class=]`.
+ **Verify text** (Text überprüfen) – Überprüft, ob die angegebene Zeichenfolge im Zielelement enthalten ist. Dieser Test ist nützlich, um zu überprüfen, ob eine vorherige Aktion dazu geführt hat, dass der richtige Text angezeigt wird.

  Um das Element in einem Node.js-Skript anzugeben, verwenden Sie ein Format wie ` div[@id=]//h1`, da diese Aktion die `waitForXPath`-Funktion in Puppeteer verwendet.

  Um das Element in einem Python-Skript anzugeben, verwenden Sie das xpath-Format wie ` //*[@id=] ` oder //\$1[@class=], da diese Aktion die `implicitly_wait`-Funktion in Selenium verwendet.
+ **Input text** (Eingabetext) – Schreibt den angegebenen Text in das Zielelement.

  Um das zu verifizierende Element in einem Skript „Node.js“ anzugeben, verwenden Sie `[id=]` oder ` a[class=]`.

  Um das zu überprüfende Element in einem Python-Skript anzugeben, verwenden Sie `xpath //*[@id=]` oder `//*[@class=]`.
+ **Click with navigation** (Klicken bei Navigation) – Wartet auf das Laden der gesamten Seite, nachdem das angegebene Element ausgewählt wurde. Dies ist besonders nützlich, wenn Sie die Seite neu laden müssen.

  Um das Element in einem Skript „Node.js“ anzugeben, verwenden Sie `[id=]` oder ` a[class=]`.

  Um das Element in einem Python-Skript anzugeben, verwenden Sie `xpath //*[@id=]` oder ` //*[@class=]`.

Der folgende Blueprint verwendet beispielsweise Node.js. Es wird auf zuerst auf **firstButton** in der angegebenen URL geklickt und überprüft, ob die erwartete Auswahl mit dem erwarteten Text angezeigt wird, der Name `Test_Customer` wird in das Feld **Name** eingegeben, es wird auf die Schaltfläche **Login (Anmelden)** geklickt und dann überprüft, ob die Anmeldung erfolgreich ist, indem auf der nächsten Seite nach dem Text **Welcome** gesucht wird.

![\[Die Seite „Canary erstellen“ in der Konsole, mit ausgefüllten Feldern für die GUI Workflow-Vorlage.\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/images/canary_create_gui_workflow.PNG)


GUI-Workflow-Canaries, die die folgenden Laufzeiten verwenden, bieten auch eine Zusammenfassung der Schritte, die für jeden Canary-Lauf ausgeführt werden. Sie können die Screenshots und die Fehlermeldung, die jedem Schritt zugeordnet sind, verwenden, um die Ursache des Fehlers zu finden.
+ `syn-nodejs-2.0` oder höher
+ `syn-python-selenium-1.0` oder höher

## Blueprint für mehrere Prüfungen
<a name="CloudWatch_Synthetics_Canaries_Blueprints_Multichecks_Blueprint"></a>

Der Multi-Check-Blueprint vereinfacht die Erstellung von Canaries. Er reduziert die Kosten durch die Verwendung einer einfachen JSON-Konfiguration, die out-of-the-box Funktionen für die Durchführung von HTTP-, DNS-, SSL- und TCP-Prüfungen bietet. Sie können bis zu 10 Prüfungen konfigurieren. Konfigurieren Sie jede Prüfung als numerischen Schritt, der sequentiell ausgeführt wird, um ein klares Verständnis des Kanarienflusses zu ermöglichen.

Blueprint-Unterstützung für Mehrfachprüfungen:
+ Grundlegende HTTP-Anfragen, TCP-Anfragen, Validierung von DNS-Datensätzen und Überwachung von SSL-Zertifikaten
+ In Secrets Manager integrierte HTTP-Authentifizierungsmethoden wie Basic OAuth, API Key und Sigv4
+ Assertionen für jede Prüfung

Weitere Informationen finden Sie unter [Erstellen eines Canarys](CloudWatch_Synthetics_Canaries_Create.md).

# Blueprint Canary für mehrere Checks erstellen
<a name="CloudWatch_Synthetics_Canaries_MultiCheck_Blueprint"></a>

Der Amazon CloudWatch Synthetics Multi Checks Blueprint hilft Ihnen dabei, einen Synthetics-Canary zu erstellen, indem es eine einfache JSON-Konfiguration bereitstellt. Sie können Kosten sparen, indem Sie bis zu 10 verschiedene Arten von HTTP/DNS/SSL/TCP Prüfungen schrittweise nacheinander bündeln. Jede Prüfung enthält Behauptungen, die eine grundlegende Überprüfung anhand eines Prüfergebnisses ermöglichen.

Multi Checks Canaries sind für einfache Anwendungsfälle konzipiert, die nur grundlegende Prüfungen ohne einen Headless-Browser erfordern. Für komplexere Anwendungsfälle schauen Sie sich die anderen Canary-Typen an, die Amazon CloudWatch Synthetics anbietet.

**Topics**
+ [Voraussetzungen](#CloudWatch_Synthetics_MultiCheck_Prerequisites)
+ [Einschränkungen](#CloudWatch_Synthetics_MultiCheck_Limitations)
+ [Verpackungsstruktur, JSON-Schema und Konfigurationseinstellungen](#CloudWatch_Synthetics_MultiCheck_Packaging)
+ [Einen Multi-Check-Canary in erstellen AWS-Managementkonsole](#CloudWatch_Synthetics_MultiCheck_Console)
+ [Mit AWS Synthetics einen Multi-Check-Kanarienvogel erstellen APIs](#CloudWatch_Synthetics_MultiCheck_API)
+ [Einen Canary-in mit mehreren Check-Ins erstellen CloudFormation](#CloudWatch_Synthetics_MultiCheck_CloudFormation)
+ [Authentifizierungs-Konfiguration](#CloudWatch_Synthetics_MultiCheck_Authentication)
+ [Fehlerbehebung](#CloudWatch_Synthetics_MultiCheck_Troubleshooting)

## Voraussetzungen
<a name="CloudWatch_Synthetics_MultiCheck_Prerequisites"></a>
+ Muss syn-nodejs-3.0\$1 verwenden, um einen Multi-Check-Canary zu erstellen
+ Wenn Sie die Authentication and Secrets Manager Manager-Konfiguration verwenden, müssen Sie sicherstellen, dass der Canary [ ExecutionRoleArn](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_CreateCanary.html)die Berechtigungen für den Zugriff auf diese Geheimnisse gewährt
+ Wenn Sie die Authentifizierung für Sigv4 verwenden, müssen Sie sicherstellen, dass der Canary [ ExecutionRoleArn](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_CreateCanary.html)die Berechtigungen für den Zugriff auf die entsprechende Rolle gewährt

## Einschränkungen
<a name="CloudWatch_Synthetics_MultiCheck_Limitations"></a>
+ Die Größe der HTTP-Antwort darf nicht größer als 1 MB sein
+ Maximal 10 definierte Variablen.
+ Bei Verwendung des JSON-RFC kann das Checks JSON doppelte Felder enthalten, sofern jedoch nur das letzte sequentielle Feld verwendet wird
+ In einem Canary mit mehreren Prüfungen werden standardmäßig Metriken mit mehreren Prüfschritten angezeigt, um die Verfügbarkeit der einzelnen Checks leicht zu ermitteln. AWS-Managementkonsole Wenn Schecks entfernt werden, zeigt dieses Diagramm die Checks möglicherweise immer noch im Verfügbarkeitsdiagramm an, bis die Metrik für mindestens 3 Stunden nicht mehr aktiv ist

## Verpackungsstruktur, JSON-Schema und Konfigurationseinstellungen
<a name="CloudWatch_Synthetics_MultiCheck_Packaging"></a>

Die JSON-Checks-Konfiguration, die für den Canary verwendet wird, muss benannt ` blueprint-config.json` werden. Die Konfiguration muss dem [Schema](https://github.com/aws-samples/synthetics-canary-local-debugging-sample/tree/main) und den Anweisungen unter folgen[Schreiben einer JSON-Konfiguration für den Blueprint Node.js Multi Checks](CloudWatch_Synthetics_WritingCanary_Multichecks.md).

Komprimieren Sie die Datei `blueprint-config.json` in eine ZIP-Datei und stellen Sie sie in einem der folgenden Erstellungs-Workflows bereit. Wenn es eine `synthetics.json` Konfiguration gibt, wird sie auch in derselben ZIP-Datei komprimiert. Im Folgenden finden Sie ein Beispiel für eine Zip-Datei mit dem Namen`multi-checks.zip`.

```
multi-checks.zip
├── blueprint-config.json
└── synthetics.json
```

## Einen Multi-Check-Canary in erstellen AWS-Managementkonsole
<a name="CloudWatch_Synthetics_MultiCheck_Console"></a>

1. Öffnen Sie die Amazon CloudWatch Synthetics-Konsole.

1. Wählen Sie **Canary erstellen** aus.

1. Wählen **Sie unter Blueprint verwenden** die Option **Multi** Checks aus.

   Unter **Checks konfigurieren** findest du zwei Tabs: **Checks** und **Canary-Konfiguration**.

1. Wählen Sie die Runtime-Version **syn-nodejs-3.0** oder höher aus.

1. Gehen Sie wie unten beschrieben vor, um die Prüfung [Schreiben einer JSON-Konfiguration für den Blueprint Node.js Multi Checks](CloudWatch_Synthetics_WritingCanary_Multichecks.md) zu beschreiben, die Sie durchführen möchten. Alternativ bietet Ihnen die Konsole eine Standard-JSON-Konfiguration, auf der Sie aufbauen können.

1. Wählen Sie **Canary erstellen** aus.

## Mit AWS Synthetics einen Multi-Check-Kanarienvogel erstellen APIs
<a name="CloudWatch_Synthetics_MultiCheck_API"></a>

Verwenden Sie die `CreateCanary` API und geben Sie innerhalb des `Code` Parameters das field/value `BlueprintTypes="multi-checks"` anstelle von an. ` Handler` Wenn `BlueprintTypes` sowohl als auch angegeben `Handler` sind, `ValidationException` wird a angezeigt. Die bereitgestellte Runtime-Version muss `syn-nodejs-3.0` oder höher sein.

```
aws synthetics create-canary \
    --name my-multi-check-canary \
    --code ZipFile="ZIP_BLOB",BlueprintTypes="multi-checks" \
    --runtime-version syn-nodejs-3.0 \
    ...

// Or if you wanted to use S3 to provide your code.

aws synthetics create-canary \
    --name my-multi-check-canary \
    --code S3Bucket="my-code-bucket",S3Key="my-zip-code-key",BlueprintTypes="multi-checks" \
    ...
```

## Einen Canary-in mit mehreren Check-Ins erstellen CloudFormation
<a name="CloudWatch_Synthetics_MultiCheck_CloudFormation"></a>

Geben Sie in Ihrer CloudFormation Vorlage für einen Canary mit mehreren Checks innerhalb des `Code` Parameters das field/value `BlueprintTypes="multi-checks"` anstelle von an. ` Handler` Wenn `BlueprintTypes` sowohl als auch angegeben `Handler` sind, `ValidationException` wird a angezeigt. Die bereitgestellte Runtime-Version muss sein`syn-nodejs-3.0 or later`. 

Eine Beispielvorlage:

```
SyntheticsCanary:
    Type: 'AWS::Synthetics::Canary'
    Properties:
      Name: MyCanary
      RuntimeVersion: syn-nodejs-3.0
      Schedule: {Expression: 'rate(5 minutes)', DurationInSeconds: 3600}
      ...
      Code:
        S3Bucket: "my-code-bucket"
        S3Key: "my-zip-code-key"
        BlueprintTypes: ["multi-checks"]
      ...
```

## Authentifizierungs-Konfiguration
<a name="CloudWatch_Synthetics_MultiCheck_Authentication"></a>

Wenn dein Canary HTTP-Anfragen an einen authentifizierten Endpunkt sendet, kannst du die Schritte deines Blueprint Canary so konfigurieren, dass er einen von vier Authentifizierungstypen verwendet: Basic, API Key, OAuth Client Credentials und SigV4. Anstatt selbst Anforderungsheader einzurichten, können Sie in Ihrer Blueprint-Definition einen Authentifizierungstyp angeben, und Synthetics folgt dem angegebenen Authentifizierungstyp, um die Komponenten Ihrer HTTP-Anfrage mit den bereitgestellten Authentifizierungsinformationen zu füllen.

Sie geben in Ihrem Blueprint-Schritt im Abschnitt Authentifizierung einen Authentifizierungstyp an. Sie geben das Authentifizierungsschema an, das Sie verwenden möchten, die Eigenschaften, die für das von Ihnen gewählte Authentifizierungsschema erforderlich sind, und Synthetics verwendet die bereitgestellten Informationen, um einen Authentifizierungsheader für Ihre HTTP-Anfrage zu erstellen.

Da das Speichern von Geheimnissen (wie Passwörtern oder API-Schlüsseln) im Klartext ein Sicherheitsproblem darstellt, unterstützt Synthetics die Integration mit AWS Secrets Manager. Wenn Sie eine HTTP-Anfrage in einem Synthetics-Blueprint-Canary authentifizieren möchten, können Sie auf das Secret verweisen, in dem Ihre Authentifizierungsinformationen gespeichert sind, und Synthetics kümmert sich darum, das Geheimnis abzurufen und in Ihrem Canary zwischenzuspeichern. Dieser Ansatz stellt Synthetics Geheimnisse zur Verfügung und bewahrt Ihre Geheimnisse gleichzeitig sicher auf, ohne sie in Ihrer Blueprint-Konfiguration im Klartext anzugeben.

Weitere Informationen zu finden Sie AWS Secrets Manager unter [Was ist? AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)

### Grundlegende Authentifizierung
<a name="CloudWatch_Synthetics_MultiCheck_BasicAuth"></a>

Synthetics implementiert das in RFC 7617 definierte grundlegende HTTP-Authentifizierungsschema. Das Verfahren funktioniert folgendermaßen:
+ Ein Paar aus Benutzername und Passwort wird aus der Blueprint-Konfiguration bereitgestellt.
+ Der Benutzerpass wird durch die Verkettung des Benutzernamens, eines einzelnen Doppelpunkts („:“) und des Kennworts erstellt.
+ Der Benutzerpass ist UTF-8-kodiert und wird dann in eine Base64-kodierte Zeichenfolge umgewandelt.
+ Dieser Base64-kodierte Benutzerpass wird im Header „Authorization“ mit dem folgenden Format bereitgestellt: Authorization: Basic \$1base64-\$1 encoded-user-pass

Wenn der Benutzeragent beispielsweise die Benutzer-ID „Aladdin“ und das Passwort „open sesame“ senden möchte, verwendet er das folgende Header-Feld: Authorization: Basic ftZQ== QWxh ZGRpbjpvc GVu IHNlc2

Beispielkonfiguration:

```
"Authentication": {
    "type": "BASIC",
    "username": MY_USERNAME, // Required
    "password": MY_PASSWORD // Required
}
```

### API-Schlüsselauthentifizierung
<a name="CloudWatch_Synthetics_MultiCheck_APIKeyAuth"></a>

Sie können einen API-Schlüssel zur Authentifizierung Ihrer HTTP-Anfragen angeben. Wenn Sie die API-Schlüsselauthentifizierung verwenden, wird Ihr bereitgestellter API-Schlüssel in den HTTP-Header „X-API-Key“ eingefügt. Wenn Sie eine benutzerdefinierte Ressource haben, die in einem anderen Header nach API-Schlüssel-Headern sucht, können Sie optional einen anderen Header-Namen angeben, in den Synthetics den API-Schlüssel einfügen soll.

Beispielkonfiguration:

```
"Authentication": {
    "type": "API_KEY",
    "apiKey": S0A1M2P3L4E5, // Required
    "header": X-Specific-Header // Optional, defaults to "X-API-Key"
}
```

### SigV4-Authentifizierung
<a name="CloudWatch_Synthetics_MultiCheck_SigV4Auth"></a>

AWS Sigv4 (Signature Version 4) ist das AWS Signaturprotokoll zum Hinzufügen von Authentifizierungsinformationen zu API-Anfragen. AWS Um eine SIGV4-authentifizierte Anfrage zu stellen, müssen Sie die Region und den Dienst angeben, an den Sie Anfragen stellen, sowie einen ARN (AWS Ressourcenname) angeben, der eine IAM-Rolle identifiziert, die der Canary bei dieser SigV4-Anfrage übernehmen soll. Synthetics übernimmt die im roleArn bereitgestellte IAM-Rolle und verwendet sie, um Ihre API-Anfrage zu authentifizieren. AWS 

Beispielkonfiguration:

```
"Authentication": {
    "type": "SIGV4",
    "region": us-west-2, // Required
    "service": s3, // Required
    "roleArn": arn:AWS:iam:12345678912:role/SampleRole // Required
}
```

#### Überlegungen zu SigV4
<a name="CloudWatch_Synthetics_MultiCheck_SigV4Considerations"></a>

Damit Synthetics die Rolle übernimmt, die Sie im Abschnitt zur SigV4-Authentifizierung angegeben haben, muss die dieser Rolle zugeordnete Vertrauensrichtlinie so konfiguriert sein, dass der Canary das bereitgestellte roleArn übernehmen kann. Der AWS Principal, dem Sie vertrauen müssen, ist die Rolle, die Ihr Canary übernommen hat. AWS STS Es hat das Format ` aws:sts::{account_running_the_canary}:assumed-role/<canary_name>/<assumed_role_name>` arn:.

Wenn beispielsweise ein Canary unter dem Konto 0123456789012 mit dem Namen test-canary läuft und die Rolle, die er angenommen hat, benannt wurde, muss die Vertrauensrichtlinie diese Anweisung enthalten canary-assume-role, damit der Canary die Rolearn-Authentifizierung für SigV4-Authentifizierung korrekt übernimmt:

```
{
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:AWS:sts::123456789012:assumed-role/test-canary/"
    },
    "Action": "sts:AssumeRole"
}
```

### OAuth Kundenanmeldedaten
<a name="CloudWatch_Synthetics_MultiCheck_OAuthAuth"></a>

Synthetics implementiert den Grant-Typ OAuth Client Credentials, wie in RFC 6479 Abschnitt 4.4 definiert. Wenn Sie eine HTTP-Anfrage an einen Endpunkt stellen möchten, der mit einem von einem Token-Endpunkt ausgegebenen Bearer-Token authentifiziert wurde, kann Synthetics in Ihrem Namen ein Bearer-Token anfordern und verwalten. OAuth Wenn Sie das OAuth Schema verwenden, führt Synthetics die folgenden Schritte aus:
+ Verwendet das Standardauthentifizierungsschema mit clientId und ClientSecret, um eine Anfrage an die TokenUrl zu authentifizieren, den Endpunkt, der Inhabertoken ausgibt
+ Wenn Sie die optionalen Parameter Scope, Audience und Resource angeben, sind diese in der Token-Anfrage enthalten
+ Verwendet das von der TokenUrl zurückgegebene Zugriffstoken, um Ihre HTTP-Anfrage zu authentifizieren
+ Speichert das von der TokenURL zurückgegebene Aktualisierungstoken sicher für future Token-Anfragen

Beispielkonfiguration:

```
"Authentication": {
    "type": "OAUTH_CLIENT_CREDENTIALS",
    "tokenUrl": ..., // Required
    "clientId": ..., // Required
    "clientSecret": ..., // Required
    "scope": ..., // Optional
    "audience": ..., // Optional
    "resource": ..., // Optional
}
```

#### OAuth Überlegungen
<a name="CloudWatch_Synthetics_MultiCheck_OAuthConsiderations"></a>

Synthetics aktualisiert OAuth Token, wenn eine 401- oder 407-Antwort zurückgegeben wird.

### AWS Secrets Manager Integration
<a name="CloudWatch_Synthetics_MultiCheck_SecretsManager"></a>

Um zu vermeiden, dass geheime Werte (wie Passwörter oder API-Schlüssel) im Klartext gespeichert werden, bietet Synthetics eine Integration mit AWS Secrets Manager. Sie können mit dem Format ` ${aws_SECRET:<secret_name>}` auf einen gesamten geheimen Wert in Ihrer Blueprint-Konfiguration verweisen oder auf einen bestimmten Schlüssel verweisen. ` ${aws_SECRET:<secret_name>:<secret_key>}`

Wenn Sie beispielsweise ein Geheimnis namens login/ habenbasic-auth-credentials, das einen Benutzernamen und ein Passwort mit der folgenden JSON-Struktur speichert:

```
{
    "username": "Aladdin",
    "password": "open sesame"
}
```

Sie können den Benutzernamen und das Passwort in Ihrer Blueprint-Konfiguration wie folgt referenzieren, und Synthetics kümmert sich um das Abrufen des geheimen Werts und die Verwendung seiner Schlüssel zur Authentifizierung Ihrer Anfrage:

```
"Authentication": {
    "type": "BASIC",
    "username": ${AWS_SECRET:login/basic-auth-credentials:username},
    "password": ${AWS_SECRET:login/basic-auth-credentials:password}
}
```

Damit Synthetics das angegebene Geheimnis abrufen kann, muss die vom Canary übernommene Rolle ARN über SecretsManager: -Berechtigungen verfügen. GetSecretValue Wenn das Geheimnis mit einem vom Kunden verwalteten Schlüssel anstelle des verwalteten Schlüssels AWS/secretsmanager verschlüsselt AWS wird, benötigen Sie auch Decrypt-Berechtigungen für diesen Schlüssel. kms:

Beispielberechtigungen:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:AWS:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf"
        },
        {
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:AWS:kms:us-east-1:123456789012:key/key-id"
        }
    ]
}
```

## Fehlerbehebung
<a name="CloudWatch_Synthetics_MultiCheck_Troubleshooting"></a>

### Häufige Fehler bei der Fehlerbehebung
<a name="CloudWatch_Synthetics_MultiCheck_Common_Failures"></a>

Der zugrunde liegende Code für den Multi-Check-Blueprint ist in Typescript geschrieben. Auf der Seite zur Fehlerbehebung bei Canary finden Sie häufig auftretende Fehler: [Fehlerbehebung bei einem](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Troubleshoot.html) ausgefallenen Canary.

### Syntaxfehler bei der JSON-Überprüfung der Konfiguration
<a name="CloudWatch_Synthetics_MultiCheck_JSON_Errors"></a>

Wenn es irgendwelche syntaktischen Fehler im Zusammenhang mit der JSON-Prüfkonfiguration des Canary gibt, AWS-Managementkonsole erhalten Sie eine Fehlerursache, wenn Sie versuchen, den Canary zu erstellen. Wenn du einen Canary mithilfe einer API oder erstellst CloudFormation, wirst du den Fehler sehen, wenn der Canary zum ersten Mal ausgeführt wird. Es wird empfohlen, den Workflow für sichere Canary-Updates für Multi Check Canary zu verwenden. Weitere Informationen findest du unter [Sichere Canary-Updates durchführen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/performing-safe-canary-upgrades.html).

### Netzwerk- oder Timeout-Fehler
<a name="CloudWatch_Synthetics_MultiCheck_Network_Failures"></a>

Bei sporadisch auftretenden oder andauernden Ausfällen im Zusammenhang mit Timeouts oder Netzwerkverbindungsfehlern (z. B. ENOTFOUND, ECONNRESET) sollten Sie in Erwägung ziehen, ` DEBUG` Protokolle zu aktivieren, sodass der folgende Rechenlauf weitere Informationen darüber liefert, warum die Prüfungen fehlschlagen. Geben Sie dazu die Umgebungsvariable CW\$1SYNTHETICS\$1LOG\$1LEVEL: „DEBUG“ an.

Wenn es immer noch Fehler gibt, die Sie nicht debuggen können, sollten Sie sich an den AWS Support wenden oder prüfen, ob einer der anderen von CloudWatch Synthetics bereitgestellten Canary-Typen besser zu Ihrem Anwendungsfall passt.

# Verwenden des CloudWatch Synthetics Recorders für Google Chrome
<a name="CloudWatch_Synthetics_Canaries_Recorder"></a>

Amazon bietet einen CloudWatch Synthetics Recorder, mit dem Sie Kanarienvögel einfacher erstellen können. Der Recorder ist eine Google-Chrome-Erweiterung.

Der Recorder zeichnet Ihre Klick- und Tippaktionen auf einer Website auf und generiert automatisch ein Node.js Skript, das verwendet werden kann, um einen Canary zu erstellen, der denselben Schritten folgt.

Nachdem Sie mit der Aufnahme begonnen haben, erkennt der CloudWatch Synthetics Recorder Ihre Aktionen im Browser und konvertiert sie in ein Skript. Sie können die Aufzeichnung bei Bedarf anhalten und fortsetzen. Wenn Sie die Aufnahme beenden, erstellt der Rekorder ein Node.js-Skript Ihrer Aktionen, das Sie mit der Schaltfläche **In Zwischenablage kopieren** einfach kopieren können. Sie können dieses Skript dann verwenden, um einen Kanarienvogel in CloudWatch Synthetics zu erstellen. 

**Credits**: Der CloudWatch Synthetics Recorder basiert auf dem [Headless](https://github.com/checkly/headless-recorder) Recorder.

## Installation der CloudWatch Synthetics Recorder-Erweiterung für Google Chrome
<a name="CloudWatch_Synthetics_Canaries_Recorder-install"></a>

Um den CloudWatch Synthetics Recorder zu verwenden, können Sie mit der Erstellung eines Canary beginnen und den **Canary Recorder-Blueprint** auswählen. Wenn Sie dies tun, obwohl Sie den Rekorder noch nicht heruntergeladen haben, bietet die CloudWatch Synthetics-Konsole einen Link zum Herunterladen.

Alternativ können Sie diese Schritte ausführen, um den Rekorder direkt herunterzuladen und zu installieren.

**So installieren Sie den CloudWatch Synthetics Recorder**

1. Rufen Sie mit Google Chrome diese Website auf: [ https://chrome.google.com/webstore/detail/cloudwatch-synthetics-rec/bhdnlmmgiplmbcdmkkdfplenecpegfno](https://chrome.google.com/webstore/detail/cloudwatch-synthetics-rec/bhdnlmmgiplmbcdmkkdfplenecpegfno)

1. Wählen Sie **Zu Chrome hinzufügen** und dann **Erweiterung hinzufügen** aus.

## Verwenden des CloudWatch Synthetics Recorders für Google Chrome
<a name="CloudWatch_Synthetics_Canaries_Recorder-using"></a>

Wenn Sie mit dem CloudWatch Synthetics Recorder einen Canary erstellen möchten, können Sie in der CloudWatch Konsole **Create Canary** auswählen und dann **Blueprint verwenden**, **Canary** Recorder auswählen. Weitere Informationen finden Sie unter [Erstellen eines Canarys](CloudWatch_Synthetics_Canaries_Create.md). 

Alternativ können Sie den Recorder verwenden, um Schritte aufzuzeichnen, ohne sie sofort zum Erstellen eines Canary zu verwenden.

**Um den CloudWatch Synthetics Recorder zu verwenden, um Ihre Aktionen auf einer Website aufzuzeichnen**

1. Navigieren Sie zu der Seite, die Sie überwachen möchten.

1. Wählen Sie das Chrome-Erweiterungssymbol und dann **CloudWatchSynthetics Recorder**.

1. Wählen Sie **Aufnahme starten**.

1. Führen Sie die Schritte aus, die von aufgezeichnet werden sollen. Um die Aufnahme zu unterbrechen, wählen Sie **Pause**.

1. Wenn Sie mit der Aufzeichnung des Workflows fertig sind, wählen Sie **Aufzeichnung beenden**.

1. Wählen Sie **In Zwischenablage kopieren**, um das generierte Skript in Ihre Zwischenablage zu kopieren. Wenn Sie von vorne beginnen möchten, wählen Sie **Neue Aufnahme**.

1. Um einen Canary mit dem kopierten Skript zu erstellen, können Sie das kopierte Skript in den Inline-Editor des Recorder-Blueprints einfügen oder es in einem Amazon-S3-Bucket speichern und von dort importieren.

1. Wenn Sie nicht sofort einen Canary erstellen, können Sie das aufgezeichnete Skript in einer Datei speichern.

## Bekannte Einschränkungen des CloudWatch Synthetics Recorders
<a name="CloudWatch_Synthetics_Canaries_Recorder-limitations"></a>

Der CloudWatch Synthetics Recorder für Google Chrome hat derzeit die folgenden Einschränkungen.
+ HTML-Elemente, die dies nicht haben IDs , verwenden CSS-Selektoren. Dies kann Canarys brechen, wenn sich die Webseitenstruktur später ändert. Wir planen, einige Konfigurationsoptionen (wie die Verwendung von Daten-ID) um diese in einer zukünftigen Version des Recorders bereitzustellen. 
+ Der Recorder unterstützt keine Aktionen wie Doppelklicken oder Kopieren/Einfügen und unterstützt keine Tastenkombinationen wie CMD\$10. 
+ Um zu überprüfen, ob ein Element oder Text auf der Seite vorhanden ist, müssen Benutzer nach der Generierung des Skripts Assertionen hinzufügen. Der Recorder unterstützt die Überprüfung eines Elements nicht, ohne eine Aktion für dieses Element auszuführen. Dies ähnelt den Optionen „Text überprüfen“ oder „Element verifizieren“ im Canary Workflow Builder. Wir planen, einige Behauptungen Unterstützung in einer zukünftigen Version des Recorders hinzuzufügen. 
+ Der Recorder zeichnet alle Aktionen auf der Registerkarte auf, auf der die Aufnahme initiiert wird. Es werden keine Pop-ups aufgezeichnet (zum Beispiel, um Standortverfolgung zu ermöglichen) oder die Navigation zu verschiedenen Seiten aus Pop-ups. 

# Synthetics Laufzeitversionen
<a name="CloudWatch_Synthetics_Canaries_Library"></a>

Wenn Sie ein Canary erstellen oder aktualisieren, wählen Sie eine Synthetics-Laufzeitversion für das Canary aus. Eine Synthetics-Laufzeit ist eine Kombination aus Synthetics-Code, der Ihren Skript-Handler aufruft, und den Lambda-Ebenen gebündelter Abhängigkeiten.

CloudWatch Synthetics unterstützt derzeit Laufzeiten, die die Sprachen Node.js, Python oder Java verwenden. Die Frameworks Puppeteer, Playwright und Selenium werden unterstützt.

Wir empfehlen, immer die aktuellste Laufzeitversion für Ihre Canarys zu verwenden, um die neuesten Features und Aktualisierungen der Synthetics-Bibliothek nutzen zu können.

**Bitte beachten** Sie: Immer wenn Sie einen Canary ausführen, um die neue Version der Synthetics-Laufzeit zu verwenden, werden alle Synthetics-Bibliotheksfunktionen, die Ihr Canary verwendet, automatisch auf dieselbe Version von NodeJS verschoben, die die Synthetics-Runtime unterstützt.

**Topics**
+ [Laufzeitversionen, die Java nutzen](CloudWatch_Synthetics_Library_Java.md)
+ [Laufzeitversionen mit Node.js und Playwright](CloudWatch_Synthetics_Library_nodejs_playwright.md)
+ [Laufzeitversionen mit Node.js und Puppeteer](CloudWatch_Synthetics_Library_nodejs_puppeteer.md)
+ [Laufzeitversionen mit Python und Selenium Webdriver](CloudWatch_Synthetics_Library_python_selenium.md)
+ [Runtime-Versionen, die Node.js verwenden](CloudWatch_Synthetics_Library_Nodejs.md)
+ [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md)
+ [Aktualisierung der Runtime-Versionen](CloudWatch_Synthetics_Runtime_Version_Update.md)

# Laufzeitversionen, die Java nutzen
<a name="CloudWatch_Synthetics_Library_Java"></a>

Der folgende Abschnitt enthält Informationen zu den CloudWatch Synthetics-Laufzeitversionen für Java. In dieser Laufzeit ist kein Browser oder Framework enthalten.

Die Namenskonvention für diese Laufzeitversionen lautet `syn-language -majorversion.minorversion`. 

## syn-java-1.0
<a name="Synthetics_runtimeversion-syn-java-1.0"></a>

**Wichtige Abhängigkeiten**:
+ AWS Lambda Laufzeit: Java 2.1.

 **Funktionen** 
+ *CloudWatch Log-Integration* — Sie können Logs über die CloudWatch Synthetics-Konsole abfragen und filtern. Jede Protokollmeldung enthält eine eindeutige ` canaryRunId`, sodass Sie ganz einfach nach Protokollen für eine bestimmte Canary-Ausführung suchen können.
+ *Metriken* — Sie können den Prozentsatz und die Dauer des Canary-Run-Erfolgs anhand von CloudWatch Metriken überwachen. Sie können auch Alarme konfigurieren, die Sie warnen, wenn Canarys Probleme erkennen.
+ *Canary-Artefakte* – Jede Canary-Ausführung lädt einen detaillierten Bericht hoch, der der Ausführung und den einzelnen Schritten der Ausführung entspricht und auf den über Amazon S3 zugegriffen werden kann.
+ *Support für Traces* – Sie können Traces für alle Anforderungen ausgeben, die der Canary über X-Ray gestellt hat. Jede Canary-Ausführung ist mit einer Trace-ID verknüpft.

# Laufzeitversionen mit Node.js und Playwright
<a name="CloudWatch_Synthetics_Library_nodejs_playwright"></a>

Die folgenden Abschnitte enthalten Informationen zu den CloudWatch Synthetics-Laufzeitversionen für Node.js und Playwright. Playwright ist eine Open-Source-Automatisierungsbibliothek für Browsertests. [Weitere Informationen zu Playwright finden Sie unter https://playwright.dev/](https://playwright.dev) 

Die Namenskonvention für diese Laufzeitversionen lautet `syn-language -framework-majorversion. minorversion`. 

## syn-nodejs-playwright-6,0
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-6.0"></a>

**Wichtig**  
Beim Starten von Synthetics `syn-nodejs-playwright-5.1` und später verwendet Synthetics Runtime den neuen Namespace. Bitte migrieren Sie das Canary-Skript, um den neuen Namespace zu verwenden. Legacy-Namespace wird in einer future Version nicht mehr unterstützt.  
amzn/synthetics-playwright → @aws/synthetics@ -playwright

**Wichtige Abhängigkeiten**:
+ AWS Lambda Laufzeit Node.js 2.x
+ Dramatiker Version 1.58.2
+ PlayWright/Testversion 1.58.2
+ Chromium-Version 145.0.7632.77
+ Firefox-Version 146.0.1

 **Änderungen in -6.0 syn-nodejs-playwright** 
+ Sicherheitspatches wurden angewendet und Playwright- und Browserversionen aktualisiert. 

Weitere Informationen finden Sie hier:
+  [Playwright-Änderungsprotokoll](https://playwright.dev/docs/release-notes) 
+  [Playwright-API-Referenz](https://playwright.dev/docs/api/class-playwright) 

## Frühere Laufzeit-Versionen für Node.js und Playwright
<a name="Previousversions-nodejs-playwright"></a>

Die folgenden früheren Laufzeit-Versionen für Node.js und Playwright werden weiterhin unterstützt. 

### syn-nodejs-playwright-5.1
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-5.1"></a>

**Wichtige Abhängigkeiten**:
+ AWS Lambda Laufzeit Node.js 2.x
+ Dramatiker Version 1.57.0
+ PlayWright/Testversion 1.57.0
+ Chromium-Version 143.0.7499.169
+ Firefox-Version 142.0.1

 **Änderungen in -5.1 syn-nodejs-playwright** 
+ Migration des Synthetics-Runtime-Namespaces. 
+ [Die Typdefinition ist in der npm-Registrierung verfügbar.](https://www.npmjs.com/package/@aws/synthetics-playwright) Bitte stellen Sie sicher, dass die Version des Typdefinitionspakets mit der Runtime-Version Ihres Canary übereinstimmt.

Weitere Informationen finden Sie hier:
+  [Playwright-Änderungsprotokoll](https://playwright.dev/docs/release-notes) 
+  [Playwright-API-Referenz](https://playwright.dev/docs/api/class-playwright) 

### syn-nodejs-playwright-5.0
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-5.0"></a>

**Wichtige Abhängigkeiten**:
+ AWS Lambda Laufzeit Node.js 2.x
+ Dramatiker Version 1.57.0
+ PlayWright/Testversion 1.57.0
+ Chromium-Version 143.0.7499.4
+ Firefox-Version 142.0.1

 **Änderungen in -5.0 syn-nodejs-playwright** 
+ Sicherheitspatches wurden angewendet und Playwright- und Browserversionen aktualisiert. 

Weitere Informationen finden Sie hier:
+  [Playwright-Änderungsprotokoll](https://playwright.dev/docs/release-notes) 
+  [Playwright-API-Referenz](https://playwright.dev/docs/api/class-playwright) 

### syn-nodejs-playwright-4.0
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-4.0"></a>

**Wichtige Abhängigkeiten**:
+ AWS Lambda Laufzeit Node.js 2.x
+ Dramatiker Version 1.55.0
+ PlayWright/Testversion 1.55.0
+ Chromium-Version 140.0.7339.16
+ Firefox-Version 141.0

 **Änderungen in syn-nodejs-playwright -4.0** 
+ Sicherheitspatches wurden angewendet und Playwright- und Browserversionen aktualisiert. 

Weitere Informationen finden Sie hier:
+  [Playwright-Änderungsprotokoll](https://playwright.dev/docs/release-notes) 
+  [Playwright-API-Referenz](https://playwright.dev/docs/api/class-playwright) 

### syn-nodejs-playwright-3.0
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-3.0"></a>

**Wichtige Abhängigkeiten**:
+ AWS Lambda Laufzeit Node.js 20.x
+ Playwright-Version 1.53.0
+ Playwright/Testversion 1.53.0
+ Chromium-Version 138.0.7204.168

 **Änderungen in syn-nodejs-playwright -3.0** 
+ Multi-Browser-Unterstützung – Sie können Ihre nodejs-Puppeteer-Canarys jetzt entweder in Firefox oder Chrome ausführen
+ Support für die visuelle Überwachung

Weitere Informationen finden Sie hier:
+  [Playwright-Änderungsprotokoll](https://playwright.dev/docs/release-notes) 
+  [Playwright-API-Referenz](https://playwright.dev/docs/api/class-playwright) 

### syn-nodejs-playwright-2,0
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-2.0"></a>

**Wichtige Abhängigkeiten**:
+ AWS Lambda Laufzeit Node.js 20.x
+ Playwright-Version 1.49.1
+ PlayWright/Testversion 1.49.1
+ Chromium-Version 131.0.6778.264

 **Änderungen in syn-nodejs-playwright -2.0** 
+ Die Diskrepanz zwischen der Gesamtdauer und der Summe der Timings für eine bestimmte Anforderung in der HAR-Datei wurde behoben.
+ Unterstützt Testläufe für den Canary, was Ad-hoc-Ausführungen oder die Durchführung eines sicheren Canary-Updates ermöglicht.

Weitere Informationen finden Sie hier:
+  [Playwright-Änderungsprotokoll](https://playwright.dev/docs/release-notes) 
+  [Playwright-API-Referenz](https://playwright.dev/docs/api/class-playwright) 

### syn-nodejs-playwright-1.0
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-1.0"></a>

**Wichtige Abhängigkeiten**:
+ AWS Lambda Laufzeit Node.js 20.x
+ Playwright-Version 1.44.1
+ Playwright/Testversion 1.44.1
+ Chromium-Version 126.0.6478.126

**Features:**
+ **PlayWright Unterstützung** — Sie können kanarische Skripte schreiben, indem Sie das Playwright Automation Framework verwenden. Sie können Ihre vorhandenen Playwright-Skripte als Canarys ausführen und sie mit AWS -Überwachungsfunktionen erweitern. 
+ **CloudWatch Log-Integration** — Sie können Logs über die CloudWatch Synthetics-Konsole abfragen und filtern. Jede Protokollmeldung enthält eine eindeutige `canaryRunId`, sodass Sie ganz einfach nach Protokollen für eine bestimmte Canary-Ausführung suchen können. 
+ **Metriken und Canary-Artefakte** — Du kannst die Erfolgsrate von Canary Run anhand von CloudWatch Metriken überwachen und Alarme konfigurieren, die dich benachrichtigen, wenn Canaries Probleme entdecken. 
+ **Zuordnung von Screenshots und Schritten** – Mithilfe der systemeigenen Playwright-Funktionalität können Sie Screenshots aufnehmen, um die Phasen eines Canary-Skripts bei jeder Ausführung zu visualisieren. Screenshots werden automatisch mit Canary-Schritten verknüpft und in Amazon-S3-Buckets hochgeladen. 
+ **Mehrere Tabs** – Sie können Canarys erstellen, die mehrere Browser-Tabs öffnen und von jedem Tab aus auf Screenshots zugreifen. In Synthetics können Sie Benutzerworkflows mit mehreren Tabs und mehreren Schritten erstellen. 

# Laufzeitversionen mit Node.js und Puppeteer
<a name="CloudWatch_Synthetics_Library_nodejs_puppeteer"></a>

Die erste Laufzeitversion für Node.js und Puppeteer hieß `syn-1.0`. Spätere Laufzeitversionen haben die Namenskonvention `syn-language -majorversion.minorversion`. Beginnend mit `syn-nodejs-puppeteer-3.0` ist die Namenskonvention `syn- language-framework-majorversion .minorversion` 

Ein zusätzliches `-beta`-Suffix zeigt an, dass sich die Laufzeitversion derzeit in einer Beta-Vorschauversion befindet.

Laufzeitversionen mit derselben Hauptversionsnummer sind abwärtskompatibel. 

Der Lambda-Code in einem Canary ist so konfiguriert, dass er einen maximalen Speicher von 1 GB hat. Für jede Canary-Ausführung tritt nach Ablauf eines konfigurierten Timeoutwerts eine Zeitüberschreitung ein. Wenn kein Timeout-Wert für einen Canary angegeben ist, CloudWatch wählt ein Timeout-Wert, der auf der Frequenz des Canary basiert. Wenn Sie einen Timeout-Wert konfigurieren, legen Sie ihn nicht kürzer als 15 Sekunden fest, um Lambda-Kaltstarts und die Zeit zu ermöglichen, die zum Hochfahren der canary-Instrumentierung benötigt wird.

## syn-nodejs-puppeteer-15,0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-15.0"></a>

`syn-nodejs-puppeteer-15.0` ist die neueste Synthetics-Laufzeit für Node.js und Puppeteer. 

**Wichtig**  
Beim Starten von Synthetics `syn-nodejs-puppeteer-13.1` und später verwendet Synthetics Runtime den neuen Namespace. Bitte migrieren Sie das Canary-Skript, um neue Namespaces zu verwenden. Legacy-Namespaces werden in einer future Version nicht mehr unterstützt.  
Synthetics → @aws /synthetics-puppeteer
SyntheticsLink → @aws /synthetics-link
SyntheticsLogger → @aws /synthetics-logger
SyntheticsLogHelper → @aws/synthetics-log-helper
BrokenLinkCheckerReport → @aws/synthetics-broken-link-checker-bericht

**Wichtig**  
Synthetics Runtime `syn-nodejs-puppeteer-11.0` und spätere Versionen unterstützen nur die folgenden schrittweisen Konfigurationsüberschreibungen:  
 `screenshotOnStepStart` 
 `screenshotOnStepSuccess` 
 `screenshotOnStepFailure` 
 `stepSuccessMetric` 
 `stepDurationMetric` 
 `continueOnStepFailure/continueOnHttpStepFailure` 
 `stepsReport` 

Weitere Informationen finden Sie hier:
+  [Puppeteer-Änderungsprotokoll](https://pptr.dev/CHANGELOG#24375-2026-02-19) 
+  [Puppeteer-API-Referenz](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.37.5/docs/api/index.md) 

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 2.x
+ Puppeteer-Core-Version 24.37.5
+ Chromium-Version 145.0.7632.77
+ Firefox-Version 147.0.4

 **Änderungen in -15.0 syn-nodejs-puppeteer** 
+ Sicherheitspatches wurden angewendet und Puppeteer- und Browserversionen aktualisiert.
+ Ein Fehler continueOnHttp StepFailure wurde behoben, der dazu führte, dass Canary-Läufe trotz fehlgeschlagener HTTP-Schritte fälschlicherweise als erfolgreich markiert wurden.

## Vorige Laufzeitversionen mit Node.js und Puppeteer
<a name="Previousversions-nodejs-puppeteer"></a>

Die folgenden früheren Laufzeit-Versionen für Node.js und Puppeteer werden weiterhin unterstützt. 

### syn-nodejs-puppeteer-14.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-14.0"></a>

Weitere Informationen finden Sie hier:
+  [Puppeteer-Änderungsprotokoll](https://pptr.dev/CHANGELOG#24340-2025-12-19) 
+  [Puppeteer-API-Referenz](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.34.0/docs/api/index.md) 

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 2.x
+ Puppeteer-Core-Version 24.34.0
+ Chromium-Version 143.0.7499.169
+ Firefox-Version 146.x

 **Änderungen in -14.0 syn-nodejs-puppeteer** 
+ Sicherheitspatches wurden angewendet und Puppeteer- und Browserversionen aktualisiert.

### syn-nodejs-puppeteer-13.1
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-13.1"></a>

`syn-nodejs-puppeteer-13.1` ist die neueste Synthetics-Laufzeit für Node.js und Puppeteer. 

Weitere Informationen finden Sie hier:
+  [Puppeteer-Änderungsprotokoll](https://pptr.dev/CHANGELOG#24250-2025-10-15) 
+  [Puppeteer-API-Referenz](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.2.0/docs/api/index.md) 

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 2.x
+ Puppeteer-Core-Version 24.25.0
+ Chromium-Version 142.0.7444.175
+ Firefox-Version 145.x

 **Änderungen in -13.1 syn-nodejs-puppeteer** 
+ Migration des Synthetics-Runtime-Namespaces.
+ Typdefinitionen sind in der npm-Registrierung verfügbar. Bitte stellen Sie sicher, dass die Version des Typdefinitionspakets mit der Runtime-Version Ihres Canary übereinstimmt.
  +  [@aws /synthetics-puppeteer](https://www.npmjs.com/package/@aws/synthetics-puppeteer) 
  +  [@aws /synthetics-Link](https://www.npmjs.com/package/@aws/synthetics-link) 
  +  [@aws/-bericht synthetics-broken-link-checker](https://www.npmjs.com/package/@aws/synthetics-broken-link-checker-report) 
  +  [@aws/synthetics-log-helper](https://www.npmjs.com/package/@aws/synthetics-log-helper) 
  +  [@aws /synthetics-logger](https://www.npmjs.com/package/@aws/synthetics-logger) 

### syn-nodejs-puppeteer-13,0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-13.0"></a>

Weitere Informationen finden Sie hier:
+  [Puppeteer-Änderungsprotokoll](https://pptr.dev/CHANGELOG#24250-2025-10-15) 
+  [Puppeteer-API-Referenz](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.2.0/docs/api/index.md) 

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 2.x
+ Puppeteer-Core-Version 24.25.0
+ Chromium-Version 142.0.7444.175
+ Firefox-Version 145.x

 **Änderungen in -13.0 syn-nodejs-puppeteer** 
+ Sicherheitspatches wurden angewendet und Puppeteer- und Browserversionen aktualisiert.
+ Fehlerbehebung — Es wurde ein zeitweiliges Absturzproblem mit der Laufzeiterweiterung behoben, das durch gleichzeitigen Kartenzugriff verursacht wurde

### syn-nodejs-puppeteer-12.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-12.0"></a>

Weitere Informationen finden Sie hier:
+  [Puppeteer-Änderungsprotokoll](https://pptr.dev/CHANGELOG#24221-2025-09-23) 
+  [Puppeteer-API-Referenz](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.22.1/docs/api/index.md) 

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 2.x
+ Puppeteer-Core-Version 24.22.1
+ Chromium-Version 140.0.7339.185
+ Firefox-Version 143.0.1

 **Änderungen in -12.0 syn-nodejs-puppeteer** 
+ Sicherheitspatches wurden angewendet und Puppeteer- und Browserversionen aktualisiert.
+ Fehlerbehebung für eingeschränkte Header-Schwärzung — Es wurde ein Problem behoben, bei dem eingeschränkte Header in einigen Situationen in () nicht redigiert wurden. executeHttpStep Das Verhalten ist jetzt konsistent mit Puppeteer 10.0.
+ Fehlerbehebung für die includeResponseBody Konfiguration — Es wurde ein Problem behoben, bei dem die HAR-Dateigenerierung die includeResponseBody Konfigurationseinstellung in bestimmten Situationen falsch anwenden kann. HAR stellt jetzt sicher, dass Antworttexte ausgeschlossen werden, wenn die Einstellung konfiguriert ist.
+ Lebenszyklus der Anforderungserfassung behoben — Es wurde ein Problem behoben, bei dem der HTTP-Anforderungserfasser in einigen Situationen zu einer kontinuierlichen Aggregation von Anfragen führen konnte. Die Aufzeichnung wird jetzt nach jeder Ausführung des Schritts korrekt beendet.

### syn-nodejs-puppeteer-11,0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-11.0"></a>

Weitere Informationen finden Sie hier:
+  [Puppeteer-Änderungsprotokoll](https://pptr.dev/CHANGELOG) 
+  [Puppeteer-API-Referenz](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.2.0/docs/api/index.md) 

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 20.x
+ Puppeteer-Core-Version 24.15.0
+ Chromium-Version 138.0.7204.168

 ** syn-nodejs-puppeteerÄnderungen in -11.0** 
+ Unterstützung mehrerer Browser – Sie können Node.js-Puppeteer-Canarys jetzt entweder in Firefox oder Chrome ausführen
+ Vereinfachtes Bündeln – Bündeln Sie Skripte direkt unter Root, ohne die Node.js/node\$1modules-Verzeichnisstruktur zu verwenden
+ Screenshot-Integration – Erfassen Sie Screenshots mit den systemeigenen Puppeteer-Funktionen, um die Phasen von Canary-Skripten zu visualisieren. Synthetics ordnet Screenshots automatisch Canary-Schritten zu und lädt sie auf Amazon S3 hoch
+ Verbesserte Protokollabfrage — Abfragen und Filtern von Protokollen über die CloudWatch Insights-Konsole Jede Protokollnachricht enthält eine eindeutige `canaryRunId`, um die Suche zu vereinfachen
+ Unterstützung von Konfigurationsdateien – Definieren und aktualisieren Sie Synthetics-Einstellungen mithilfe einer synthetics.json-Datei. Diese Trennung von Konfiguration und Skriptlogik verbessert die Wartung und Wiederverwendbarkeit
+ Unterstützung mehrerer Tabs – Erstellen Sie Canarys, die mehrere Browser-Tabs öffnen und von jedem Tab aus auf Screenshots zugreifen. Erstellen Sie Benutzerworkflows mit mehreren Tabs und mehreren Schritten in Synthetics
+ Fehlerbehebungen bei der Sicherheit
+ Fehlerbehebungen bei visueller Überwachung
+ Unterstützung für strukturierte JSON-Protokollierung mit konfigurierbaren Protokollebenen hinzugefügt — Protokolle werden jetzt im JSON-Format ausgegeben, um das Parsen und Abfragen zu vereinfachen. CloudWatch Die Protokollebene ist über Umgebungsvariablen konfigurierbar (z. B. DEBUG, INFO, TRACE), sodass Benutzer die Ausführlichkeit nach ihren Bedürfnissen steuern können
+ Support für ES-Syntax

### syn-nodejs-puppeteer-10.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-10.0"></a>

Weitere Informationen finden Sie hier:
+  [Puppeteer-Änderungsprotokoll](https://pptr.dev/CHANGELOG) 
+  [Puppeteer-API-Referenz](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.2.0/docs/api/index.md) 

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 20.x
+ Puppeteer-Core-Version 24.2.0
+ Chromium-Version 131.0.6778.264

 **Änderungen in -10.0 syn-nodejs-puppeteer** 
+ Der Fehler im Zusammenhang mit dem übermäßig langen Schließen des Browsers wurde behoben.
+ Unterstützt Testläufe für den Canary, was Ad-hoc-Ausführungen oder die Durchführung eines sicheren Canary-Updates ermöglicht.

### syn-nodejs-puppeteer-9.1
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-9.1"></a>

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 20.x
+ Puppeteer-Core-Version 22.12.1
+ Chromium-Version 126.0.6478.126

**Änderungen in syn-nodejs-puppeteer -9.1** — Fehlerkorrekturen in Bezug auf Datumsbereiche und ausstehende Anfragen in HAR-Dateien wurden behoben.

### syn-nodejs-puppeteer-9.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-9.0"></a>

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 20.x
+ Puppeteer-Core-Version 22.12.1
+ Chromium-Version 126.0.6478.126

**Änderungen in syn-nodejs-puppeteer -9.0** — Der Bugfix zur Aktivierung der visuellen Überwachungsfunktionen wurde behoben.

### syn-nodejs-puppeteer-8.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-8.0"></a>

**Warnung**  
Aufgrund eines Fehlers unterstützt die `syn-nodejs-puppeteer-8.0`-Laufzeit keine visuelle Überwachung auf Canarys. Führen Sie ein Upgrade auf [syn-nodejs-puppeteer-9.0](#CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-9.0) durch, um den Fehler für die visuelle Überwachung zu beheben.

**Wichtig**  
Lambda Node.js 18 und spätere Laufzeiten verwenden AWS SDK für JavaScript V3. Wenn Sie einen Canary von einer früheren Runtime migrieren müssen, folgen Sie dem [aws-sdk-js-v3-Migrationsworkshop unter](https://github.com/aws-samples/aws-sdk-js-v3-workshop). GitHub Weitere Informationen zum AWS SDK für JavaScript Version 3 finden Sie in [diesem Blogbeitrag](https://aws.amazon.com/blogs/developer/modular-aws-sdk-for-javascript-is-now-generally-available/).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 20.x
+ Puppeteer-Core-Version 22.10.0
+ Chromium-Version 125.0.6422.112

**Aktualisierungen syn-nodejs-puppeteer in -8.0:**
+  **Unterstützung für Zwei-Faktor-Authentifizierung** 
+ **Fehlerkorrekturen** im Zusammenhang mit dem Verlust von Daten durch einige Service-Clients in den Antworten des SDK V3 von Node.js wurden durchgeführt.

## Veraltete Laufzeitversionen für Node.js und Puppeteer
<a name="CloudWatch_Synthetics_nodejs-puppeteer-Deprecated"></a>

Die folgenden Laufzeiten für Node.js und Puppeteer sind veraltet. Hinweise zu den Ablaufdaten der Laufzeit finden Sie unter [CloudWatch Verfallsdaten für Synthetics Runtime](CloudWatch_Synthetics_Runtime_Support_Policy.md#runtime_deprecation_dates).

### syn-nodejs-puppeteer-7.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-7.0"></a>

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 18.x
+ Puppeteer-Core-Version 21.9.0
+ Chromium-Version 121.0.6167.139

**Code-Größe**:

Die Größe des Codes und der Abhängigkeiten, die Sie in dieser Laufzeit bündeln können, beträgt 80 MB.

**Aktualisierungen syn-nodejs-puppeteer in -7.0:**
+ **Aktualisierte Versionen der mitgelieferten Bibliotheken in Puppeteer und Chromium** – Die Abhängigkeiten von Puppeteer und Chromium wurden auf neue Versionen aktualisiert.
**Wichtig**  
Die Umstellung von Puppeteer 19.7.0 auf Puppeteer 21.9.0 bringt grundlegende Änderungen in Bezug auf Tests und Filtern mit sich. Weitere Informationen finden Sie in den Abschnitten **WICHTIGE ÄNDERUNGEN** in [puppeteer: v20.0.0](https://github.com/puppeteer/puppeteer/releases/tag/puppeteer-v20.0.0) und [puppeteer-core: v21.0.0](https://github.com/puppeteer/puppeteer/releases/tag/puppeteer-core-v21.0.0).

 **Empfohlenes Upgrade auf AWS SDK v3** 

Die Lambda-Laufzeit nodejs18.x unterstützt SDK v2 nicht. AWS Wir empfehlen dringend, auf SDK v3 zu migrieren. AWS 

### syn-nodejs-puppeteer-6.2
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-6.2"></a>

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 18.x
+ Puppeteer-Core-Version 19.7.0
+ Chromium-Version 111.0.5563.146

**Änderungen in** -6.2: syn-nodejs-puppeteer
+  **Aktualisierte Versionen der gebündelten Bibliotheken in Chromium** 
+ **Flüchtige Speicherüberwachung** – Diese Laufzeit fügt die flüchtige Speicherüberwachung in Kundenkonten hinzu.
+  **Fehlerbehebungen** 

### syn-nodejs-puppeteer-6.1
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-6.1"></a>

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 18.x
+ Puppeteer-Core-Version 19.7.0
+ Chromium-Version 111.0.5563.146

**Aktualisierungen** in -6.1: syn-nodejs-puppeteer
+ **Verbesserungen der Stabilität** – Automatische Wiederholungslogik für den Umgang mit intermittierenden Puppeteer-Startfehlern hinzugefügt.
+ **Abhängigkeits-Upgrades** – Aktualisiert einige Abhängigkeitspakete von Drittanbietern.
+ **Canarys ohne Amazon-S3-Berechtigungen** – Fehlerkorrekturen, sodass Canarys, die keine Amazon-S3-Berechtigungen haben, weiterhin ausgeführt werden können. Diese Canarys ohne Amazon-S3-Berechtigungen können keine Screenshots oder andere Artefakte auf Amazon S3 hochladen. Weitere Informationen zu den Berechtigungen für Canarys finden Sie unter [Erforderliche Rollen und Berechtigungen für Canarys](CloudWatch_Synthetics_Canaries_CanaryPermissions.md).

**Wichtig**  
WICHTIG: Das enthaltene AWS SDK für die JavaScript v2-Abhängigkeit wird entfernt und aktualisiert, um AWS SDK für Version JavaScript 3 in einer future Runtime-Version zu verwenden. Sobald dies passiert, können Sie Ihre Canary-Code-Referenzen aktualisieren. Alternativ können Sie weiterhin auf das enthaltene AWS SDK für die JavaScript v2-Abhängigkeit verweisen und es verwenden, indem Sie es als Abhängigkeit zu Ihrer Quellcode-ZIP-Datei hinzufügen.

### syn-nodejs-puppeteer-6,0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-6.0"></a>

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 18.x
+ Puppeteer-Core-Version 19.7.0
+ Chromium-Version 111.0.5563.146

**Aktualisierungen** in -6.0: syn-nodejs-puppeteer
+ **Abhängigkeitsupgrade** – Die Abhängigkeit Node.js wurde auf Version 18.x verbesser.
+ **Unterstützung für den Abfang-Modus** – Puppeteer unterstützt nun den kooperativen Abfang-Modus in der Laufzeitbibliothek von Synthetics Canary.
+ **Änderung des Ablaufverfolgungsverhaltens** – Das standardmäßige Ablaufverfolgungsverhalten wurde dahingehend geändert, dass nur noch Fetch- und Xhr-Anforderungen verfolgt werden und keine RessourcenAnforderungen mehr. Sie können die Ablaufverfolgung von RessourcenAnforderungen aktivieren, indem Sie die Option `traceResourceRequests` konfigurieren.
+ Die **Metrik für die Dauer wurde verfeinert** — Die ` Duration` Metrik schließt jetzt die Betriebszeit aus, die der Canary zum Hochladen von Artefakten, zum Erstellen von Screenshots und zum Generieren CloudWatch von Metriken verwendet. `Duration`metrische Werte werden gemeldet CloudWatch, und Sie können sie auch in der Synthetics-Konsole sehen.
+ **Fehlerbehebung:** – Bereinigen des Core-Dumps, der generiert wurde, wenn Chromium während eines Canary-Laufs abstürzt.

**Wichtig**  
WICHTIG: Das enthaltene AWS SDK für die JavaScript v2-Abhängigkeit wird entfernt und aktualisiert, um AWS SDK für Version JavaScript 3 in einer future Runtime-Version zu verwenden. Sobald dies passiert, können Sie Ihre Canary-Code-Referenzen aktualisieren. Alternativ können Sie weiterhin auf das enthaltene AWS SDK für die JavaScript v2-Abhängigkeit verweisen und es verwenden, indem Sie es als Abhängigkeit zu Ihrer Quellcode-ZIP-Datei hinzufügen.

### syn-nodejs-puppeteer-5.2
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-5.2"></a>

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 16.x
+ Puppeteer-Core-Version 19.7.0
+ Chromium-Version 111.0.5563.146

**Aktualisierungen** in -5.2: syn-nodejs-puppeteer
+  **Aktualisierte Versionen der gebündelten Bibliotheken in Chromium** 
+  **Fehlerbehebungen** 

### syn-nodejs-puppeteer-5.1
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-5.1"></a>

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 16.x
+ Puppeteer-Core-Version 19.7.0
+ Chromium-Version 111.0.5563.146

**Fehlerkorrekturen** in -5.1: syn-nodejs-puppeteer
+ **Fehlerbehebung** – Diese Laufzeit behebt einen Fehler in ` syn-nodejs-puppeteer-5.0`, bei dem in den von den Canarys erstellten HAR-Dateien Anforderungsheader fehlten.

### syn-nodejs-puppeteer-5.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-5.0"></a>

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 16.x
+ Puppeteer-Core-Version 19.7.0
+ Chromium-Version 111.0.5563.146

**Aktualisierungen** in -5.0: syn-nodejs-puppeteer
+ **Abhängigkeitsupgrade** – Die Puppeteer-Core-Version wurde auf 19.7.0 aktualisiert. Die Chromium-Version wurde auf 111.0.5563.146 aktualisiert.

**Wichtig**  
Die neue Puppeteer-Core-Version ist nicht vollständig mit früheren Versionen von Puppeteer rückwärtskompatibel. Einige der Änderungen in dieser Version können dazu führen, dass bestehende Canarys, die veraltete Puppeteer-Funktionen verwenden, fehlschlagen. Weitere Informationen finden Sie in den Änderungsprotokollen für die Puppeteer-Core-Versionen 19.7.0 bis 6.0 unter [Puppeteer-Änderungsprotokolle](https://github.com/puppeteer/puppeteer/releases?q=breaking&expanded=true).

### syn-nodejs-puppeteer-4.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-4.0"></a>

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 16.x
+ Puppeteer-Core-Version 5.5.0
+ Chromium-Version 92.0.4512

**Aktualisierungen** in -4.0: syn-nodejs-puppeteer
+ **Abhängigkeitsupgrade** – Die Abhängigkeit Node.js wurde auf Version 16.x aktualisiert.

### syn-nodejs-puppeteer-3.9
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.9"></a>

**Wichtig**  
Diese Laufzeitversion ist seit 08. Januar 2024 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 14.x
+ Puppeteer-Core-Version 5.5.0
+ Chromium-Version 92.0.4512

**Aktualisierungen** in -3.9: syn-nodejs-puppeteer
+ **Abhängigkeitsupgrades** – Aktualisiert einige Abhängigkeitspakete von Drittanbietern.

### syn-nodejs-puppeteer-3.8
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.8"></a>

**Wichtig**  
Diese Laufzeitversion ist seit 08. Januar 2024 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 14.x
+ Puppeteer-Core-Version 5.5.0
+ Chromium-Version 92.0.4512

**Aktualisierungen** in -3.8: syn-nodejs-puppeteer
+ **Profilbereinigung** – Chromium-Profile werden jetzt nach jeder Canary-Ausführung bereinigt.

**Fehlerkorrekturen in syn-nodejs-puppeteer -3.8**:
+ **Bugfixes** – Bisher funktionierte die visuelle Überwachung von Canary manchmal nach einem Lauf ohne Screenshots nicht mehr richtig. Dieses Problem wurde behoben.

### syn-nodejs-puppeteer-3.7
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.7"></a>

**Wichtig**  
Diese Laufzeitversion ist seit 08. Januar 2024 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 14.x
+ Puppeteer-Core-Version 5.5.0
+ Chromium-Version 92.0.4512

**Aktualisierungen** in -3.7: syn-nodejs-puppeteer
+ **Verbessertes Protokoll** – Der Canary lädt Protokolle auf Amazon S3 hoch, auch wenn die Zeit überschritten wird oder ein Absturz auftritt.
+ **Lambda-Ebenengröße reduziert** – Die Größe der für Canarys verwendeten Lambda-Ebene wird um 34 % reduziert.

**Fehlerkorrekturen in syn-nodejs-puppeteer -3.7**:
+ **Fehlerbehebungen** – Japanisch, Vereinfachtes Chinesisch und Traditionelles Chinesisch werden ordnungsgemäß wiedergegeben.

### syn-nodejs-puppeteer-3.6
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.6"></a>

**Wichtig**  
Diese Laufzeitversion ist seit 08. Januar 2024 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 14.x
+ Puppeteer-Core-Version 5.5.0
+ Chromium-Version 92.0.4512

**Aktualisierungen** in -3.6: syn-nodejs-puppeteer
+ **Präzisere Zeitstempel:** Start- und Endzeit von Canary-Ausführungen sind jetzt auf die Millisekunde genau.

### syn-nodejs-puppeteer-3.5
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.5"></a>

**Wichtig**  
Diese Laufzeitversion ist seit 08. Januar 2024 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 14.x
+ Puppeteer-Core-Version 5.5.0
+ Chromium-Version 92.0.4512

**Aktualisierungen** in -3.5: syn-nodejs-puppeteer
+ **Aktualisierte Abhängigkeiten** – Die einzigen neuen Features in dieser Laufzeit sind die aktualisierten Abhängigkeiten.

### syn-nodejs-puppeteer-3.4
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.4"></a>

**Wichtig**  
Diese Laufzeitversion ist seit dem 13. November 2022 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 12.x
+ Puppeteer-Core-Version 5.5.0
+ Chrom-Version 88.0.4298.0

**Aktualisierungen** in -3.4: syn-nodejs-puppeteer
+ **Benutzerdefinierte Handler-Funktion** – Sie können jetzt eine benutzerdefinierte Handler-Funktion für Ihre Canary-Skripte verwenden. Bei früheren Laufzeiten musste der Skript-Eintrittspunkt `.handler` enthalten. 

  Außerdem können Sie Canary-Skripte in einem beliebigen Ordner ablegen und den Ordnernamen als Teil des Handlers übergeben. Beispielsweise kann `MyFolder/MyScriptFile.functionname` als Eintrittspunkt verwendet werden.
+ **Umfassendere Informationen zu HAR Dateien** – Sie können jetzt ungültige, ausstehende und unvollständige Anforderungen in den HAR-Dateien sehen, die von Canarys erstellt werden.

### syn-nodejs-puppeteer-3.3
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.3"></a>

**Wichtig**  
Diese Laufzeitversion ist seit dem 13. November 2022 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 12.x
+ Puppeteer-Core-Version 5.5.0
+ Chrom-Version 88.0.4298.0

**Aktualisierungen** in -3.3: syn-nodejs-puppeteer
+ **Weitere Optionen für die Artefaktverschlüsselung** — Für Kanarienvögel, die diese Runtime oder eine spätere Version verwenden, können Sie wählen, ob Sie einen vom AWS KMS Kunden AWS verwalteten Schlüssel oder einen von Amazon S3 verwalteten Schlüssel verwenden möchten, anstatt einen verwalteten Schlüssel zur Verschlüsselung von Artefakten zu verwenden, die der Canary in Amazon S3 speichert. Weitere Informationen finden Sie unter [Verschlüsseln von Canary-Artefakten](CloudWatch_Synthetics_artifact_encryption.md). 

### syn-nodejs-puppeteer-3.2
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.2"></a>

**Wichtig**  
Diese Laufzeitversion ist seit dem 13. November 2022 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 12.x
+ Puppeteer-Core-Version 5.5.0
+ Chrom-Version 88.0.4298.0

** syn-nodejs-puppeteerAktualisierungen** in -3.2:
+ **Visuelle Überwachung mit Screenshots** – Canarys, die diese Laufzeit oder höher verwenden, können einen während eines Laufs aufgenommenen Screenshot mit einer Baseline-Version desselben Screenshots vergleichen. Wenn sich die Screenshots stärker als ein festgelegter Prozentschwellenwert unterscheiden, schlägt der Canary fehl. Für weitere Informationen siehe [Visuelle Überwachung](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_SyntheticsLogger_VisualTesting) oder [Blueprint für die visuelle Überwachung](CloudWatch_Synthetics_Canaries_Blueprints.md#CloudWatch_Synthetics_Canaries_Blueprints_VisualTesting). 
+ **Neue Funktionen bezüglich sensibler Daten** – Sie können verhindern, dass sensible Daten in Canary-Protokollen und -Berichten erscheinen. Weitere Informationen finden Sie unter [SyntheticsLogHelper Klasse](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_SyntheticsLogHelper).
+ **Veraltete Funktion** Die ` RequestResponseLogHelper`-Klasse ist zugunsten anderer neuer Konfigurationsoptionen veraltet. Weitere Informationen finden Sie unter [RequestResponseLogHelper Klasse](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_RequestResponseLogHelper).

### syn-nodejs-puppeteer-3.1
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.1"></a>

**Wichtig**  
Diese Laufzeitversion ist seit dem 13. November 2022 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 12.x
+ Puppeteer-Core-Version 5.5.0
+ Chrom-Version 88.0.4298.0

**Aktualisierungen** in -3.1: syn-nodejs-puppeteer
+ **Möglichkeit, CloudWatch Metriken zu konfigurieren** — Mit dieser Runtime können Sie die Metriken deaktivieren, die Sie nicht benötigen. Andernfalls veröffentlichen Canaries verschiedene CloudWatch Metriken für jeden Canary-Run.
+ **Screenshot-Verknüpfung** – Sie können einen Screenshot mit einem Canary-Schritt verknüpfen, nachdem der Schritt abgeschlossen ist. Dazu erstellen Sie den Screenshot mit der Methode **takeScreenshot** und verwenden den Namen des Schritts, dem Sie den Screenshot zuordnen möchten. Sie können beispielsweise einen Schritt ausführen, eine Wartezeit hinzufügen und dann den Screenshot erstellen.
+ Der **Heartbeat-Monitor-Blueprint kann mehrere überwachen URLs** — Sie können den Heartbeat-Monitoring-Blueprint in der CloudWatch Konsole verwenden, um mehrere zu überwachen URLs und den Status, die Dauer, die zugehörigen Screenshots und die Fehlerursache für jede URL in der Schrittzusammenfassung des Canary-Run-Berichts zu sehen.

### syn-nodejs-puppeteer-3,0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.0"></a>

**Wichtig**  
Diese Laufzeitversion ist seit dem 13. November 2022 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 12.x
+ Puppeteer-Core-Version 5.5.0
+ Chrom-Version 88.0.4298.0

**Aktualisierungen** in -3.0: syn-nodejs-puppeteer
+ **Aktualisierte Abhängigkeiten** – Diese Version verwendet Puppeteer Version 5.5.0, Node.js 12.x und Chromium 88.0.4298.0.
+ **Regionsübergreifender Bucket** – Sie können jetzt einen S3 Bucket in einer anderen Region als den Bucket angeben, in dem Ihr Canary seine Protokolldateien, Screenshots und HAR-Dateien speichert.
+ **Neue Funktionen verfügbar** – Diese Version fügt Bibliotheksfunktionen hinzu, um den Canary-Namen und die Synthetics-Laufzeitversion abzurufen.

  Weitere Informationen finden Sie unter [Synthetics-Klasse](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_Synthetics_Class_all).

### syn-nodejs-2.2
<a name="CloudWatch_Synthetics_runtimeversion-2.2"></a>

Dieser Abschnitt enthält Informationen zur `syn-nodejs-2.2`-Laufzeitversion.

**Wichtig**  
Diese Laufzeitversion wurde am 28. Mai 2021 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 10.x
+ Puppeteer-Core-Version 3.3.0
+ Chrom-Version 83.0.4103.0

**Änderungen in syn-nodejs-2.2**:
+ **Überwachen Sie Ihre Canaries als HTTP-Schritte** — Sie können jetzt mehrere in einem einzigen Canary testen. APIs Jede API wird als separater HTTP-Schritt getestet, und CloudWatch Synthetics überwacht den Status jedes Schritts anhand von Schrittmetriken und dem CloudWatch Synthetics-Schrittbericht. CloudWatch Synthetics erstellt ` SuccessPercent` `Duration` Metriken für jeden HTTP-Schritt.

  Diese Funktionalität wird durch die Funktion **executeHttpStep(stepName, RequestOptions, Callback, StepConfig**) implementiert. Weitere Informationen finden Sie unter [executeHttpStep(stepName, RequestOptions, [Rückruf], [StepConfig])](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_executeHttpStep).

  Der API-Canary-Blueprint wird aktualisiert, um dieses neue Feature zu verwenden.
+ **Berichterstattung über HTTP-Anfragen** — Sie können jetzt detaillierte Berichte zu HTTP-Anfragen anzeigen, in denen Details wie request/response Header, Antworttext, Statuscode, Fehler- und Leistungszeiten, TCP-Verbindungszeit, TLS-Handshake-Zeit, Zeit des ersten Byte und Inhaltsübertragungszeit erfasst werden. Alle HTTP-Anfragen, die das HTTP/HTTPS Modul unter der Haube verwenden, werden hier erfasst. Header und Antworttext werden nicht standardmäßig erfasst, können aber durch Festlegen von Konfigurationsoptionen aktiviert werden.
+ **Globale Konfiguration und Konfiguration auf schrittweiser Ebene** — Sie können CloudWatch Synthetics-Konfigurationen auf globaler Ebene festlegen, die auf alle Stufen der Kanaren angewendet werden. Sie können diese Konfigurationen auch auf Step-Ebene überschreiben, indem Sie key/value Konfigurationspaare übergeben, um bestimmte Optionen zu aktivieren oder zu deaktivieren.

  Weitere Informationen finden Sie unter [SyntheticsConfiguration Klasse](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_SyntheticsConfiguration).
+ **Konfiguration bei Schrittfehler fortsetzen** – Sie können die Canary-Ausführung fortsetzen, wenn ein Schritt fehlschlägt. Für die ` executeHttpStep`-Funktion ist diese standardmäßig aktiviert. Sie können diese Option einmal auf globaler Ebene festlegen oder pro Schritt unterschiedlich festlegen. 

### syn-nodejs-2.1
<a name="CloudWatch_Synthetics_runtimeversion-2.1"></a>

**Wichtig**  
Diese Laufzeitversion wurde am 28. Mai 2021 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 10.x
+ Puppeteer-Core-Version 3.3.0
+ Chrom-Version 83.0.4103.0

**Aktualisierungen in syn-nodejs-2.1**:
+ **Konfigurierbares Screenshot-Verhalten** – Bietet die Möglichkeit, die Aufnahme von Screenshots durch UI-Canarys auszuschalten. In Canarys, die frühere Versionen der Laufzeitumgebungen verwenden, erfassen UI-Canarys immer Screenshots vor und nach jedem Schritt. Bei `syn-nodejs-2.1` ist dies konfigurierbar. Wenn Sie Screenshots deaktivieren, können Sie Ihre Amazon-S3-Speicherkosten senken und Sie dabei unterstützen, die HIPAA-Vorschriften einzuhalten. Weitere Informationen finden Sie unter [SyntheticsConfiguration Klasse](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_SyntheticsConfiguration).
+ **Anpassen der Startparameter von Google Chrome** – Sie können nun die Argumente konfigurieren, die verwendet werden, wenn ein Canary ein Google-Chrome-Browserfenster startet. Weitere Informationen finden Sie unter [Start (Optionen)](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_LaunchOptions).

Bei Verwendung von syn-nodejs-2.0 oder höher kann es im Vergleich zu früheren Versionen der Canary-Laufzeit zu einer geringfügigen Verlängerung der Canary-Dauer kommen.

### syn-nodejs-2.0
<a name="CloudWatch_Synthetics_runtimeversion-2.0"></a>

**Wichtig**  
Diese Laufzeitversion wurde am 28. Mai 2021 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 10.x
+ Puppeteer-Core-Version 3.3.0
+ Chrom-Version 83.0.4103.0

**Aktualisierungen in syn-nodejs-2.0**:
+ **Aktualisierte Abhängigkeiten** – Diese Laufzeitversion verwendet Puppeteer-Core-Version 3.3.0 und Chromium-Version 83.0.4103.0
+ **Support für aktives X-Ray-Tracing.** Wenn auf einem Canary Tracing aktiviert ist, werden X-Ray-Traces für alle vom Canary getätigten Aufrufe gesendet, die den Browser, das AWS SDK oder HTTP- oder HTTPS-Module verwenden. Canarys mit aktivierter Ablaufverfolgung werden in der X-Ray Trace Map angezeigt, selbst wenn sie keine Anforderungen an andere Services oder Anwendungen senden, für die die Ablaufverfolgung aktiviert ist. Weitere Informationen finden Sie unter [Canary- und X-Ray-Ablaufverfolgung](CloudWatch_Synthetics_Canaries_tracing.md).
+ **Synthetics-Berichterstattung** — Für jeden Canary-Lauf erstellt CloudWatch Synthetics einen Bericht mit dem Namen ` SyntheticsReport-PASSED.json` oder` SyntheticsReport-FAILED.json`, der Daten wie Startzeit, Endzeit, Status und Fehler aufzeichnet. Außerdem werden der PASSED/FAILED Status jedes Schritts des Canary-Skripts sowie Fehler und Screenshots für jeden Schritt aufgezeichnet.
+ **Bericht zur Überprüfung für fehlerhafte Links** – Die neue Version des defekten Link-Prüfungsprogramms, die in dieser Laufzeit enthalten ist, erstellt einen Bericht, der die überprüften Links, Statuscode, Fehlergrund (falls vorhanden) sowie Screenshots der Quell- und Zielseite enthält.
+ **Neue CloudWatch Metriken** — Synthetics veröffentlicht Metriken mit den Namen `2xx` `4xx``5xx`,, und `RequestFailed` im `CloudWatchSynthetics` Namespace. Diese Metriken zeigen die Anzahl der 200s, 400s, 500s und Anforderungsfehler in den Canary-Abläufen an. Mit dieser Laufzeitversion werden diese Metriken nur für UI-Canarys gemeldet und nicht für API-Canarys gemeldet. Sie werden auch für API-Canaries ab Laufzeitversion ` syn-nodejs-puppeteeer-2.2` gemeldet.
+ **Sortierbare HAR-Dateien** – Sie können Ihre HAR-Dateien jetzt nach Statuscode, Anforderungsgröße und Dauer sortieren.
+ **Zeitstempel für CloudWatch Metriken** — Metriken werden jetzt auf der Grundlage der Lambda-Aufrufzeit und nicht auf der Grundlage der Canary-Run-Endzeit gemeldet.

**Fehlerbehebungen in syn-nodejs-2.0**:
+ Problem behoben, dass Fehler beim Hochladen von Canary-Artefakten nicht gemeldet wurden. Solche Fehler werden nun als Ausführungsfehler aufgetaucht.
+ Es wurde das Problem behoben, dass umgeleitete Anforderungen (3xx) fälschlicherweise als Fehler protokolliert wurden.
+ Es wurde das Problem behoben, dass Screenshots beginnend mit 0 durchnummeriert wurden. Sie sollten jetzt mit 1 beginnen.
+ Das Problem, dass Screenshots für chinesische und japanische Schriftarten verstümmelt wurden, wurde behoben.

Bei Verwendung von syn-nodejs-2.0 oder höher kann es im Vergleich zu früheren Versionen der Canary-Laufzeit zu einer geringfügigen Verlängerung der Canary-Dauer kommen.

### syn-nodejs-2.0-beta
<a name="CloudWatch_Synthetics_runtimeversion-2.0-beta"></a>

**Wichtig**  
Diese Laufzeitversion wurde am 8. Februar 2021 veraltet. Weitere Informationen finden Sie unter [Richtlinien zur Unterstützung von Runtime-Versionen](CloudWatch_Synthetics_Runtime_Support_Policy.md).

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 10.x
+ Puppeteer-Core-Version 3.3.0
+ Chrom-Version 83.0.4103.0

**Änderungen in syn-nodejs-2.0-beta**:
+ **Aktualisierte Abhängigkeiten** – Diese Laufzeitversion verwendet Puppeteer-Core-Version 3.3.0 und Chromium-Version 83.0.4103.0
+ **Synthetics-Berichterstattung** — Für jeden Canary-Lauf erstellt CloudWatch Synthetics einen Bericht mit dem Namen ` SyntheticsReport-PASSED.json` oder` SyntheticsReport-FAILED.json`, der Daten wie Startzeit, Endzeit, Status und Fehler aufzeichnet. Außerdem werden der PASSED/FAILED Status jedes Schritts des Canary-Skripts sowie Fehler und Screenshots für jeden Schritt aufgezeichnet.
+ **Bericht zur Überprüfung für fehlerhafte Links** – Die neue Version des defekten Link-Prüfungsprogramms, die in dieser Laufzeit enthalten ist, erstellt einen Bericht, der die überprüften Links, Statuscode, Fehlergrund (falls vorhanden) sowie Screenshots der Quell- und Zielseite enthält.
+ **Neue CloudWatch Metriken** — Synthetics veröffentlicht Metriken mit den Namen `2xx` `4xx``5xx`,, und `RequestFailed` im `CloudWatchSynthetics` Namespace. Diese Metriken zeigen die Anzahl der 200s, 400s, 500s und Anforderungsfehler in den Canary-Abläufen an. Diese Metriken werden nur für UI-Canary gemeldet und nicht für API-Canary gemeldet.
+ **Sortierbare HAR-Dateien** – Sie können Ihre HAR-Dateien jetzt nach Statuscode, Anforderungsgröße und Dauer sortieren.
+ **Zeitstempel für CloudWatch Metriken** — Metriken werden jetzt auf der Grundlage der Lambda-Aufrufzeit und nicht auf der Grundlage der Canary-Run-Endzeit gemeldet.

**Fehlerbehebungen in syn-nodejs-2.0-beta**:
+ Problem behoben, dass Fehler beim Hochladen von Canary-Artefakten nicht gemeldet wurden. Solche Fehler werden nun als Ausführungsfehler aufgetaucht.
+ Es wurde das Problem behoben, dass umgeleitete Anforderungen (3xx) fälschlicherweise als Fehler protokolliert wurden.
+ Es wurde das Problem behoben, dass Screenshots beginnend mit 0 durchnummeriert wurden. Sie sollten jetzt mit 1 beginnen.
+ Das Problem, dass Screenshots für chinesische und japanische Schriftarten verstümmelt wurden, wurde behoben.

### syn-1.0
<a name="CloudWatch_Synthetics_runtimeversion-1.0"></a>

Die erste Synthetics-Laufzeitversion ist `syn-1.0`.

**Wichtige Abhängigkeiten**:
+ Lambda-Laufzeit Node.js 10.x
+ Puppeteer-Core-Version 1.14.0
+ Die Chromium-Version, die Puppeteer-Core 1.14.0 entspricht

# Laufzeitversionen mit Python und Selenium Webdriver
<a name="CloudWatch_Synthetics_Library_python_selenium"></a>

Die folgenden Abschnitte enthalten Informationen zu den CloudWatch Synthetics-Laufzeitversionen für Python und Selenium Webdriver. Selenium ist ein Open-Source-Browser-Automatisierungs-Tool. [Weitere Informationen zu Selenium finden Sie unter www.selenium.dev/](https://www.selenium.dev)

Informationen zu Features und Methoden, die von Synthetics-Laufzeit auf dem Selenium-Framework unterstützt werden, finden Sie unter [Python- und Selenium-Bibliotheksklassen und Funktionen, die nur für UI-Canarys gelten](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library_Python.html#CloudWatch_Synthetics_Library_Python_UIcanaries) und [Selenium-API-Referenz](https://www.selenium.dev/selenium/docs/api/py/api.html).

Die Namenskonvention für diese Laufzeitversionen lautet `syn-language -framework-majorversion. minorversion`.

## syn-python-selenium-10.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-10.0"></a>

Version 10.0 ist die neueste CloudWatch Synthetics-Runtime für Python und Selenium.

**Wichtige Abhängigkeiten**:
+ Python 3.11
+ Selen 4.32.0
+ Chrom-Version 145.0.7632.77

**Änderungen syn-python-selenium in -10.0** 
+ Angewendete Sicherheitspatches und aktualisierte Browserversionen.

Weitere Informationen finden Sie hier:
+  [Selenium-Änderungsprotokoll](https://www.selenium.dev/blog/2025/selenium-4-32-released) 
+  [Dokumentation zu Selenium](https://www.selenium.dev/selenium/docs/api/py/api.html) 

## Frühere Laufzeitversionen für Python und Selenium
<a name="Previousversions-python-selenium"></a>

Die folgenden früheren Laufzeitversionen für Python und Selenium werden weiterhin unterstützt. 

### syn-python-selenium-9,0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-9.0"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.11
+ Selen 4.32.0
+ Chrom-Version 143.0.7499.169

**Änderungen syn-python-selenium in -9.0** 
+ Angewendete Sicherheitspatches und aktualisierte Browserversionen.

Weitere Informationen finden Sie hier:
+  [Selenium-Änderungsprotokoll](https://www.selenium.dev/blog/2025/selenium-4-32-released) 
+  [Dokumentation zu Selenium](https://www.selenium.dev/selenium/docs/api/py/api.html) 

### syn-python-selenium-8.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-8.0"></a>

Version 8.0 ist die neueste CloudWatch Synthetics-Runtime für Python und Selenium.

**Wichtige Abhängigkeiten**:
+ Python 3.11
+ Selen 4.32.0
+ Chromium-Version 142.0.7444.175

**Änderungen syn-python-selenium in -8.0** 
+ Sicherheitspatches wurden angewendet und Selenium- und Browserversionen aktualisiert.
+ Die Protokollebene für fehlgeschlagene HAR-Netzwerkanfragen wurde von ERROR auf INFO geändert.

Weitere Informationen finden Sie hier:
+  [Selenium-Änderungsprotokoll](https://www.selenium.dev/blog/2025/selenium-4-32-released) 
+  [Dokumentation zu Selenium](https://www.selenium.dev/selenium/docs/api/py/api.html) 

### syn-python-selenium-7.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-7.0"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.11
+ Selen 4.32.0
+ Chromium-Version 138.0.7204.168

 **Änderungen in -7.0 syn-python-selenium** 
+ Sicherheitspatches wurden angewendet und Selenium- und Browserversionen aktualisiert.

Weitere Informationen finden Sie hier:
+  [Selenium-Änderungsprotokoll](https://www.selenium.dev/blog/2025/selenium-4-32-released) 
+  [Dokumentation zu Selenium](https://www.selenium.dev/selenium/docs/api/py/api.html) 

### syn-python-selenium-6.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-6.0"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.11
+ Selenium 4.21.0
+ Chromium-Version 131.0.6778.264

 **Änderungen in -6.0 syn-python-selenium** 
+ Aktualisieren Sie von Python 3.9 auf Python 3.11.

Weitere Informationen finden Sie hier:
+  [Selenium-Änderungsprotokoll](https://www.selenium.dev/blog/2024/selenium-4-21-released/) 
+  [Dokumentation zu Selenium](https://www.selenium.dev/selenium/docs/api/py/api.html) 

### syn-python-selenium-5.1
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-5.1"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.9
+ Selenium 4.21.0
+ Chromium-Version 131.0.6778.264

 **Änderungen in -5.1 syn-python-selenium** 
+ Kleinere Updates zur metrischen Emission.
+ Unterstützt Testläufe für den Canary, was Ad-hoc-Ausführungen oder die Durchführung eines sicheren Canary-Updates ermöglicht.

### syn-python-selenium-5,0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-5.0"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.9
+ Selenium 4.21.0
+ Chromium-Version 131.0.6778.264

**Änderungen in** -5.0: syn-python-selenium
+ Automatischer Wiederholungsversuch, wenn der Browser nicht gestartet werden kann.

### syn-python-selenium-4.1
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-4.1"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.9
+ Selen 4.15.1
+ Chromium-Version 126.0.6478.126

**Änderungen in** -4.1: syn-python-selenium
+ **Behebt Sicherheitslücken **– Für diese Laufzeit gibt es ein Update, um die Sicherheitslücke [CVE-2024-39689](https://nvd.nist.gov/vuln/detail/CVE-2024-39689) zu schließen.

### syn-python-selenium-4.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-4.0"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.9
+ Selen 4.15.1
+ Chromium-Version 126.0.6478.126

**Änderungen in** -4.0: syn-python-selenium
+ **Fehlerkorrekturen** für Fehler bei der HAR-Parser-Protokollierung.

## Veraltete Laufzeitversionen für Python und Selenium
<a name="Deprecated-python-selenium"></a>

Die folgenden früheren Laufzeitversionen für Python und Selenium sind veraltet. Hinweise zu den Ablaufdaten der Laufzeit finden Sie unter [CloudWatch Verfallsdaten für Synthetics Runtime](CloudWatch_Synthetics_Runtime_Support_Policy.md#runtime_deprecation_dates).

### syn-python-selenium-3.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-3.0"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.8
+ Selen 4.15.1
+ Chromium-Version 121.0.6167.139

**Änderungen syn-python-selenium in -3.0:**
+ **Aktualisierte Versionen der gebündelten Bibliotheken in Chromium** – Die Chromium-Abhängigkeit wurde auf eine neue Version aktualisiert.

### syn-python-selenium-2.1
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-2.1"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.8
+ Selen 4.15.1
+ Chromium-Version 111.0.5563.146

**Änderungen in** -2.1: syn-python-selenium
+ **Aktualisierte Versionen der gebündelten Bibliotheken in Chromium** – Die Chromium- und Selenium-Abhängigkeiten wurden auf neue Versionen aktualisiert.

### syn-python-selenium-2,0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-2.0"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.8
+ Selenium 4.10.0
+ Chromium-Version 111.0.5563.146

**Änderungen in** -2.0: syn-python-selenium
+ **Aktualisierte Abhängigkeiten** – Die Chromium- und Selenium-Abhängigkeiten wurden auf neue Versionen aktualisiert.

**Fehlerkorrekturen in syn-python-selenium -2.0**:
+ **Zeitstempel hinzugefügt** – Ein Zeitstempel wurde zu Canary-Protokollen hinzugefügt.
+ **Wiederverwendung von Sitzungen** – Es wurde ein Fehler behoben, der verhindert, dass Canarys die Sitzung ihres vorherigen Canary-Laufs wiederverwenden.

### syn-python-selenium-1.3
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-1.3"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.8
+ Selenium 3.141.0
+ Chromium-Version 92.0.4512.0

**Änderungen in** -1.3: syn-python-selenium
+ **Präzisere Zeitstempel:** Start- und Endzeit von Canary-Ausführungen sind jetzt auf die Millisekunde genau.

### syn-python-selenium-1.2
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-1.2"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.8
+ Selenium 3.141.0
+ Chromium-Version 92.0.4512.0
+ **Aktualisierte Abhängigkeiten** – Die einzigen neuen Funktionen in dieser Laufzeit sind die aktualisierten Abhängigkeiten.

### syn-python-selenium-1.1
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-1.1"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.8
+ Selenium 3.141.0
+ Chrom-Version 83.0.4103.0

**Features:**
+ **Benutzerdefinierte Handler-Funktion** – Sie können jetzt eine benutzerdefinierte Handler-Funktion für Ihre Canary-Skripte verwenden. Bei früheren Laufzeiten musste der Skript-Eintrittspunkt `.handler` enthalten. 

  Außerdem können Sie Canary-Skripte in einem beliebigen Ordner ablegen und den Ordnernamen als Teil des Handlers übergeben. Beispielsweise kann `MyFolder/MyScriptFile.functionname` als Eintrittspunkt verwendet werden.
+ **Konfigurationsoptionen zum Hinzufügen von Metriken und Schrittfehlerkonfigurationen** – Diese Optionen waren bereits in Laufzeiten für Node.js-Canarys verfügbar. Weitere Informationen finden Sie unter [SyntheticsConfiguration Klasse](CloudWatch_Synthetics_Canaries_Library_Python.md#CloudWatch_Synthetics_Library_SyntheticsConfiguration_Python).
+ **Benutzerdefinierte Argumente in Chrome** – Sie können jetzt einen Browser im Inkognito-Modus öffnen oder die Proxy-Server-Konfiguration übergeben. Weitere Informationen finden Sie unter [Chrome()](CloudWatch_Synthetics_Canaries_Library_Python.md#CloudWatch_Synthetics_Library_Python_Chrome).
+ **Regionsübergreifende Artefakt-Bucketse** – Ein Canary kann seine Artefakte in einem Amazon-S3-Bucket in einer anderen Region speichern.
+ **Fehlerbehebungen, einschließlich einer Fehlerbehebung für das `index.py`-Problem** – Bei früheren Laufzeiten führte eine Canary-Datei mit dem Namen ` index.py` zu Ausnahmen, weil dies einen Konflikt mit dem Namen der Bibliotheksdatei verursachte. Dieses Problem wurde behoben.

### syn-python-selenium-1.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-1.0"></a>

**Wichtige Abhängigkeiten**:
+ Python 3.8
+ Selenium 3.141.0
+ Chrom-Version 83.0.4103.0

**Features:**
+ **Selenium-Unterstützung** – Sie können Canary-Skripte mit dem Selenium-Test-Framework schreiben. Sie können Ihre Selenium-Skripte mit minimalen Änderungen von woanders in CloudWatch Synthetics importieren, und sie funktionieren mit AWS Diensten.

# Runtime-Versionen, die Node.js verwenden
<a name="CloudWatch_Synthetics_Library_Nodejs"></a>

Der folgende Abschnitt enthält Informationen zu den CloudWatch Synthetics-Laufzeitversionen für Node.js. In dieser Laufzeit ist kein Browser oder Framework enthalten.

Die Namenskonvention für diese Laufzeitversionen lautet `syn-language -majorversion.minorversion`.

## syn-nodejs-4.1
<a name="CloudWatch_Synthetics_runtimeversion-syn-nodejs-4.1"></a>

**Wichtig**  
Beim Starten von Synthetics `syn-nodejs-3.1` und später verwendet Synthetics Runtime den neuen Namespace. Bitte migrieren Sie das Canary-Skript, um den neuen Namespace zu verwenden. Legacy-Namespace wird in einer future Version nicht mehr unterstützt.  
@ -core amzn/synthetics-core → @aws/synthetics

**Wichtige Abhängigkeiten**:
+ AWS Lambda Laufzeit Node.js 2.x

 **Änderungen in syn-nodejs-4.1** 
+ Führen Sie ein Upgrade auf 5.5.7 durch`fast-xml-parser`, um Folgendes zu beheben: CVEs
  + CVE-2026-25128
  + CVE-2026-25896
  + CVE-2026-26278
  + CVE-2026-27942
  + CVE-2026-33036

## Frühere Runtime-Versionen für Node.js
<a name="Previousversions-nodejs"></a>

Die folgenden früheren Runtime-Versionen für Node.js werden weiterhin unterstützt. 

### syn-nodejs-4.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-nodejs-4.0"></a>

**Wichtige Abhängigkeiten**:
+ AWS Lambda Laufzeit Node.js 2.x

 **Änderungen in syn-nodejs-4.0** 
+ Angewendete Sicherheitspatches. 

### syn-nodejs-3.1
<a name="CloudWatch_Synthetics_runtimeversion-syn-nodejs-3.1"></a>

**Wichtig**  
Beim Starten von Synthetics `syn-nodejs-3.1` und später verwendet Synthetics Runtime den neuen Namespace. Bitte migrieren Sie das Canary-Skript, um den neuen Namespace zu verwenden. Legacy-Namespace wird in einer future Version nicht mehr unterstützt.  
@ -core amzn/synthetics-core → @aws/synthetics

**Wichtige Abhängigkeiten**:
+ AWS Lambda Laufzeit Node.js 20.x

 **Änderungen in syn-nodejs-3.1** 
+ Migration des Synthetics-Runtime-Namespaces. 
+ [Die Typdefinition ist in der npm-Registrierung verfügbar.](https://www.npmjs.com/package/@aws/synthetics-core) Bitte stellen Sie sicher, dass die Version des Typdefinitionspakets mit der Runtime-Version Ihres Canary übereinstimmt.

### syn-nodejs-3.0
<a name="Synthetics_runtimeversion-syn-nodejs-3.0"></a>

**Wichtige Abhängigkeiten**:
+ AWS Lambda Laufzeit Node.js 20.x

 **Änderungen in syn-nodejs-3.0** 
+ Support für Multi-Checks Blueprint. 

# Richtlinien zur Unterstützung von Runtime-Versionen
<a name="CloudWatch_Synthetics_Runtime_Support_Policy"></a>

Synthetics-Laufzeitversionen unterliegen Wartungs- und Sicherheitsupdates. Wenn eine Komponente einer Laufzeitversion nicht mehr unterstützt wird, gilt diese Synthetics-Laufzeitversion als veraltet.

Sie können keine Canaries mit veralteten Laufzeitversionen erstellen. Canaries, die veraltete Laufzeiten verwenden, werden weiterhin ausgeführt. Sie können diese Canaries stoppen, starten und löschen. Sie können ein vorhandenes Canary aktualisieren, das eine veraltete Laufzeitversion verwendet, indem Sie das Canary so aktualisieren, dass es eine unterstützte Laufzeitversion verwendet.

CloudWatch Synthetics benachrichtigt Sie per E-Mail, wenn Sie Kanarienvögel haben, die Laufzeiten verwenden, die in den nächsten 60 Tagen nicht mehr unterstützt werden sollen. Es wird empfohlen, Ihre Canarys auf eine unterstützte Laufzeitversion zu migrieren, um von den neuen Funktionalitäts-, Sicherheits- und Leistungsverbesserungen zu profitieren, die in neueren Versionen enthalten sind. 

## CloudWatch Verfallsdaten für Synthetics Runtime
<a name="runtime_deprecation_dates"></a>

In der folgenden Tabelle ist das Datum aufgeführt, an dem jede veraltete Synthetics-Laufzeit veraltet CloudWatch ist.


| Laufzeitversion | Datum der Veraltung | 
| --- | --- | 
|   `syn-python-selenium-5.1`   |  3. Februar 2026  | 
|   `syn-python-selenium-5.0`   |  3. Februar 2026  | 
|   `syn-python-selenium-4.1`   |  3. Februar 2026  | 
|   `syn-python-selenium-4.0`   |  3. Februar 2026  | 
|   `syn-nodejs-puppeteer-7.0`   |  22. Januar 2026  | 
|   `syn-nodejs-puppeteer-6.2`   |  22. Januar 2026  | 
|   `syn-nodejs-puppeteer-5.2`   |  22. Januar 2026  | 
|   `syn-python-selenium-3.0`   |  22. Januar 2026  | 
|   `syn-python-selenium-2.1`   |  22. Januar 2026  | 
|   `syn-nodejs-puppeteer-6.1`   |  8. März 2024  | 
|   `syn-nodejs-puppeteer-6.0`   |  8. März 2024  | 
|   `syn-nodejs-puppeteer-5.1`   |  8. März 2024  | 
|   `syn-nodejs-puppeteer-5.0`   |  8. März 2024  | 
|   `syn-nodejs-puppeteer-4.0`   |  8. März 2024  | 
|   `syn-nodejs-puppeteer-3.9`   |  8. Januar 2024  | 
|   `syn-nodejs-puppeteer-3.8`   |  8. Januar 2024  | 
|   `syn-python-selenium-2.0`   |  8. März 2024  | 
|   `syn-python-selenium-1.3`   |  8. März 2024  | 
|   `syn-python-selenium-1.2`   |  8. März 2024  | 
|   `syn-python-selenium-1.1`   |  8. März 2024  | 
|   `syn-python-selenium-1.0`   |  8. März 2024  | 
|   `syn-nodejs-puppeteer-3.7`   |  8. Januar 2024  | 
|   `syn-nodejs-puppeteer-3.6`   |  8. Januar 2024  | 
|   `syn-nodejs-puppeteer-3.5`   |  8. Januar 2024  | 
|   `syn-nodejs-puppeteer-3.4`   |  13. November 2022  | 
|   `syn-nodejs-puppeteer-3.3`   |  13. November 2022  | 
|   `syn-nodejs-puppeteer-3.2`   |  13. November 2022  | 
|   `syn-nodejs-puppeteer-3.1`   |  13. November 2022  | 
|   `syn-nodejs-puppeteer-3.0`   |  13. November 2022  | 
|   `syn-nodejs-2.2`   |  28. Mai 2021  | 
|   `syn-nodejs-2.1`   |  28. Mai 2021  | 
|   `syn-nodejs-2.0`   |  28. Mai 2021  | 
|   `syn-nodejs-2.0-beta`   |  8. Februar 2021  | 
|   `syn-1.0`   |  28. Mai 2021  | 

# Aktualisierung der Runtime-Versionen
<a name="CloudWatch_Synthetics_Runtime_Version_Update"></a>

Sie können die Runtime-Version eines Canary mithilfe der CloudWatch Konsole AWS CloudFormation, des AWS CLI oder des AWS SDK aktualisieren. Wenn Sie die CloudWatch Konsole verwenden, können Sie bis zu fünf Canaries gleichzeitig aktualisieren, indem Sie sie auf der Seite mit der Canary-Liste auswählen und dann **Aktionen**, **Runtime aktualisieren** wählen.

Sie können das Update überprüfen, indem Sie es zuerst testen, bevor Sie das Runtime-Update durchführen. Wenn Sie die Runtime-Versionen aktualisieren, wählen Sie in der CloudWatch Konsole die Optionen **Testlauf starten** oder **Validieren und später speichern**, um zusammen mit allen Änderungen, die Sie an der Konfiguration vorgenommen haben, einen Testlauf des ursprünglichen Canary zu erstellen. Beim Testlauf wird der Canary aktualisiert und ausgeführt, um zu überprüfen, ob das Laufzeit-Update für den Canary sicher ist. Sobald Sie Ihren Canary mit der neuen Laufzeitversion verifiziert haben, können Sie die Laufzeitversion Ihres Canary aktualisieren. Weitere Informationen finden Sie unter [Durchführen sicherer Canary-Updates](performing-safe-canary-upgrades.md).

Alternativ können Sie das Update überprüfen, indem Sie zuerst den Canary mithilfe der CloudWatch Konsole klonen und die Runtime-Version aktualisieren. Dadurch entsteht ein weiterer Canary, der ein Klon Ihres ursprünglichen Canarys ist. Sobald Sie Ihren Canary mit der neuen Laufzeitversion verifiziert haben, können Sie die Laufzeitversion Ihres ursprünglichen Canary aktualisieren und den Klon-Canary löschen.

 Sie können auch mehrere Canarys mit einem Upgrade-Skript aktualisieren. Weitere Informationen finden Sie unter [Canary-Laufzeit-Upgradeskript](#CloudWatch_Synthetics_Canaries_upgrade_script).

Wenn Sie einen Canary aktualisieren und dies fehlschlägt, finden Sie unter [Problembehandlung bei fehlgeschlagenem Canary](CloudWatch_Synthetics_Canaries_Troubleshoot.md).

## Canary-Laufzeit-Upgradeskript
<a name="CloudWatch_Synthetics_Canaries_upgrade_script"></a>

Verwenden Sie das folgende Skript, um ein Canary-Skript auf eine unterstützte Laufzeitversion zu aktualisieren.

```
const AWS = require('aws-sdk');

// You need to configure your AWS credentials and Region.
//   https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
//   https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-region.html

const synthetics = new AWS.Synthetics();

const DEFAULT_OPTIONS = {
  /**
   * The number of canaries to upgrade during a single run of this script.
   */
  count: 10,
  /**
   * No canaries are upgraded unless force is specified.
   */
  force: false
};

/**
 * The number of milliseconds to sleep between GetCanary calls when
 * verifying that an update succeeded.
 */
const SLEEP_TIME = 5000;

(async () => {
  try {
    const options = getOptions();

    const versions = await getRuntimeVersions();
    const canaries = await getAllCanaries();
    const upgrades = canaries
      .filter(canary => !versions.isLatestVersion(canary.RuntimeVersion))
      .map(canary => {
        return {
          Name: canary.Name,
          FromVersion: canary.RuntimeVersion,
          ToVersion: versions.getLatestVersion(canary.RuntimeVersion)
        };
      });

    if (options.force) {
      const promises = [];

      for (const upgrade of upgrades.slice(0, options.count)) {
        const promise = upgradeCanary(upgrade);
        promises.push(promise);
        // Sleep for 100 milliseconds to avoid throttling.
        await usleep(100);
      }

      const succeeded = [];
      const failed = [];
      for (let i = 0; i < upgrades.slice(0, options.count).length; i++) {
        const upgrade = upgrades[i];
        const promise = promises[i];
        try {
          await promise;
          console.log(`The update of ${upgrade.Name} succeeded.`);
          succeeded.push(upgrade.Name);
        } catch (e) {
          console.log(`The update of ${upgrade.Name} failed with error: ${e}`);
          failed.push({
            Name: upgrade.Name,
            Reason: e
          });
        }
      }

      if (succeeded.length) {
        console.group('The following canaries were upgraded successfully.');
        for (const name of succeeded) {
          console.log(name);
        }
        console.groupEnd()
      } else {
        console.log('No canaries were upgraded successfully.');
      }

      if (failed.length) {
        console.group('The following canaries were not upgraded successfully.');
        for (const failure of failed) {
          console.log('\x1b[31m', `${failure.Name}: ${failure.Reason}`, '\x1b[0m');
        }
        console.groupEnd();
      }
    } else {
      console.log('Run with --force [--count <count>] to perform the first <count> upgrades shown. The default value of <count> is 10.')
      console.table(upgrades);
    }
  } catch (e) {
    console.error(e);
  }
})();

function getOptions() {
  const force = getFlag('--force', DEFAULT_OPTIONS.force);
  const count = getOption('--count', DEFAULT_OPTIONS.count);
  return { force, count };

  function getFlag(key, defaultValue) {
    return process.argv.includes(key) || defaultValue;
  }
  function getOption(key, defaultValue) {
    const index = process.argv.indexOf(key);
    if (index < 0) {
      return defaultValue;
    }
    const value = process.argv[index + 1];
    if (typeof value === 'undefined' || value.startsWith('-')) {
      throw `The ${key} option requires a value.`;
    }
    return value;
  }
}

function getAllCanaries() {
  return new Promise((resolve, reject) => {
    const canaries = [];

    synthetics.describeCanaries().eachPage((err, data) => {
      if (err) {
        reject(err);
      } else {
        if (data === null) {
          resolve(canaries);
        } else {
          canaries.push(...data.Canaries);
        }
      }
    });
  });
}

function getRuntimeVersions() {
  return new Promise((resolve, reject) => {
    const jsVersions = [];
    const pythonVersions = [];
    synthetics.describeRuntimeVersions().eachPage((err, data) => {
      if (err) {
        reject(err);
      } else {
        if (data === null) {
          jsVersions.sort((a, b) => a.ReleaseDate - b.ReleaseDate);
          pythonVersions.sort((a, b) => a.ReleaseDate - b.ReleaseDate);
          resolve({
            isLatestVersion(version) {
              const latest = this.getLatestVersion(version);
              return latest === version;
            },
            getLatestVersion(version) {
              if (jsVersions.some(v => v.VersionName === version)) {
                return jsVersions[jsVersions.length - 1].VersionName;
              } else if (pythonVersions.some(v => v.VersionName === version)) {
                return pythonVersions[pythonVersions.length - 1].VersionName;
              } else {
                throw Error(`Unknown version ${version}`);
              }
            }
          });
        } else {
          for (const version of data.RuntimeVersions) {
            if (version.VersionName === 'syn-1.0') {
              jsVersions.push(version);
            } else if (version.VersionName.startsWith('syn-nodejs-2.')) {
              jsVersions.push(version);
            } else if (version.VersionName.startsWith('syn-nodejs-puppeteer-')) {
              jsVersions.push(version);
            } else if (version.VersionName.startsWith('syn-python-selenium-')) {
              pythonVersions.push(version);
            } else {
              throw Error(`Unknown version ${version.VersionName}`);
            }
          }
        }
      }
    });
  });
}

async function upgradeCanary(upgrade) {
  console.log(`Upgrading canary ${upgrade.Name} from ${upgrade.FromVersion} to ${upgrade.ToVersion}`);
  await synthetics.updateCanary({ Name: upgrade.Name, RuntimeVersion: upgrade.ToVersion }).promise();
  while (true) {
    await usleep(SLEEP_TIME);
    console.log(`Getting the state of canary ${upgrade.Name}`);
    const response = await synthetics.getCanary({ Name: upgrade.Name }).promise();
    const state = response.Canary.Status.State;
    console.log(`The state of canary ${upgrade.Name} is ${state}`);
    if (state === 'ERROR' || response.Canary.Status.StateReason) {
      throw response.Canary.Status.StateReason;
    }
    if (state !== 'UPDATING') {
      return;
    }
  }
}

function usleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
```

# Ein Canary-Skript schreiben
<a name="CloudWatch_Synthetics_Canaries_WritingCanary"></a>

In den folgenden Abschnitten wird erklärt, wie man ein Canary-Skript schreibt und wie man ein Canary-Skript in andere AWS Dienste und mit externen Abhängigkeiten und Bibliotheken integriert.

**Topics**
+ [Schreiben eines Canary-Skript mit der Java-Laufzeit](Synthetics_WritingCanary_Java.md)
+ [Schreiben eines Node.js-Canary-Skript mit der Playwright-Laufzeit](Synthetics_WritingCanary_Nodejs_Playwright.md)
+ [Schreiben eines Node.js-Canary-Skript mit der Puppeteer-Laufzeit](CloudWatch_Synthetics_Canaries_WritingCanary_Nodejs_Pup.md)
+ [Ein Python-Canary-Skript schreiben](CloudWatch_Synthetics_Canaries_WritingCanary_Python.md)
+ [Schreiben einer JSON-Konfiguration für den Blueprint Node.js Multi Checks](CloudWatch_Synthetics_WritingCanary_Multichecks.md)

# Schreiben eines Canary-Skript mit der Java-Laufzeit
<a name="Synthetics_WritingCanary_Java"></a>

**Topics**
+ [Java-Projektstruktur für ein Canary](#Synthetics_canary_Java_package)
+ [Bündeln des Projekt für einen Canary](#Synthetics_canary_Java_package_canary)
+ [Handlername](#Synthetics_canary_Java_handler)
+ [CloudWatch Synthetics Konfigurationen](#Synthetics_canary_Java_config)
+ [CloudWatch Synthetics-Umgebungsvariablen](#Synthetics_canary_Java_variables)

## Java-Projektstruktur für ein Canary
<a name="Synthetics_canary_Java_package"></a>

Zur Erstellung eines Canary in Java müssen Sie Ihren Code schreiben, kompilieren und die kompilierten Artefakte in Synthetics bereitstellen. Sie können ein Java-Lambda-Projekt auf verschiedene Arten initialisieren. Sie können beispielsweise ein Standard-Java-Projekt-Setup in Ihrer bevorzugten IDE wie IntelliJ IDEA oder Visual Studio Code verwenden. Alternativ können Sie die erforderliche Dateistruktur manuell erstellen.

Ein Synthetics-Java-Projekt hat die folgende allgemeine Struktur:

```
/project-root
    └ src
        └ main
            └ java
                └ canarypackage // name of package
                |    └ ExampleCanary.java // Canary code file
                |    └ other_supporting_classes
                - resources
                     └ synthetics.json // Synthetics configuration file    
     └ build.gradle OR pom.xml
```

Sie können entweder Maven oder Gradle verwenden, um Ihr Projekt zu erstellen und Abhängigkeiten zu verwalten.

In der obigen Struktur ist die `ExampleCanary`-Klasse der Einstiegspunkt oder Handler für den Canary.

 **Beispiel für eine Canary-Java-Klasse** 

In diesem Beispiel stellt ein Canary eine GET-Anfrage an eine URL, die in der Lambda-Umgebungsvariablen *TESTING\$1URL* gespeichert ist. Der Canary verwendet keine der von Synthetics-Laufzeit bereitgestellten Methoden.

```
package canarypackage;

import java.net.HttpURLConnection;
import java.net.URL;

// Handler value: canary.ExampleCanary::canaryCode
public class ExampleCanary { 
  public void canaryCode() throws Exception{ 
      URL url = new URL(System.getenv("TESTING_URL"));
      HttpURLConnection con=(HttpURLConnection)url.openConnection();
      con.setRequestMethod("GET");
      con.setConnectTimeout(5000);
      con.setReadTimeout(5000);
      int status=con.getResponseCode();
      if(status!=200){
        throw new Exception("Failed to load " + url + ", status code: " + status);
      }
  }
}
```

Es wird dringend empfohlen, Ihre Canarys mithilfe der von Synthetics bereitgestellten Bibliotheksfunktion `executeStep` zu modularisieren. Der Canary `get` ruft zwei separate Variablen auf, die von und von der URLs Umgebung stammen. URL1 URL2 

**Anmerkung**  
Zur Verwendung der `executeStep`-Funktionalität sollte die Handler-Methode für den Canary einen Parameter vom Typ Synthetics verwenden, wie unten gezeigt. 

```
package canarypackage;

import com.amazonaws.synthetics.Synthetics;
import java.net.HttpURLConnection;
import java.net.URL;

// Handler value: canary.ExampleCanary::canaryCode
public class ExampleCanary {
  public void canaryCode(Synthetics synthetics) throws Exception {
    createStep("Step1", synthetics, System.getenv("URL1"));
    createStep("Step2", synthetics, System.getenv("URL2"));
    return;
  }
  
  private void createStep(String stepName, Synthetics synthetics, String url) throws Exception{
    synthetics.executeStep(stepName,()->{
      URL obj=new URL(url);
      HttpURLConnection con=(HttpURLConnection)obj.openConnection();
      con.setRequestMethod("GET");
      con.setConnectTimeout(5000);
      con.setReadTimeout(5000);
      int status=con.getResponseCode();
      if(status!=200){
        throw new Exception("Failed to load" + url + "status code:" + status);
      }
      return null;
    }).get();
  }
}
```

## Bündeln des Projekt für einen Canary
<a name="Synthetics_canary_Java_package_canary"></a>

Synthetics akzeptiert Code für einen Java-Canary im *Zip*-Format. Die ZIP-Datei besteht aus den Klassendateien für den Canary-Code, den Jars für alle Abhängigkeiten von Drittanbietern und der Synthetics-Konfigurationsdatei.

Ein Synthetics-Java-Zip enthält die folgende allgemeine Struktur.

```
example-canary
    └ lib
    |  └ //third party dependency jars
       └ java-canary.jar
    └ synthetics.json
```

Um diese Zip-Datei aus der obigen Projektstruktur zu erstellen, können Sie Gradle (build.gradle) oder Maven (pom.xml) verwenden. Ein Beispiel.

[Informationen zu Abhängigkeiten oder Schnittstellen zur Kompilierzeit für die Synthetics-Bibliothek finden Sie in der README-Datei unter aws-cloudwatch-synthetics-sdk -java.](https://github.com/aws/aws-cloudwatch-synthetics-sdk-java/tree/main)

```
plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    // Third party dependencies 
    // example: implementation 'software.amazon.awssdk:s3:2.31.9'
    
    // Declares dependency on Synthetics interfaces for compiling only
    // Refer https://github.com/aws/aws-cloudwatch-synthetics-sdk-java for building from source.
    compileOnly 'software.amazon.synthetics:aws-cloudwatch-synthetics-sdk-java:1.0.0'}

test {
    useJUnitPlatform()
}

// Build the zip to be used as Canary code.
task buildZip(type: Zip) {

    archiveFileName.set("example-canary.zip")
    destinationDirectory.set(file("$buildDir"))
    
    from processResources
    into('lib') {
        from configurations.runtimeClasspath
        from(tasks.named("jar"))
    }
    from "src/main/java/resources/synthetics.json"
    
    doLast {
        println "Artifact written to: ${archiveFile.get().asFile.absolutePath}"
    }
}

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

tasks.named("build") {
    dependsOn "buildZip"
}
```

## Handlername
<a name="Synthetics_canary_Java_handler"></a>

Der Handler-Name ist der Einstiegspunkt für den Canary. Für die Java-Laufzeit hat der Handler das folgende Format.

```
<<full qualified name for canary class>>::<<name of the method to start the execution from>>
// for above code: canarypackage.ExampleCanary::canaryCode
```

## CloudWatch Synthetics Konfigurationen
<a name="Synthetics_canary_Java_config"></a>

Sie können das Verhalten der Synthetics-Java-Laufzeit konfigurieren, indem Sie eine optionale JSON-Konfigurationsdatei mit dem Namen `synthetics.json` bereitstellen. Diese Datei sollte im Stammverzeichnis der Paket-Zip-Datei gebündelt werden. Eine Konfigurationsdatei ist zwar optional, CloudWatch verwendet aber die Standardwerte, wenn Sie keine Konfigurationsdatei angeben oder ein Konfigurationsschlüssel fehlt.

Im Folgenden sind die unterstützten Konfigurationswerte und ihre Standardwerte aufgeführt.

```
{
    "step": {
        "stepSuccessMetric": true,
        "stepDurationMetric": true,
        "continueOnStepFailure": false,
        "stepsReport": true
    },
    "logging": {
        "logRequest": false,
        "logResponse": false
    },
    "httpMetrics": {
        "metric_2xx": true,
        "metric_4xx": true,
        "metric_5xx": true,
        "aggregated2xxMetric": true,
        "aggregated4xxMetric": true,
        "aggregated5xxMetric": true
    },
    "canaryMetrics": {
        "failedCanaryMetric": true,
        "aggregatedFailedCanaryMetric": true
    }
}
```

 **Schritt-Konfigurationen** 
+ *continueOnStepFehler* — Legt fest, ob ein Skript auch dann fortgesetzt werden soll, wenn ein Schritt fehlgeschlagen ist. Der Standardwert lautet „false“.
+ *stepSuccessMetric* – Ermittelt, ob die ` SuccessPercent`-Metrik eines Schritts ausgegeben wird. Die `SuccessPercent` Metrik für einen Schritt ist *100* für den Canary-Run, wenn der Schritt erfolgreich ist, und *0*, wenn der Schritt fehlschlägt. Der Standardwert ist *true*.
+ *stepDurationMetric*— Bestimmt, ob die Metrik „*Dauer*“ eines Schritts ausgegeben wird. Die *Dauer*-Metrik wird als Dauer der Ausführung des Schritts in Millisekunden ausgegeben. Die Standardeinstellung ist „*true“*.

 **Protokollierungskonfigurationen** 

Gilt für von CloudWatch Synthetics generierte Protokolle. Steuert die Ausführlichkeit von Anforderungs- und Antwortprotokollen.
+ *logRequest* – Gibt an, ob jede Anforderung in Canary-Protokollen protokolliert werden soll. Der Standardwert lautet „false“.
+ *logResponse* – Gibt an, ob jede Antwort in Canary-Protokollen protokolliert werden soll. Der Standardwert lautet „false“.

 **Konfigurationen der HTTP-Metrik** 

Konfigurationen für Metriken, die sich auf die Anzahl der Netzwerkanfragen mit unterschiedlichen HTTP-Statuscodes beziehen, die von CloudWatch Synthetics für diesen Kanarienvogel ausgegeben wurden.
+ *metric\$12xx* — Gibt an, ob die 2xx-Metrik (mit der *Dimension) für diesen* Canary ausgegeben werden soll. CanaryName Der Standardwert ist *true*.
+ *metric\$14xx — Gibt an, ob die 4xx-Metrik* (mit der Dimension) für diesen Canary *ausgegeben* werden soll. CanaryName Der Standardwert ist *true*.
+ *metric\$15xx — Gibt an, ob die 5xx-Metrik* (mit der Dimension) für diesen Canary *ausgegeben* werden soll. CanaryName Der Standardwert ist *true*.
+ *Aggregated2xxMetric — Gibt an, ob die 2xx-Metrik* (ohne die Dimension) für diesen Canary *ausgegeben* werden soll. CanaryName Der Standardwert ist *true*.
+ *Aggregated4xxMetric — Gibt an, ob die 4xx-Metrik* (ohne die Dimension) für diesen Canary *ausgegeben* werden soll. CanaryName Der Standardwert ist *true*.
+ *Aggregated5xxMetric — Gibt an, ob die 5xx-Metrik* (ohne die Dimension) für diesen Canary *ausgegeben* werden soll. CanaryName Der Standardwert ist *true*.

 **Konfigurationen der Canary-Metrik** 

Konfigurationen für andere von CloudWatch Synthetics ausgegebene Metriken.
+ *failedCanaryMetric*Network Access Analyzer Gibt an, ob die Metrik *Fehlgeschlagen* (mit der CanaryName Dimension) für diesen Canary ausgegeben werden soll. Der Standardwert ist *true*.
+ *aggregatedFailedCanaryMetrik* — Gibt an, ob die Metrik „*Fehlgeschlagen*“ (ohne die CanaryName Dimension) für diesen Canary ausgegeben werden soll. Der Standardwert ist *true*.

## CloudWatch Synthetics-Umgebungsvariablen
<a name="Synthetics_canary_Java_variables"></a>

Sie können die Protokollierungsebene und das Format mithilfe von Umgebungsvariablen konfigurieren.

 **Protokollformat** 

Die CloudWatch Synthetics Java Runtime erstellt CloudWatch Logs für jeden Canary-Run. Die Protokolle werden zur einfacheren Abfrage im JSON-Format geschrieben. Optional können Sie das Protokollformat zu *TEXT* ändern.
+ *Name der Umgebungsvariable* – CW\$1SYNTHETICS\$1LOG\$1FORMAT
+ *Unterstützte Werte* – JSON, TEXT
+ *Standard* – JSON

 **Protokollstufen** 
+ *Name der Umgebungsvariable* – CW\$1SYNTHETICS\$1LOG\$1LEVEL
+ *Unterstützte Werte* – TRACE, DEBUG, INFO, WARN, ERROR, FATAL
+ *Standard* – INFO

Abgesehen von den oben genannten Umgebungsvariablen wurde eine Standardumgebungsvariable für die Java-Laufzeit hinzugefügt, eine `AWS_LAMBDA-EXEC_WRAPPER`-Umgebungsvariable zu Ihrer Funktion, und deren Wert auf `/opt/synthetics-otel-instrument` festgelegt. Diese Umgebungsvariable ändert das Startverhalten Ihrer Funktion für Telemetrie. Wenn diese Umgebungsvariable bereits existiert, stellen Sie sicher, dass sie auf den erforderlichen Wert festgelegt ist.

# Schreiben eines Node.js-Canary-Skript mit der Playwright-Laufzeit
<a name="Synthetics_WritingCanary_Nodejs_Playwright"></a>

**Topics**
+ [Bündeln Ihrer Node.js-Canary-Dateien für die Playwright-Laufzeit](#Synthetics_canary_Nodejs_Playwright_package)
+ [Änderung eines vorhandenen Playwright-Skripts zur Verwendung als CloudWatch Synthetics Canary](#CloudWatch_Synthetics_canary_edit_Playwright_script)
+ [CloudWatch Synthetics Konfigurationen](#Synthetics_canary_configure_Playwright_script)

## Bündeln Ihrer Node.js-Canary-Dateien für die Playwright-Laufzeit
<a name="Synthetics_canary_Nodejs_Playwright_package"></a>

 Ihr Canary-Skript besteht aus einer `.js` (CommonJS-Syntax) oder `.mjs` (ES-Syntax)-Datei, die Ihren Synthetics-Handler-Code enthält, zusammen mit allen zusätzlichen Paketen und Modulen, von denen Ihr Code abhängt. Im ES (ECMAScript) -Format erstellte Skripts sollten entweder .mjs als Erweiterung verwenden oder eine package.json-Datei mit dem Feldsatz „type“: „module“ enthalten. Im Gegensatz zu anderen Laufzeiten wie Node.js Puppeteer müssen Sie Ihre Skripts nicht in einer bestimmten Ordnerstruktur speichern. Sie können Ihre Skripte direkt bündeln. Erstellen Sie mit Ihrem bevorzugten `zip`-Programm eine `.zip`-Datei mit Ihrer Handler-Datei im Stammverzeichnis. Wenn Ihr Canary-Skript von zusätzlichen Paketen oder Modulen abhängt, die nicht in der Synthetics-Laufzeit enthalten sind, können Sie diese Abhängigkeiten zu Ihrer `.zip`-Datei hinzufügen. Um dies zu tun, können Sie die erforderlichen Bibliotheken Ihrer Funktion im `node_modules`-Verzeichnis installieren, indem Sie den `npm install`-Befehl ausführen. Die folgenden CLI-Befehle erstellen eine `.zip`-Datei mit dem Namen `my_deployment_package.zip`, welche die `index.js`- oder `index.mjs`-Datei (Synthetics-Handler) und die zugehörigen Abhängigkeiten enthält. Im Beispiel installieren Sie Abhängigkeiten mit dem `npm`-Paketmanager.

```
~/my_function
├── index.mjs
├── synthetics.json
├── myhelper-util.mjs    
└── node_modules
    ├── mydependency
```

Erstellen Sie im Stammverzeichnis eine `.zip`-Datei mit den Inhalten Ihres Projektordners. Verwenden Sie die `r` (rekursive) Option, wie im folgenden Beispiel gezeigt, um sicherzustellen, dass `zip` die Unterordner komprimiert.

```
zip -r my_deployment_package.zip .
```

Fügen Sie eine Synthetics-Konfigurationsdatei hinzu, um das Verhalten von CloudWatch Synthetics zu konfigurieren. Sie können eine `synthetics.json`-Datei erstellen und sie unter demselben Pfad wie Ihren Einstiegspunkt oder Ihre Handler-Datei speichern.

Optional können Sie Ihre Einstiegspunktdatei auch in einer Ordnerstruktur Ihrer Wahl speichern. Stellen Sie jedoch sicher, dass der Ordnerpfad in Ihrem Handlernamen angegeben ist.

 **Handlername** 

Legen Sie den Skript-Eintrittspunkt Ihres Canary (Handler) als ` myCanaryFilename.functionName` fest, damit er mit dem Dateinamen des Skript-Eintrittspunkts übereinstimmt. Sie können den Canary auch in einem separaten Ordner (z. B. ` myFolder/my_canary_filename.mjs`) ablegen. Wenn Sie ihn in einem separaten Ordner speichern, geben Sie den entsprechenden Pfad in Ihrem Skript-Eintrittspunkt an (z. B. ` myFolder/my_canary_filename.functionName`).

## Änderung eines vorhandenen Playwright-Skripts zur Verwendung als CloudWatch Synthetics Canary
<a name="CloudWatch_Synthetics_canary_edit_Playwright_script"></a>

Sie können ein vorhandenes Skript für Node.js und Playwright bearbeiten, um es als Canary zu verwenden. Weitere Informationen zu Playwright finden Sie in der Dokumentation in der [Playwright-Bibliothek](https://playwright.dev/docs/api/class-playwright). 

Sie können das folgende Playwright-Skript verwenden, das in der Datei ` exampleCanary.mjs` gespeichert ist.

```
import { chromium } from 'playwright';
import { expect } from '@playwright/test';

const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com', {timeout: 30000});
await page.screenshot({path: 'example-home.png'});

const title = await page.title();
expect(title).toEqual("Example Domain");
 
await browser.close();
```

Konvertieren Sie das Skript wie folgt:

1. Erstellen und exportieren Sie eine `handler`-Funktion. Der Handler ist die Eintrittsfunktion für das Skript. Sie können einen beliebigen Namen für die Handler-Funktion wählen, aber die Funktion, die in Ihrem Skript verwendet wird, sollte dieselbe sein wie in Ihrem Canary-Handler. Wenn Ihr Skriptname `exampleCanary.mjs` lautet und der Name der Handler-Funktion `myhandler` lautet, wird Ihr Canary-Handler `exampleCanary.myhandler` genannt. Im folgenden Beispiel lautet der Name der Handler-Funktion `handler`.

   ```
   exports.handler = async () => {
     // Your script here
     };
   ```

1. Importieren Sie das `Synthetics Playwright module` als Abhängigkeit.

   ```
   import { synthetics } from '@aws/synthetics-playwright';
   ```

1. Starten Sie einen Browser mit der Synthetics `Launch`-Funktion.

   ```
   const browser = await synthetics.launch();
   ```

1. Erstellen Sie mithilfe der Synthetics `newPage`-Funktion eine neue Playwright-Seite.

   ```
   const page = await synthetics.newPage();
   ```

Ihr Skript kann nun als Synthetics-Canary ausgeführt werden. Das aktualisierte Skript ist das folgende:

 **Das Format des Skripts wurde aktualisiert ES6 ** 

Die Skriptdatei wurde mit einer `.mjs`-Erweiterung gespeichert.

```
import { synthetics } from '@aws/synthetics-playwright';
import { expect } from '@playwright/test';

export const handler = async (event, context) => {
  try {
        // Launch a browser
        const browser = await synthetics.launch();
        
        // Create a new page
        const page = await synthetics.newPage(browser);
        
        // Navigate to a website
        await page.goto('https://www.example.com', {timeout: 30000});
        
        // Take screenshot
        await page.screenshot({ path: '/tmp/example.png' });
        
        // Verify the page title
        const title = await page.title();
        expect(title).toEqual("Example Domain");
    } finally {
        // Ensure browser is closed
        await synthetics.close();
    }
};
```

 **Aktualisiertes Skript im CommonJS-Format** 

Die Skriptdatei wurde mit einer `.js`-Erweiterung gespeichert.

```
const { synthetics } = require('@aws/synthetics-playwright');
const { expect } = require('@playwright/test');

exports.handler = async (event) => {
  try {
    const browser = await synthetics.launch();
    const page = await synthetics.newPage(browser);
    await page.goto('https://www.example.com', {timeout: 30000});
    await page.screenshot({ path: '/tmp/example.png' });
    const title = await page.title();
    expect(title).toEqual("Example Domain");
  } finally {
    await synthetics.close();
  }
};
```

## CloudWatch Synthetics Konfigurationen
<a name="Synthetics_canary_configure_Playwright_script"></a>

Sie können das Verhalten der Synthetics-Playwright-Laufzeit konfigurieren, indem Sie eine optionale JSON-Konfigurationsdatei mit dem Namen `synthetics.json` bereitstellen. Diese Datei sollte am selben Speicherort wie die Handler-Datei gebündelt werden. Eine Konfigurationsdatei ist zwar optional, wenn Sie jedoch keine Konfigurationsdatei angeben oder ein Konfigurationsschlüssel fehlt, wird von Standardwerten CloudWatch ausgegangen.

 **Bündeln Ihrer Konfigurationsdatei** 

Im Folgenden sind die unterstützten Konfigurationswerte und ihre Standardwerte aufgeführt.

```
{
    "step": {
        "screenshotOnStepStart": false,
        "screenshotOnStepSuccess": false,
        "screenshotOnStepFailure": false,
        "stepSuccessMetric": true,
        "stepDurationMetric": true,
        "continueOnStepFailure": true,
        "stepsReport": true
    },
    "report": {
        "includeRequestHeaders": true,
        "includeResponseHeaders": true,
        "includeUrlPassword": false,
        "includeRequestBody": true,
        "includeResponseBody": true,
        "restrictedHeaders": ['x-amz-security-token', 'Authorization'], // Value of these headers is redacted from logs and reports
        "restrictedUrlParameters": ['Session', 'SigninToken'] // Values of these url parameters are redacted from logs and reports
    },
    "logging": {
        "logRequest": false,
        "logResponse": false,
        "logResponseBody": false,
        "logRequestBody": false,
        "logRequestHeaders": false,
        "logResponseHeaders": false
    },
    "httpMetrics": {
        "metric_2xx": true,
        "metric_4xx": true,
        "metric_5xx": true,
        "failedRequestsMetric": true,
        "aggregatedFailedRequestsMetric": true,
        "aggregated2xxMetric": true,
        "aggregated4xxMetric": true,
        "aggregated5xxMetric": true
    },
    "canaryMetrics": {
        "failedCanaryMetric": true,
        "aggregatedFailedCanaryMetric": true
    },
    "userAgent": "",
    "har": true
}
```

 **Schritt-Konfigurationen** 
+ `screenshotOnStepStart` – Legt fest, ob Synthetics vor Beginn des Schritts einen Screenshot aufnehmen soll. Der Standardwert ist `true`. 
+ `screenshotOnStepSuccess` – Legt fest, ob Synthetics einen Screenshot aufnehmen soll, nachdem ein Schritt erfolgreich war. Der Standardwert ist `true`. 
+ `screenshotOnStepFailure` – Legt fest, ob Synthetics einen Screenshot aufnehmen soll, nachdem ein Schritt fehlgeschlagen ist. Der Standardwert ist `true`. 
+ `continueOnStepFailure` – Legt fest, ob ein Skript auch dann fortgesetzt werden soll, wenn ein Schritt fehlgeschlagen ist. Der Standardwert ist `false`. 
+ `stepSuccessMetric` – Bestimmt, ob die ` SuccessPercent`-Metrik eines Schritts ausgegeben wird. Die `SuccessPercent`-Metrik für einen Schritt ist `100` für die Canary-Ausführung, wenn der Schritt erfolgreich ist und `0`, wenn der Schritt fehlschlägt. Der Standardwert ist `true`. 
+ `stepDurationMetric` – Ermittelt, ob die `Duration`-Metrik eines Schritts ausgegeben wird. Die `Duration`-Metrik wird als Dauer der Ausführung des Schritts in Millisekunden ausgegeben. Der Standardwert ist `true`.

 **Konfigurationen melden** 

Beinhaltet alle von CloudWatch Synthetics generierten Berichte, z. B. eine HAR-Datei und einen Synthetics-Schrittbericht. Felder zur Schwärzung sensibler Daten `restrictedHeaders` und `restrictedUrlParameters` gelten auch für von Synthetics generierte Protokolle. 
+ `includeRequestHeaders` – Gibt an, ob Anforderungs-Header in den Bericht aufgenommen werden sollen. Der Standardwert ist `false`. 
+ `includeResponseHeaders` – Gibt an, ob Antwort-Header in den Bericht aufgenommen werden sollen. Der Standardwert ist `false`.
+ `includeUrlPassword` – Gibt an, ob ein Passwort eingefügt werden soll, das in der URL angezeigt wird. Standardmäßig URLs werden Passwörter, die in erscheinen, aus Protokollen und Berichten entfernt, um die Offenlegung vertraulicher Daten zu verhindern. Der Standardwert ist `false`. 
+ `includeRequestBody` – Gibt an, ob der Anforderungstext in den Bericht aufgenommen werden soll. Der Standardwert ist `false`. 
+ `includeResponseBody` – Gibt an, ob der Antworttext in den Bericht aufgenommen werden soll. Der Standardwert ist `false`. 
+ `restrictedHeaders` – Eine Liste von Header-Werten, die ignoriert werden sollen, wenn Header enthalten sind. Dies gilt sowohl für Anforderungs- als auch für Antwort-Header. Sie können Ihre Anmeldeinformationen beispielsweise verbergen, indem Sie `includeRequestHeaders` als wahr und `restrictedHeaders` als `['Authorization']` übergeben. 
+ `restrictedUrlParameters` – Eine Liste von URL-Pfad- oder Abfrageparametern, die geschwärzt werden sollen. Dies gilt für Daten URLs , die in Protokollen, Berichten und Fehlern vorkommen. Bei dem Parameter wird die Groß-/Kleinschreibung nicht beachtet. Sie können ein Sternchen (`*`) als Wert übergeben, um alle URL-Pfad- und Abfrageparameterwerte zu überarbeiten. Der Standardwert ist ein leeres Array. 
+ `har` – Legt fest, ob ein HTTP-Archiv (HAR) generiert werden soll. Der Standardwert ist `true`.

Nachfolgend finden Sie ein Beispiel einer Berichts-Konfigurationsdatei.

```
"includeRequestHeaders": true,
"includeResponseHeaders": true,
"includeUrlPassword": false,
"includeRequestBody": true,
"includeResponseBody": true,
"restrictedHeaders": ['x-amz-security-token', 'Authorization'], // Value of these headers is redacted from logs and reports
"restrictedUrlParameters": ['Session', 'SigninToken'] // Values of these URL parameters are redacted from logs and reports
```

 **Protokollierungskonfigurationen** 

Gilt für von CloudWatch Synthetics generierte Protokolle. Steuert die Ausführlichkeit von Anforderungs- und Antwortprotokollen.
+ `logRequest` – Gibt an, ob jede Anforderung in Canary-Protokollen protokolliert werden soll. Bei UI-Canarys protokolliert dies jede Anforderung, die vom Browser gesendet wird. Der Standardwert ist ` false`. 
+ `logResponse` – Gibt an, ob jede Antwort in Canary-Protokollen protokolliert werden soll. Bei UI-Canarys protokolliert dies jede vom Browser empfangene Antwort. Der Standardwert ist ` false`. 
+ `logRequestBody` – Gibt an, ob Anforderungstexte zusammen mit den Anforderungen in Canary- Protokollen protokolliert werden sollen. Diese Konfiguration gilt nur, wenn `logRequest` wahr ist. Der Standardwert ist `false`. 
+ `logResponseBody` – Gibt an, ob Anforderungstexte zusammen mit den Anforderungen in Canary-Protokollen protokolliert werden sollen. Diese Konfiguration gilt nur, wenn `logResponse` wahr ist. Der Standardwert ist `false`. 
+ `logRequestHeaders` – Gibt an, ob Anforderungsheader zusammen mit den Anforderungen in Canary-Protokollen protokolliert werden sollen. Diese Konfiguration gilt nur, wenn ` logRequest` wahr ist. Der Standardwert ist `false`. 
+ `logResponseHeaders` – Gibt an, ob Antwortheader zusammen mit den Antworten in Canary-Protokollen protokolliert werden sollen. Diese Konfiguration gilt nur, wenn ` logResponse` wahr ist. Der Standardwert ist `false`. 

 **Konfigurationen von HTTP-Metriken** 

Konfigurationen für Metriken, die sich auf die Anzahl der Netzwerkanfragen mit unterschiedlichen HTTP-Statuscodes beziehen, die von CloudWatch Synthetics für diesen Kanarienvogel ausgegeben wurden.
+ `metric_2xx` – Gibt an, ob die `2xx`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist ` true`. 
+ `metric_4xx` – Gibt an, ob die `4xx`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist ` true`. 
+ `metric_5xx` – Gibt an, ob die `5xx`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist ` true`. 
+ `failedRequestsMetric` – Gibt an, ob die ` failedRequests`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`. 
+ `aggregatedFailedRequestsMetric` – Gibt an, ob die ` failedRequests`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`. 
+ `aggregated2xxMetric` – Gibt an, ob die `2xx`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`. 
+ `aggregated4xxMetric` – Gibt an, ob die `4xx`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`. 
+ `aggregated5xxMetric` – Gibt an, ob die `5xx`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`. 

 **Canary-Metrik-Konfigurationen** 

Konfigurationen für andere von CloudWatch Synthetics ausgegebene Metriken.
+ `failedCanaryMetric` – Gibt an, ob die `Failed`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist ` true`. 
+ `aggregatedFailedCanaryMetric` – Gibt an, ob die ` Failed`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`. 

 **Sonstige Konfigurationen** 
+ `userAgent` – Eine Zeichenfolge, die an den Benutzeragenten angehängt werden soll. Der Benutzeragent ist eine Zeichenfolge, die im Anforderungsheader enthalten ist und Ihren Browser gegenüber Websites identifiziert, die Sie besuchen, wenn Sie den Headless-Browser verwenden. CloudWatch Synthetics fügt automatisch hinzu`CloudWatchSynthetics/canary-arn to the user agent`. Die angegebene Konfiguration wird an den generierten Benutzeragenten angehängt. Der Standard-Benutzeragent, der angehängt wird, ist eine leere Zeichenfolge (`""`).

### CloudWatch Synthetics-Umgebungsvariablen
<a name="Synthetics_canary_Nodejs_Playwright_script"></a>

Konfigurieren Sie die Protokollierungsebene und das Format mithilfe von Umgebungsvariablen.

 **Protokollformat** 

Die CloudWatch Synthetics Playwright Runtime erstellt CloudWatch Protokolle für jeden Canary-Run. Die Protokolle werden zur bequemen Abfrage im JSON-Format geschrieben. Optional können Sie das Protokollformat in `TEXT` ändern.
+ `Environment variable name` – CW\$1SYNTHETICS\$1LOG\$1FORMAT 
+ `Supported values` – JSON, TEXT 
+ `Default` – JSON 

 **Protokollstufen** 

Die Aktivierung des Modus `Debug` erhöht zwar die Ausführlichkeit, kann aber bei der Fehlerbehebung nützlich sein.
+ `Environment variable name` – CW\$1SYNTHETICS\$1LOG\$1LEVEL
+ `Supported values` – TRACE, DEBUG, INFO, WARN, ERROR, FATAL 
+ `Default` – INFO

# Schreiben eines Node.js-Canary-Skript mit der Puppeteer-Laufzeit
<a name="CloudWatch_Synthetics_Canaries_WritingCanary_Nodejs_Pup"></a>

**Topics**
+ [Einen CloudWatch Synthetics-Kanarienvogel von Grund auf neu erstellen](#CloudWatch_Synthetics_Canaries_write_from_scratch)
+ [Bündeln Ihrer Node.js-Canary-Dateien](#CloudWatch_Synthetics_Canaries_package)
+ [Ändern eines vorhandenen Puppeteer-Skripts zur Verwendung als Synthetics-Canary](#CloudWatch_Synthetics_Canaries_modify_puppeteer_script)
+ [Umgebungsvariablen](#CloudWatch_Synthetics_Environment_Variables)
+ [Integriere deinen Canary mit anderen AWS Diensten](#CloudWatch_Synthetics_Canaries_AWS_integrate)
+ [Verwenden Sie Ihren Canary dazu, eine statische IP-Adresse zu verwenden](#CloudWatch_Synthetics_Canaries_staticIP)

## Einen CloudWatch Synthetics-Kanarienvogel von Grund auf neu erstellen
<a name="CloudWatch_Synthetics_Canaries_write_from_scratch"></a>

Hier ist ein Beispiel für die Minimalversion eines Canary-Skripts für Synthetics. Dieses Skript wird als erfolgreiche Ausführung übergeben und gibt eine Zeichenfolge zurück. Um zu sehen, wie ein fehlerhaftes Canary aussieht, ändern Sie `let fail = false;` zu `let fail = true;`. 

Sie müssen eine Eintrittspunkt-Funktion für das Canary-Skript definieren. Um zu sehen, wie Dateien in den Amazon-S3-Speicherort hochgeladen werden, der als `ArtifactS3Location` des Canary angegeben ist, erstellen Sie diese Dateien unter dem Ordner `/tmp`. Alle Canary-Artefakte sollten in `/tmp` gespeichert werden, da es das einzige beschreibbare Verzeichnis ist. Vergewissern Sie sich, dass der Screenshot-Pfad auf `/tmp` für alle Screenshots oder andere Dateien, die mit dem Skript erstellt wurden, festgelegt ist. Synthetics lädt Dateien in ` /tmp` automatisch in einen S3-Bucket hoch.

```
/tmp/<name>
```

Nach der Ausführung des Skripts werden der pass/fail Status und die Dauer in einem S3-Bucket veröffentlicht CloudWatch und die darunter liegenden Dateien `/tmp` werden in einen S3-Bucket hochgeladen.

```
const basicCustomEntryPoint = async function () {

    // Insert your code here

    // Perform multi-step pass/fail check

    // Log decisions made and results to /tmp

    // Be sure to wait for all your code paths to complete 
    // before returning control back to Synthetics.
    // In that way, your canary will not finish and report success
    // before your code has finished executing

    // Throw to fail, return to succeed
    let fail = false;
    if (fail) {
        throw "Failed basicCanary check.";
    }

    return "Successfully completed basicCanary checks.";
};

exports.handler = async () => {
    return await basicCustomEntryPoint();
};
```

Als Nächstes erweitern wir das Skript, um die Synthetics-Protokollierung zu verwenden und mithilfe des AWS SDK einen Anruf zu tätigen. Zu Demonstrationszwecken erstellt dieses Skript einen Amazon-DynamoDB-Client und ruft die DynamoDB-listTables-API auf. Es protokolliert die Antwort auf die Anforderung und protokolliert entweder „pass“ (erfolgreich) oder „fail“ (nicht erfolgreich), je nachdem, ob die Anforderung erfolgreich war.

```
const log = require('@aws/synthetics-logger');
const AWS = require('aws-sdk');
// Require any dependencies that your script needs
// Bundle additional files and dependencies into a .zip file with folder structure
// nodejs/node_modules/additional files and folders

const basicCustomEntryPoint = async function () {

    log.info("Starting DynamoDB:listTables canary.");
    
    let dynamodb = new AWS.DynamoDB();
    var params = {};
    let request = await dynamodb.listTables(params);
    try {
        let response = await request.promise();
        log.info("listTables response: " + JSON.stringify(response));
    } catch (err) {
        log.error("listTables error: " + JSON.stringify(err), err.stack);
        throw err;
    }

    return "Successfully completed DynamoDB:listTables canary.";
};

exports.handler = async () => {
    return await basicCustomEntryPoint();
};
```

## Bündeln Ihrer Node.js-Canary-Dateien
<a name="CloudWatch_Synthetics_Canaries_package"></a>

 **Für syn-nodejs-puppeteer -11.0 und höher** 

 Die ältere Verpackungsstruktur (für syn-nodejs-puppeteer -10.0 und niedriger) wird in neueren Versionen immer noch unterstützt.

Erstellen Sie ein Skript mit einer der folgenden Optionen:
+ .js-Datei (CommonJS-Syntax)
+ .mjs-Datei (Syntax der ES-Module)

Verwenden Sie für ES-Module eine der folgenden Optionen:
+ .js-Datei (CommonJS-Syntax)
+ .mjs-Datei (Syntax der ES-Module)

Die Paketstruktur ist unten definiert:
+ Handler-Datei auf Stammebene (index.js/index.mjs)
+ Optionale Konfigurationsdatei (synthetics.json)
+ Zusätzliche Abhängigkeiten in node\$1modules (falls erforderlich)

Beispiel für eine Paketstruktur:

```
  my_function/
├── index.mjs
├── synthetics.json
├── helper-utils.mjs
└── node_modules/
    └── dependencies
```

Führen Sie zum Bündeln die folgenden Schritte aus:

1. Installieren Sie Abhängigkeiten (falls vorhanden).

   ```
   npm install
   ```

1. Erstellen Sie ein .zip-Paket.

   ```
   zip -r my_deployment_package.zip
   ```

 **Für syn-nodejs-puppeteer -11.0 und niedriger** 

Für die Nutzung von Amazon S3 ist die folgende Struktur erforderlich:

```
  nodejs/
└── node_modules/
    └── myCanaryFilename.js
```

 **Um in -3.4\$1 eine optionale Unterstützung für Unterordner hinzuzufügen: syn-nodejs-puppeteer** 

```
nodejs/
└── node_modules/
    └── myFolder/
        └── myCanaryFilename.js
```

**Anmerkung**  
Der Handler-Pfad in der Konfiguration muss mit dem Dateispeicherort übereinstimmen.

 **Handlername** 

Legen Sie den Skript-Eintrittspunkt Ihres Canary (Handler) als ` myCanaryFilename.functionName` fest, damit er mit dem Dateinamen des Skript-Eintrittspunkts übereinstimmt. Wenn Sie eine Laufzeit vor `syn-nodejs-puppeteer-3.4` verwenden, muss `functionName` `handler` sein. Wenn Sie ` syn-nodejs-puppeteer-3.4` oder neuer verwenden, können Sie einen beliebigen Funktionsnamen als Handler auswählen. Wenn Sie `syn-nodejs-puppeteer-3.4` oder neuer verwenden, können Sie den Canary auch in einem separaten Ordner (z. B. ` nodejs/node_modules/myFolder/my_canary_filename`) ablegen. Wenn Sie ihn in einem separaten Ordner speichern, geben Sie den entsprechenden Pfad in Ihrem Skript-Eintrittspunkt an (z. B. ` myFolder/my_canary_filename.functionName`).

## Ändern eines vorhandenen Puppeteer-Skripts zur Verwendung als Synthetics-Canary
<a name="CloudWatch_Synthetics_Canaries_modify_puppeteer_script"></a>

In diesem Abschnitt wird erläutert, wie Puppeteer-Skripte so geändert werden, dass sie als Synthetics-Canary-Skripte ausgeführt werden können. Weitere Informationen zu Puppeteer finden Sie unter [Puppeteer API v1.14.0](https://github.com/puppeteer/puppeteer/blob/v1.14.0/docs/api.md). 

Wir beginnen mit diesem Puppeteer-Beispielskript:

```
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({path: 'example.png'});

  await browser.close();
})();
```

Für die Konvertierung sind die folgenden Schritte durchzuführen:
+ Erstellen und exportieren Sie eine `handler`-Funktion. Der Handler ist die Eintrittsfunktion für das Skript. Wenn Sie eine Laufzeit vor ` syn-nodejs-puppeteer-3.4` verwenden, muss die Handler-Funktion den Namen `handler` haben. Wenn Sie `syn-nodejs-puppeteer-3.4` oder neuer verwenden, kann die Funktion einen beliebigen Namen haben. Dieser Name muss jedoch mit dem Namen im Skript übereinstimmen. Wenn Sie `syn-nodejs-puppeteer-3.4` oder neuer verwenden, können Sie Ihre Skripte außerdem in einem beliebigen Ordner ablegen und diesen Ordner als Teil des Handlernamens angeben.

  ```
  const basicPuppeteerExample = async function () {};
  
  exports.handler = async () => {
      return await basicPuppeteerExample();
  };
  ```
+ Verwenden Sie die `Synthetics`-Abhängigkeit.

  ```
  var synthetics = require('@aws/synthetics-puppeteer');
  ```
+ Verwenden Sie die `Synthetics.getPage`-Funktion, um ein Puppeteer-`Page`-Objekt zu erhalten.

  ```
  const page = await synthetics.getPage();
  ```

  **Das von der Synthetics.GetPage-Funktion zurückgegebene Seitenobjekt hat den Wert page.on und Ereignisse, die für die Protokollierung instrumentiert sind.** `request` `response` ` requestfailed` Synthetics richtet auch die Generierung von HAR-Dateien für Anforderungen und Antworten auf der Seite ein und fügt den Benutzeragenten-Headern der ausgehenden Anforderungen auf der Seite den Canary-ARN hinzu.

Das Skript kann nun als Synthetics-Canary ausgeführt werden. Nachfolgend finden Sie das aktualisierte Skript:

```
var synthetics = require('@aws/synthetics-puppeteer');  // Synthetics dependency

const basicPuppeteerExample = async function () {
    const page = await synthetics.getPage(); // Get instrumented page from Synthetics
    await page.goto('https://example.com');
    await page.screenshot({path: '/tmp/example.png'}); // Write screenshot to /tmp folder
};

exports.handler = async () => {  // Exported handler function 
    return await basicPuppeteerExample();
};
```

## Umgebungsvariablen
<a name="CloudWatch_Synthetics_Environment_Variables"></a>

Sie können Umgebungsvariablen beim Erstellen von Canaries verwenden. Auf diese Weise können Sie ein einzelnes Canaryskript schreiben und dann dieses Skript mit unterschiedlichen Werten verwenden, um schnell mehrere Canarys zu erstellen, die eine ähnliche Aufgabe haben.

Angenommen, Ihre Organisation verfügt über Endpunkte wie `prod`, ` dev` und `pre-release` für die verschiedenen Phasen Ihrer Softwareentwicklung und Sie müssen Canaries erstellen, um jeden dieser Endpunkte zu testen. Sie können ein einzelnes Canary-Skript schreiben, das Ihre Software testet, und dann andere Werte für die Endpunkt-Umgebungsvariable angeben, wenn Sie die drei Canarys erstellen. Wenn Sie dann einen Canary erstellen, geben Sie das Skript und die Werte an, die für die Umgebungsvariablen verwendet werden sollen.

Die Namen von Umgebungsvariablen können Buchstaben, Zahlen und den Unterstrich enthalten. Sie müssen mit einem Buchstaben beginnen und mindestens zwei Zeichen enthalten. Die Gesamtgröße Ihrer Umgebungsvariablen darf einen Wert von 4 KB nicht überschreiten. Sie können keine reservierten Lambda-Umgebungsvariablen als Namen Ihrer Umgebungsvariablen angeben. Weitere Informationen zu reservierten Umgebungsvariablen finden Sie unter [Laufzeitumgebungsvariablen](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-runtime).

**Wichtig**  
Schlüssel und Werte von Umgebungsvariablen werden im Ruhezustand mit AWS eigenen AWS KMS Schlüsseln verschlüsselt. Die Umgebungsvariablen sind jedoch nicht clientseitig verschlüsselt. Speichern Sie keine sensiblen Daten darin.

Das folgende Beispielskript verwendet zwei Umgebungsvariablen. Dieses Skript ist für einen Canary bestimmt, der prüft, ob eine Webseite verfügbar ist. Es verwendet Umgebungsvariablen, um sowohl die URL, die es überprüft, als auch die verwendete CloudWatch Synthetics-Protokollebene zu parametrisieren. 

Die folgende Funktion setzt `LogLevel` auf den Wert der Umgebungsvariablen ` LOG_LEVEL`.

```
 synthetics.setLogLevel(process.env.LOG_LEVEL);
```

Diese Funktion setzt `URL` auf den Wert der Umgebungsvariablen `URL`.

```
const URL = process.env.URL;
```

Dies ist das komplette Skript. Wenn Sie mit diesem Skript einen Canary erstellen, geben Sie Werte für die Umgebungsvariablen `LOG_LEVEL` und `URL` an.

```
var synthetics = require('@aws/synthetics-puppeteer');
const log = require('@aws/synthetics-logger');

const pageLoadEnvironmentVariable = async function () {

    // Setting the log level (0-3)
    synthetics.setLogLevel(process.env.LOG_LEVEL);
    // INSERT URL here
    const URL = process.env.URL;

    let page = await synthetics.getPage();
    //You can customize the wait condition here. For instance,
    //using 'networkidle2' may be less restrictive.
    const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});
    if (!response) {
        throw "Failed to load page!";
    }
    //Wait for page to render.
    //Increase or decrease wait time based on endpoint being monitored.
    await page.waitFor(15000);
    await synthetics.takeScreenshot('loaded', 'loaded');
    let pageTitle = await page.title();
    log.info('Page title: ' + pageTitle);
    log.debug('Environment variable:' + process.env.URL);

    //If the response status code is not a 2xx success code
    if (response.status() < 200 || response.status() > 299) {
        throw "Failed to load page!";
    }
};

exports.handler = async () => {
    return await pageLoadEnvironmentVariable();
};
```

### Übergeben von Umgebungsvariablen an Ihr Skript
<a name="CloudWatch_Synthetics_Canaries_pass_variables"></a>

Um Umgebungsvariablen an Ihr Skript zu übergeben, wenn Sie einen Canary in der Konsole erstellen, geben Sie die Schlüssel und Werte der Umgebungsvariablen im Abschnitt **Umgebungsvariablen** der Konsole an. Weitere Informationen finden Sie unter [Erstellen eines Canarys](CloudWatch_Synthetics_Canaries_Create.md).

Um Umgebungsvariablen über die API oder zu übergeben AWS CLI, verwenden Sie den ` EnvironmentVariables` Parameter im Abschnitt. `RunConfig` Im Folgenden finden Sie einen AWS CLI Beispielbefehl, der einen Canary erstellt, der zwei Umgebungsvariablen mit den Schlüsseln `Environment` und verwendet`Region`.

```
aws synthetics create-canary --cli-input-json '{
   "Name":"nameofCanary",
   "ExecutionRoleArn":"roleArn",
   "ArtifactS3Location":"s3://amzn-s3-demo-bucket-123456789012-us-west-2",
   "Schedule":{
      "Expression":"rate(0 minute)",
      "DurationInSeconds":604800
   },
   "Code":{
      "S3Bucket": "canarycreation",
      "S3Key": "cwsyn-mycanaryheartbeat-12345678-d1bd-1234-abcd-123456789012-12345678-6a1f-47c3-b291-123456789012.zip",
      "Handler":"pageLoadBlueprint.handler"
   },
   "RunConfig": {
      "TimeoutInSeconds":60,
      "EnvironmentVariables": {
         "Environment":"Production",
         "Region": "us-west-1"
      }
   },
   "SuccessRetentionPeriodInDays":13,
   "FailureRetentionPeriodInDays":13,
   "RuntimeVersion":"syn-nodejs-2.0"
}'
```

## Integriere deinen Canary mit anderen AWS Diensten
<a name="CloudWatch_Synthetics_Canaries_AWS_integrate"></a>

Alle Kanarienvögel können die AWS SDK-Bibliothek verwenden. Du kannst diese Bibliothek verwenden, wenn du deinen Canary schreibst, um den Canary in andere AWS Dienste zu integrieren.

Dazu müssen Sie den folgenden Code zu Ihrem Canary hinzufügen. In diesen Beispielen AWS Secrets Manager wird sie als Dienst verwendet, in den der Canary integriert wird.
+ Importieren Sie das AWS SDK.

  ```
  const AWS = require('aws-sdk');
  ```
+ Erstellen Sie einen Client für den AWS Service, in den Sie integrieren.

  ```
  const secretsManager = new AWS.SecretsManager();
  ```
+ Verwenden Sie den Client, um API-Aufrufe für diesen Service durchzuführen.

  ```
  var params = {
    SecretId: secretName
  };
  return await secretsManager.getSecretValue(params).promise();
  ```

Das folgende Code-Snippet aus einem Canary-Skript veranschaulicht anhand eines Beispiels die Integration in Secrets Manager detaillierter.

```
var synthetics = require('@aws/synthetics-puppeteer');
const log = require('@aws/synthetics-logger');
 
const AWS = require('aws-sdk');
const secretsManager = new AWS.SecretsManager();
 
const getSecrets = async (secretName) => {
    var params = {
        SecretId: secretName
    };
    return await secretsManager.getSecretValue(params).promise();
}
 
const secretsExample = async function () {
    let URL = "<URL>";
    let page = await synthetics.getPage();
    
    log.info(`Navigating to URL: ${URL}`);
    const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});
    
    // Fetch secrets
    let secrets = await getSecrets("secretname")
   
    /**
    * Use secrets to login. 
    *
    * Assuming secrets are stored in a JSON format like:
    * {
    *   "username": "<USERNAME>",
    *   "password": "<PASSWORD>"
    * }
    **/
    let secretsObj = JSON.parse(secrets.SecretString);
    await synthetics.executeStep('login', async function () {
        await page.type(">USERNAME-INPUT-SELECTOR<", secretsObj.username);
        await page.type(">PASSWORD-INPUT-SELECTOR<", secretsObj.password);
        
        await Promise.all([
          page.waitForNavigation({ timeout: 30000 }),
          await page.click(">SUBMIT-BUTTON-SELECTOR<")
        ]);
    });
   
    // Verify login was successful
    await synthetics.executeStep('verify', async function () {
        await page.waitForXPath(">SELECTOR<", { timeout: 30000 });
    });
};

exports.handler = async () => {
    return await secretsExample();
};
```

## Verwenden Sie Ihren Canary dazu, eine statische IP-Adresse zu verwenden
<a name="CloudWatch_Synthetics_Canaries_staticIP"></a>

Sie können einen Canary so einrichten, dass er eine statische IP-Adresse verwendet.

**So erzwingen Sie einen Canary dazu, eine statische IP-Adresse zu verwenden**

1. Erstellen einer neuen VPC. Weitere Informationen finden Sie unter [Using DNS with Your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html).

1. Erstellen eines neuen Internet-Gateways Weitere Informationen finden Sie unter [Hinzufügen eines Internet-Gateways zu Ihrer VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#working-with-igw).

1. Erstellen Sie ein öffentliches Subnetz in Ihrer neuen VPC.

1. Fügen Sie der VPC eine neue Routing-Tabelle hinzu.

1. Fügen Sie in der neuen Routing-Tabelle eine Route hinzu, die von `0.0.0.0/0` zum Internet-Gateway führt.

1. Verknüpfen Sie die neue Routing-Tabelle dem öffentlichen Subnetz.

1. Erstellen einer elastischen IP-Adresse Weitere Informationen finden Sie unter [elastische IP-Adressen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html).

1. Erstellen Sie ein neues NAT-Gateway und weisen Sie es dem öffentlichen Subnetz und der elastischen IP-Adresse zu.

1. Erstellen Sie ein privates Subnetz innerhalb der VPC.

1. Fügen Sie der VPC-Standard-Routing-Tabelle eine Route hinzu, die von `0.0.0.0/0` zum NAT-Gateway geht

1. Erstellen Sie Ihr Canary. 

# Ein Python-Canary-Skript schreiben
<a name="CloudWatch_Synthetics_Canaries_WritingCanary_Python"></a>

Dieses Skript wird als erfolgreiche Ausführung übergeben und gibt eine Zeichenfolge zurück. Um zu sehen, wie ein fehlgeschlagener Canary aussieht, ändern Sie Fail = False in Fail = True

```
def basic_custom_script():
    # Insert your code here
    # Perform multi-step pass/fail check
    # Log decisions made and results to /tmp
    # Be sure to wait for all your code paths to complete 
    # before returning control back to Synthetics.
    # In that way, your canary will not finish and report success
    # before your code has finished executing
    fail = False
    if fail:
        raise Exception("Failed basicCanary check.")
    return "Successfully completed basicCanary checks."
def handler(event, context):
    return basic_custom_script()
```

## Bündeln Ihrer Python-Canary-Dateien
<a name="CloudWatch_Synthetics_Canaries_WritingCanary_Python_package"></a>

Wenn Sie mehr als eine .py-Datei haben oder Ihr Skript eine Abhängigkeit aufweist, können Sie sie alle in einer einzigen ZIP-Datei bündeln. Wenn Sie die `syn-python-selenium-1.1`-Laufzeit verwenden, muss die ZIP-Datei Ihre canary.py-Datei in einem `python`-Ordner enthalten (z. B. `python/my_canary_filename.py`). Wenn Sie ` syn-python-selenium-1.1` oder neuer verwenden, können Sie auch einen anderen Ordner nutzen, etwa `python/myFolder/my_canary_filename.py`.

Diese ZIP-Datei sollte alle erforderlichen Ordner und Dateien enthalten, die anderen Dateien müssen sich jedoch nicht im `python`-Ordner befinden.

Legen Sie den Skript-Eintrittspunkt Ihres Canary als ` my_canary_filename.functionName` fest, damit er mit dem Datei- und Funktionsnamen des Skript-Eintrittspunkts übereinstimmt. Wenn Sie die Laufzeit `syn-python-selenium-1.0` verwenden, muss `functionName` `handler` sein. Wenn Sie ` syn-python-selenium-1.1` oder neuer verwenden, gilt diese Einschränkung für den Handlernamen nicht und Sie können den Canary auch in einem separaten Ordner (z. B. ` python/myFolder/my_canary_filename.py`) ablegen. Wenn Sie ihn in einem separaten Ordner speichern, geben Sie den entsprechenden Pfad in Ihrem Skript-Eintrittspunkt an (z. B. ` myFolder/my_canary_filename.functionName`). 

## Ändern eines vorhandenen Selenium-Skripts zur Verwendung eines Synthetics-Canarys
<a name="CloudWatch_Synthetics_Canaries_WritingCanary_Python_Selenium"></a>

Sie können schnell ein vorhandenes Skript für Python und Selenium ändern, um als Canary verwendet zu werden. [Weitere Informationen zu Selenium finden Sie unter www.selenium.dev/.](https://www.selenium.dev/)

In diesem Beispiel beginnen wir mit dem folgenden Selenium-Skript:

```
from selenium import webdriver

def basic_selenium_script():
    browser = webdriver.Chrome()
    browser.get('https://example.com')
    browser.save_screenshot('loaded.png')

basic_selenium_script()
```

Für die Konvertierung sind die folgenden Schritte durchzuführen.

**So konvertieren Sie ein Selenium-Skript für die Verwendung als Canary**

1. Ändern Sie die `import`-Anweisung, um Selenium aus dem ` aws_synthetics`-Modul zu verwenden:

   ```
   from aws_synthetics.selenium import synthetics_webdriver as webdriver
   ```

   Das Selenium-Modul von `aws_synthetics` stellt sicher, dass der Canary Metriken und Protokolle ausgeben, eine HAR-Datei generieren und mit anderen CloudWatch Synthetics-Funktionen arbeiten kann.

1. Erstellen Sie eine Handler-Funktion und rufen Sie Ihre Selenium-Methode auf. Der Handler ist die Eintrittsfunktion für das Skript.

   Wenn Sie `syn-python-selenium-1.0` verwenden, muss die Handler-Funktion den Namen `handler` haben. Wenn Sie `syn-python-selenium-1.1` oder neuer verwenden, kann die Funktion einen beliebigen Namen haben. Dieser Name muss jedoch mit dem Namen im Skript übereinstimmen. Wenn Sie `syn-python-selenium-1.1` oder neuer verwenden, können Sie Ihre Skripte außerdem in einem beliebigen Ordner ablegen und diesen Ordner als Teil des Handlernamens angeben.

   ```
   def handler(event, context):
       basic_selenium_script()
   ```

Das Skript wurde jetzt aktualisiert und ist jetzt ein CloudWatch Synthetics-Kanarienvogel. Nachfolgend finden Sie das aktualisierte Skript:

Das `webdriver` ist eine Instanz der Klasse [ SyntheticsWebDriver](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library_Python.html#CloudWatch_Synthetics_Library_Python_SyntheticsWebDriver)und der von zurückgegebene Browser `webdriver.Chrome()` ist eine Instanz von [ SyntheticsBrowser](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library_Python.html#CloudWatch_Synthetics_Library_Python_SyntheticsBrowser).

```
from aws_synthetics.selenium import synthetics_webdriver as webdriver

def basic_selenium_script():
    browser = webdriver.Chrome()
    browser.get('https://example.com')
    browser.save_screenshot('loaded.png')

def handler(event, context):
    basic_selenium_script()
```

## Änderung eines vorhandenen Puppeteer-Synthetics-Skripts zur Authentifizierung von nicht standardmäßigen Zertifikaten
<a name="Canaries_Non-Standard_Certificates"></a>

Ein wichtiger Anwendungsfall für Synthetics-Canarys ist die Überwachung Ihrer eigenen Endpunkte.. Wenn Sie einen Endpunkt überwachen möchten, der nicht für externen Datenverkehr bereit ist, kann diese Überwachung manchmal bedeuten, dass Sie nicht über ein ordnungsgemäßes Zertifikat verfügen, das von einer vertrauenswürdigen externen Zertifizierungsstelle signiert wurde.

Zwei mögliche Lösungen für dieses Szenario lauten wie folgt:
+ Informationen zur Authentifizierung eines Client-Zertifikats finden Sie unter [So validieren Sie die Authentifizierung mit Amazon CloudWatch Synthetics — Teil 2.](https://aws.amazon.com/blogs/mt/how-to-validate-authentication-using-amazon-cloudwatch-synthetics-part-2/)
+ Informationen zur Authentifizierung eines selbstsignierten Zertifikats finden Sie unter [So validieren Sie die Authentifizierung mit selbstsignierten Zertifikaten](https://aws.amazon.com/blogs/mt/how-to-validate-authentication-with-self-signed-certificates-in-amazon-cloudwatch-synthetics/) in Amazon Synthetics CloudWatch

Sie sind nicht auf diese beiden Optionen beschränkt, wenn Sie CloudWatch Synthetics Canaries verwenden. Sie können durch Erweiterung des Canary-Codes diese Features erweitern und Ihre Geschäftslogik hinzufügen.

**Anmerkung**  
Bei Synthetics-Canarys, die auf Python-Laufzeiten ausgeführt werden, ist das ` --ignore-certificate-errors`-Flag von Haus aus aktiviert, sodass diese Canarys keine Probleme haben sollten, Seiten mit nicht standardmäßigen Zertifikatkonfigurationen zu erreichen.

# Schreiben einer JSON-Konfiguration für den Blueprint Node.js Multi Checks
<a name="CloudWatch_Synthetics_WritingCanary_Multichecks"></a>

Mit dem Blueprint Node.js für Mehrfachprüfungen können Sie Canaries erstellen, die mehrere Validierungsprüfungen innerhalb eines einzigen Canary-Laufs durchführen. Dieser Blueprint ist nützlich, wenn Sie mehrere Endpunkte testen, verschiedene Aspekte Ihrer Anwendung validieren oder nacheinander eine Reihe verwandter Prüfungen durchführen möchten. 

**Topics**
+ [Struktur der Stammkonfiguration](#root-configuration-structure)
+ [Globale Einstellungen](#global-settings)
+ [Variablen und Datenmanagement](#variables-data-management)
+ [Definitionen der Schritte](#step-definitions)
+ [Überprüfen Sie die Typen](#check-types)
+ [Authentifizierungsmethoden](#authentication-methods)
+ [Behauptungen und Validierung](#assertions-validation)
+ [Datenextraktion](#data-extraction)

## Struktur der Stammkonfiguration
<a name="root-configuration-structure"></a>

Die Root-Konfiguration definiert die Gesamtstruktur Ihres erweiterten API-Blueprint-Canary.


**Eigenschaften des Schemas**  

| Eigenschaft | Typ | Erforderlich | Description | 
| --- | --- | --- | --- | 
|  globalSettings  | Objekt | Nein | Standardkonfigurationen, die auf alle Schritte angewendet wurden | 
|  variables  | Objekt | Nein | Schrittübergreifend wiederverwendbare Werte (max. 10) | 
|  steps  | Objekt |  Ja  | Erfassung von Überwachungsschritten (1—10 Schritte) | 

 **Beispiel** 

```
{
  "globalSettings": {
    "stepTimeout": 30000,
    "userAgent": "CloudWatch-Synthetics-Advanced/1.0"
  },
  "variables": {
    "baseUrl": "https://api.example.com",
    "apiVersion": "v1"
  },
  "steps": {
    "1": {
      "stepName": "healthCheck",
      "checkerType": "HTTP",
      "url": "${baseUrl}/health",
      "httpMethod": "GET"
    }
  }
}
```

 **Regeln für die Validierung** 
+ Muss mindestens einen Schritt enthalten
+ Maximal 10 Schritte sind zulässig
+ Außer`globalSettings`, und sind keine weiteren Eigenschaften zulässig ` variables` `steps`

## Globale Einstellungen
<a name="global-settings"></a>

Globale Einstellungen bieten Standardkonfigurationen, die für alle Schritte gelten, sofern sie nicht auf Schrittebene überschrieben werden.

 **Eigenschaften** 


**Eigenschaften für globale Einstellungen**  

| Eigenschaft | Typ | Standard | Bereich | Description | 
| --- | --- | --- | --- | --- | 
|  stepTimeout  | Ganzzahl | 30000 | 5000-300000 | Standard-Timeout für alle Schritte (Millisekunden) | 

 **Beispiel** 

```
{
  "globalSettings": {
    "stepTimeout": 60000,
            
  }
}
```

## Variablen und Datenmanagement
<a name="variables-data-management"></a>

Mit Variablen können Sie wiederverwendbare Werte definieren, auf die in Ihrer gesamten Konfiguration mithilfe von `${variableName}` Syntax verwiesen werden kann.

 **Eigenschaften von Variablen** 


| Eigenschaft | Typ | Description | 
| --- | --- | --- | 
| Namen von Variablen | Zeichenfolge | Muss mit dem Muster übereinstimmen ^[a-zA-Z][a-zA-Z0-9\$1]\$1\$1 | 
| Variablenwerte | Zeichenfolge | Beliebiger Zeichenkettenwert | 

 **Einschränkungen** 
+ Maximal 10 Variablen pro Konfiguration
+ Variablennamen müssen mit einem Buchstaben beginnen
+ Variablennamen dürfen nur Buchstaben, Zahlen und Unterstriche enthalten
+ Die maximale Länge ist im Schema nicht angegeben

 **Beispiel** 

```
{
  "variables": {
    "baseUrl": "https://api.example.com",
    "apiKey": "${AWS_SECRET:my-api-key}",
    "timeout": "30000",
    "userEmail": "test@example.com"
  }
}
```

 **Verwendung der Konfiguration** 

```
{
  "steps": {
    "1": {
      "url": "${baseUrl}/users",
      "timeout": "${timeout}",
      "headers": {
        "Authorization": "Bearer ${apiKey}"
      }
    }
  }
}
```

## Definitionen der Schritte
<a name="step-definitions"></a>

Die einzelnen Schritte definieren die einzelnen Überwachungsvorgänge. Jeder Schritt ist von 1 bis 10 nummeriert und beinhaltet eine bestimmte Art von Prüfung.

 *Allgemeine Eigenschaften von Schritten* 


| Eigenschaft | Typ | Erforderlich | Beschreibung | 
| --- | --- | --- | --- | 
|  stepName  | Zeichenfolge |  Ja  | Eindeutiger Bezeichner für den Schritt | 
|  checkerType  | Zeichenfolge |  Ja  | Art der Prüfung:HTTP,DNS,SSL,  TCP | 
|  extractors  | Array | Nein | Konfiguration der Datenextraktion | 

 *Überprüfung des Schrittnamens* 
+ Muster - ^ [a-zA-Z] [A-zA-Z0-9\$1-] \$1\$1
+ Maximale Länge: 64 Zeichen
+ Muss mit einem Buchstaben beginnen

 *Nummerierung der Schritte* 
+ Die Schritte werden als Zeichenkettenschlüssel nummeriert: „1", „2",..., „10"
+ Muster: ^ ([1-9] \$110) \$1
+ Mindestens 1 Schritt erforderlich
+ Maximal 10 Schritte sind zulässig

 *Beispiel* 

```
{
  "steps": {
    "1": {
      "stepName": "loginAPI",
      "checkerType": "HTTP",
      "url": "https://api.example.com/login",
      "httpMethod": "POST"
    },
    "2": {
      "stepName": "dnsCheck",
      "checkerType": "DNS",
      "domain": "example.com"
    }
  }
}
```

## Überprüfen Sie die Typen
<a name="check-types"></a>

### HTTP-Prüfungen
<a name="http-types"></a>

Überwachen Sie Webendpunkte und profitieren Sie von APIs einer umfassenden Überprüfung von Anfragen und Antworten.

 **Erforderliche Eigenschaften** 


| Eigenschaft | Typ | Description | 
| --- | --- | --- | 
|  url  | Zeichenfolge | Ziel-URL (muss ein gültiges URI-Format haben) | 
|  httpMethod  | Zeichenfolge | HTTP-Methode: GETPOST,PUT, PATCH,DELETE,HEAD, OPTIONS | 

 **Optionale Eigenschaften** 


| Eigenschaft | Typ | Standard | Bereich | Description | 
| --- | --- | --- | --- | --- | 
|  timeout  | Ganzzahl | 30000 | 5000-300000 | Zeitlimit für Anfragen (Millisekunden) | 
|  waitTime  | Ganzzahl | 0 | 0-60 | Verzögerung vor der Anfrage (Sekunden) | 
|  headers  | object | - | - | Benutzerdefinierte HTTP-Header | 
|  body  | Zeichenfolge | - | - | Hauptteil der Anfrage für POST/PUT Operationen | 
|  authentication  | object | - | - | Authentifizierungs-Konfiguration | 
|  assertions  | Array | - | - | Regeln für die Validierung von Antworten | 

 **Beispiel** 

```
{
  "stepName": "createUser",
  "checkerType": "HTTP",
  "url": "https://api.example.com/users",
  "httpMethod": "POST",
  "timeout": 15000,
  "headers": {
    "Content-Type": "application/json",
    "X-API-Version": "v1"
  },
  "body": "{\"name\":\"John Doe\",\"email\":\"john@example.com\"}",
  "authentication": {
    "type": "API_KEY",
    "apiKey": "${AWS_SECRET:api-credentials}",
    "headerName": "X-API-Key"
  },
  "assertions": [
    {
      "type": "STATUS_CODE",
      "operator": "EQUALS",
      "value": 201
    }
  ]
}
```

### DNS-Prüfungen
<a name="dns-types"></a>

Überprüfen Sie die DNS-Auflösung und zeichnen Sie Informationen auf.

 **Erforderliche Eigenschaften** 


| Eigenschaft | Typ | Description | 
| --- | --- | --- | 
|  domain  | Zeichenfolge | Abzufragender Domainname (Hostnamenformat) | 

 **Optionale Eigenschaften** 


| Eigenschaft | Typ | Standard | Description | 
| --- | --- | --- | --- | 
|  recordType  | Zeichenfolge | „EIN“ | Typ des DNS-Eintrags: ACNAME,MX, TXT, NS | 
|  nameserver  | Zeichenfolge | - | Spezifischer DNS-Server, der abgefragt werden soll | 
|  timeout  | Ganzzahl | 30000 | Timeout für Abfragen (5000-300000 ms) | 
|  port  | Ganzzahl | 53 | DNS-Serverport (1-65535) | 
|  protocol  | Zeichenfolge | „UDP“ | Protokoll: UDP oder TCP | 
|  assertions  | Array | - | Regeln für die Überprüfung von DNS-Antworten | 

 **Beispiel** 

```
{
  "stepName": "dnsResolution",
  "checkerType": "DNS",
  "domain": "example.com",
  "recordType": "A",
  "nameserver": "8.8.8.8",
  "timeout": 10000,
  "assertions": [
    {
      "type": "RECORD_VALUE",
      "operator": "CONTAINS",
      "value": "192.168"
    }
  ]
}
```

### SSL-Prüfungen
<a name="ssl-types"></a>

Überwachen Sie den Zustand und die Konfiguration des SSL-Zertifikats.

 **Erforderliche Eigenschaften** 


| Eigenschaft | Typ | Description | 
| --- | --- | --- | 
|  hostname  | Zeichenfolge | Ziel-Hostname (Hostnamenformat) | 

 **Optionale Eigenschaften** 


| Eigenschaft | Typ | Standard | Beschreibung | 
| --- | --- | --- | --- | 
|  port  | Ganzzahl | 443 | SSL-Port (1-65535) | 
|  timeout  | Ganzzahl | 30000 | Verbindungs-Timeout (5000-300000 ms) | 
|  sni  | boolesch | TRUE | Angabe des Servernamens | 
|  verifyHostname  | boolesch | TRUE | Überprüfung des Hostnamens | 
|  allowSelfSigned  | boolesch | FALSE | Akzeptieren Sie selbstsignierte Zertifikate | 
|  assertions  | Array | - | Regeln für die Validierung von Zertifikaten | 

 **Beispiel** 

```
{
  "stepName": "sslCertCheck",
  "checkerType": "SSL",
  "hostname": "secure.example.com",
  "port": 443,
  "sni": true,
  "verifyHostname": true,
  "assertions": [
    {
      "type": "CERTIFICATE_EXPIRY",
      "operator": "GREATER_THAN",
      "value": 30,
      "unit": "DAYS"
    }
  ]
}
```

### TCP-Prüfungen
<a name="tcp-types"></a>

Testen Sie die TCP-Port-Konnektivität und die Antwortvalidierung.

 **Erforderliche Eigenschaften** 


| Eigenschaft | Typ | Description | 
| --- | --- | --- | 
|  hostname  | Zeichenfolge | Ziel-Hostname (Hostnamenformat) | 
|  port  | Ganzzahl | Zielport (1-65535) | 

 **Optionale Eigenschaften** 


| Eigenschaft | Typ | Standard | Beschreibung | 
| --- | --- | --- | --- | 
|  timeout  | Ganzzahl | 30000 | Gesamtzeitlimit (5000-300000 ms) | 
|  connectionTimeout  | Ganzzahl | 3000 | Verbindungs-Timeout (5000-300000 ms) | 
|  readTimeout  | Ganzzahl | 2000 | Timeout beim Lesen von Daten (5000-300000 ms) | 
|  sendData  | Zeichenfolge | - | Daten, die nach der Verbindung gesendet werden sollen | 
|  expectedResponse  | Zeichenfolge | - | Erwartete Antwortdaten | 
|  encoding  | Zeichenfolge | „UTF-8" | Datenkodierung:UTF-8,, ASCII HEX | 
|  assertions  | Array | - | Überprüfung der Verbindung und der Antwort | 

 **Beispiel** 

```
{
  "stepName": "databaseConnection",
  "checkerType": "TCP",
  "hostname": "db.example.com",
  "port": 3306,
  "connectionTimeout": 5000,
  "sendData": "SELECT 1",
  "expectedResponse": "1",
  "assertions": [
    {
      "type": "CONNECTION_SUCCESSFUL",
      "value": true
    }
  ]
}
```

## Authentifizierungsmethoden
<a name="authentication-methods"></a>

 **Keine Authentifizierung** 

```
{
  "type": "NONE"
}
```

 **Grundlegende Authentifizierung** 


| Eigenschaft | Typ | Erforderlich | Beschreibung | 
| --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | Muss "BASIC" sein. | 
|  username  | Zeichenfolge |  Ja  | Nutzername für die Authentifizierung | 
|  password  | Zeichenfolge |  Ja  | Passwort für die Authentifizierung | 

 **Beispiel** 

```
{
  "type": "BASIC",
  "username": "admin",
  "password": "${AWS_SECRET:basic-auth:password}"
}
```

 **API-Schlüsselauthentifizierung** 


| Eigenschaft | Typ | Erforderlich | Standard | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "API\$1KEY" sein. | 
|  apiKey  | Zeichenfolge |  Ja  | - | Wert des API-Schlüssels | 
|  headerName  | Zeichenfolge | Nein | „X-API-Schlüssel“ | Header-Name für den API-Schlüssel | 

 **Beispiel** 

```
{
  "type": "API_KEY",
  "apiKey": "${AWS_SECRET:api-credentials}",
  "headerName": "Authorization"
}
```

 **OAuth Kundenanmeldedaten** 


| Eigenschaft | Typ | Erforderlich | Standard | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "OAUTH\$1CLIENT\$1CREDENTIALS" sein. | 
|  tokenUrl  | Zeichenfolge |  Ja  | - | OAuth Token-Endpunkt-URL | 
|  clientId  | Zeichenfolge |  Ja  | - | OAuth Client-ID | 
|  clientSecret  | Zeichenfolge |  Ja  | - | OAuth Geheimes Client-Geheimnis | 
|  scope  | Zeichenfolge | Nein | - | OAuth Geltungsbereich | 
|  audience  | Zeichenfolge | Nein | - | OAuth Publikum | 
|  resource  | Zeichenfolge | Nein | - | OAuth Ressource | 
|  tokenApiAuth  | Array | Nein | - | Authentifizierungsmethoden der Token-API:BASIC\$1AUTH\$1HEADER, REQUEST\$1BODY | 
|  tokenCacheTtl  | Ganzzahl | Nein | 3600 | Token-Cache TTL (mindestens 60 Sekunden) | 

 **Beispiel** 

```
{
  "type": "OAUTH_CLIENT_CREDENTIALS",
  "tokenUrl": "https://auth.example.com/oauth/token",
  "clientId": "${AWS_SECRET:oauth-creds:client_id}",
  "clientSecret": "${AWS_SECRET:oauth-creds:client_secret}",
  "scope": "read write",
  "tokenCacheTtl": 7200
}
```

 **AWS Signatur (Version 4)** 


| Eigenschaft | Typ | Erforderlich | Beschreibung | 
| --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | Muss "SIGV4" sein. | 
|  service  | Zeichenfolge |  Ja  | Name des AWS Dienstes (z. B. „execute-api“) | 
|  region  | Zeichenfolge |  Ja  | AWS Region | 
|  roleArn  | Zeichenfolge |  Ja  | IAM-Rolle ARN zum Signieren | 

 **Beispiel** 

```
{
  "type": "SIGV4",
  "service": "execute-api",
  "region": "us-east-1",
  "roleArn": "arn:aws:iam::123456789012:role/SyntheticsRole"
}
```

## Behauptungen und Validierung
<a name="assertions-validation"></a>

### HTTP-Assertionen
<a name="http-assertions"></a>

 **Zusicherungen im Statuscode** 


| Eigenschaft | Typ | Erforderlich | Beschreibung | 
| --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | Muss "STATUS\$1CODE" sein. | 
|  operator  | Zeichenfolge |  Ja  | EQUALS, NOT\$1EQUALS, GREATER\$1THAN,  LESS\$1THAN, IN\$1RANGE | 
|  value  | Ganzzahl | Bedingt | HTTP-Statuscode (100-599) | 
|  rangeMin  | Ganzzahl | Bedingt | Minimaler Bereichswert (für) IN\$1RANGE | 
|  rangeMax  | Ganzzahl | Bedingt | Maximaler Bereichswert (fürIN\$1RANGE) | 

```
{
  "type": "STATUS_CODE",
  "operator": "EQUALS",
  "value": 200
}
```

 **Behauptungen zur Antwortzeit** 


| Eigenschaft | Typ | Erforderlich | Standard | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "RESPONSE\$1TIME" sein. | 
|  operator  | Zeichenfolge |  Ja  | - | LESS\$1THAN, GREATER\$1THAN, EQUALS | 
|  value  | number |  Ja  | - | Zeitwert (mindestens 0) | 
|  unit  | Zeichenfolge | Nein | „MILLISEKUNDEN“ | Muss "MILLISECONDS" sein. | 

```
{
  "type": "RESPONSE_TIME",
  "operator": "LESS_THAN",
  "value": 500,
  "unit": "MILLISECONDS"
}
```

 **Hauptaussagen** 


| Eigenschaft | Typ | Erforderlich | Beschreibung | 
| --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | Muss "HEADER" sein. | 
|  headerName  | Zeichenfolge |  Ja  | Name des zu validierenden Headers | 
|  operator  | Zeichenfolge |  Ja  | EQUALS, NOT\$1EQUALS, CONTAINS,  NOT\$1CONTAINS, REGEX\$1MATCH, EXIST | 
|  value  | Zeichenfolge/boolescher Wert | Bedingt | Erwarteter Wert (boolescher Wert für Operator) EXIST | 

```
{
  "type": "HEADER",
  "headerName": "Content-Type",
  "operator": "CONTAINS",
  "value": "application/json"
}
```

 **Behauptungen im Hauptteil** 


| Eigenschaft | Typ | Erforderlich | Standard | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "BODY" sein. | 
|  target  | Zeichenfolge | Nein | „JSON“ | JSON oder TEXT | 
|  path  | Zeichenfolge | Bedingt | - | JSONPath (erforderlich für das JSON-Ziel) | 
|  operator  | Zeichenfolge |  Ja  | - | CONTAINS, NOT\$1CONTAINS, EQUALS,  NOT\$1EQUALS, EXISTS | 
|  value  | Zeichenfolge/boolescher Wert |  Ja  | - | Erwarteter Wert (boolescher Wert für Operator) EXISTS | 

```
{
  "type": "BODY",
  "target": "JSON",
  "path": "$.users[0].name",
  "operator": "EQUALS",
  "value": "John Doe"
}
```

### DNS-Assertionen
<a name="dns-assertions"></a>

 **Behauptungen über Rekordwerte** 


| Eigenschaft | Typ | Erforderlich | Bereich | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "RECORD\$1VALUE" sein. | 
|  operator  | Zeichenfolge |  Ja  | - | EQUALS, NOT\$1EQUALS, CONTAINS,  NOT\$1CONTAINS, REGEX\$1MATCH | 
|  value  | Zeichenfolge |  Ja  | - | Erwarteter Rekordwert | 

 **Anzahl von Assertionen** 


| Eigenschaft | Typ | Erforderlich | Bereich | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "RECORD\$1COUNT" sein. | 
|  operator  | Zeichenfolge |  Ja  | - | EQUALS, GREATER\$1THAN, LESS\$1THAN | 
|  value  | Ganzzahl |  Ja  | ≥ 0 | Erwartete Anzahl (mindestens 0) | 

 **Maßgebliche Behauptungen** 


| Eigenschaft | Typ | Erforderlich | Bereich | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "AUTHORITATIVE" sein. | 
|  value  | boolesch |  Ja  | - | Erwarteter maßgeblicher Status | 

 **TTL-Assertionen** 


| Eigenschaft | Typ | Erforderlich | Bereich | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "TTL" sein. | 
|  operator  | Zeichenfolge |  Ja  | - | EQUALS, GREATER\$1THAN, LESS\$1THAN | 
|  value  | Ganzzahl |  Ja  | ≥ 0 | Erwartete TTL (mindestens 0) | 

### SSL-Assertionen
<a name="ssl-assertions"></a>

 **Behauptungen zum Ablauf des Zertifikats** 


| Eigenschaft | Typ | Erforderlich | Standard | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "CERTIFICATE\$1EXPIRY" sein. | 
|  operator  | Zeichenfolge |  Ja  | - | GREATER\$1THAN, LESS\$1THAN | 
|  value  | Ganzzahl |  Ja  | - | Zeitwert (mindestens 0) | 
|  unit  | Zeichenfolge | Nein | „TAGE“ | DAYS, HOURS | 

 **Behauptungen des Betreffenden des Zertifikats** 


| Eigenschaft | Typ | Erforderlich | Standard | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "CERTIFICATE\$1SUBJECT" sein. | 
|  field  | Zeichenfolge |  Ja  | - | Fachfeld:CN,O,OU,C, ST L | 
|  operator  | Zeichenfolge |  Ja  | - | CONTAINS, EQUALS, REGEX\$1MATCH | 
|  value  | Zeichenfolge |  Ja  | - | Erwarteter Feldwert | 

 **Behauptungen des Zertifikatsausstellers** 


| Eigenschaft | Typ | Erforderlich | Standard | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "CERTIFICATE\$1ISSUER" sein. | 
|  field  | Zeichenfolge |  Ja  | - | Feld des Ausstellers:, CN O | 
|  operator  | Zeichenfolge |  Ja  | - | CONTAINS, EQUALS | 
|  value  | Zeichenfolge |  Ja  | - | Erwarteter Feldwert | 

### TCP-Assertionen
<a name="tcp-assertions"></a>

 **Behauptungen über eine erfolgreiche Verbindung** 


| Eigenschaft | Typ | Erforderlich | Standard | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "CONNECTION\$1SUCCESSFUL" sein. | 
|  value  | boolesch |  Ja  | - | Erwarteter Verbindungsstatus | 

 **Behauptungen zu Antwortdaten** 


| Eigenschaft | Typ | Erforderlich | Standard | Description | 
| --- | --- | --- | --- | --- | 
|  type  | Zeichenfolge |  Ja  | - | Muss "RESPONSE\$1DATA" sein. | 
|  operator  | Zeichenfolge |  Ja  | - | CONTAINS, EQUALS, NOT\$1CONTAINS,  REGEX\$1MATCH, STARTS\$1WITH, ENDS\$1WITH | 
|  value  | Zeichenfolge |  Ja  | - | Erwartete Antwortdaten | 
|  encoding  | Zeichenfolge | Nein | „UTF-8" | UTF-8, ASCII, HEX | 

## Datenextraktion
<a name="data-extraction"></a>

Mit Extractors können Sie Daten aus Antworten erfassen, um sie in nachfolgenden Schritten oder zu Berichtszwecken zu verwenden.

 **Eigenschaften der Extraktion** 


| Eigenschaft | Typ | Erforderlich | Standard | Description | 
| --- | --- | --- | --- | --- | 
|  name  | Zeichenfolge |  Ja  | - | Variablenname für extrahierte Daten | 
|  type  | Zeichenfolge |  Ja  | - | Extraktionstyp: BODY | 
|  path  | Zeichenfolge | Nein | - | JSONPath zur Körperextraktion | 
|  regex  | Zeichenfolge | Nein | - | Muster für reguläre Ausdrücke | 
|  regexGroup  | Ganzzahl | Nein | 0 | Regex-Erfassungsgruppe (mindestens 0) | 

 **Überprüfung des Namens der Extraktion** 
+ Pattern: `^[a-zA-Z][a-zA-Z0-9_]*$`
+ Muss mit einem Buchstaben beginnen
+ Kann Buchstaben, Zahlen und Unterstriche enthalten

**Einschränkung** — Die Substitution gilt nicht für Felder im Schema, die bestimmte ENUM-Werte haben

 **Extraktionstypen** 

```
{
  "name": "userId",
  "type": "BODY",
  "path": "$.user.id"
}
```

```
{
  "stepName": "loginAndExtract",
  "checkerType": "HTTP",
  "url": "https://api.example.com/login",
  "httpMethod": "POST",
  "body": "{\"username\":\"test\",\"password\":\"pass\"}",
  "extractors": [
    {
      "name": "textVariable",
      "type": "BODY",
      "path": "$.myvalue"
    }
  ]
},
{
  "stepName": "substituteVariable",
  "checkerType": "HTTP",
  "url": "https://api.example.com/get/${textVariable}",
  "httpMethod": "GET",
  "assertions": [
    {
    "type": "BODY",
    "target": "JSON",
    "path": "$.users[0].name",
    "operator": "EQUALS",
    "value": "${textVariable}"
    }
  ]
}
```

# Für Canary-Skripte verfügbare Bibliotheksfunktionen
<a name="CloudWatch_Synthetics_Canaries_Function_Library"></a>

CloudWatch Synthetics enthält mehrere integrierte Klassen und Funktionen, die Sie aufrufen können, wenn Sie Node.js -Skripten schreiben, die als Kanariendateien verwendet werden sollen.

Einige gelten sowohl für Benutzeroberflächen-(UI)- als auch für API-Canarys. Andere gelten nur für UI-Canarys. Ein UI-Canary ist ein Canary, das die Funktion `getPage()` verwendet und Puppeteer als Webtreiber verwendet, um zu Webseiten zu navigieren und mit ihnen zu interagieren.

**Anmerkung**  
Wenn Sie ein Canary auf eine neue Version der Synthetics-Laufzeitumgebung aktualisieren, werden auch alle Synthetics-Bibliotheksfunktionen, die Ihr Canary verwendet, automatisch auf die gleiche Version von NodeJS aktualisiert, die die Synthetics-Laufzeitumgebung unterstützt.

**Topics**
+ [Bibliotheksfunktionen sind für Node.js Canary verfügbar](Library_function_Nodejs.md)
+ [Für Java-Canary verfügbare Bibliotheksfunktionen](CloudWatch_Synthetics_Canaries_Java.md)
+ [Verfügbare Bibliotheksfunktionen für Node.js-Canary-Skripte, die Playwright nutzen](CloudWatch_Synthetics_Canaries_Nodejs_Playwright.md)
+ [Für Node.js-Canary-Skripte verfügbare Bibliotheksfunktionen, die Puppeteer verwenden](CloudWatch_Synthetics_Canaries_Library_Nodejs.md)
+ [Verfügbare Bibliotheksfunktionen für Python-Canary-Skripte mit Selenium](CloudWatch_Synthetics_Canaries_Library_Python.md)

# Bibliotheksfunktionen sind für Node.js Canary verfügbar
<a name="Library_function_Nodejs"></a>

In diesem Abschnitt werden die Bibliotheksfunktionen beschrieben, die für Canary-Skripte mit der Runtime Node.js verfügbar sind.

**Topics**
+ [addExecutionError(errorMessage, ex);](#Library_function_Nodejs_addExecutionError_Nodecanary)
+ [getCanaryName();](#Library_function_Nodejs_getCanaryName)
+ [getCanaryArn();](#Library_function_Nodejs_Nodecanary)
+ [getCanaryUserAgentString();](#Library_function_Nodejs_getCanaryUserAgentString_Nodecanary)
+ [getRuntimeVersion();](#Library_function_Nodejs_getRuntimeVersion_Nodecanary)
+ [getLogLevel();](#Library_function_Nodejs_getLogLevel_Nodecanary)
+ [setLogLevel();](#Library_function_Nodejs_setLogLevel_Nodecanary)
+ [ExecuteStep (stepName, functionToExecute, [SchrittConfig])](#Library_function_Nodejs_executestep_Nodecanary)
+ [executeHttpStep(stepName, RequestOptions, [Rückruf], [StepConfig])](#Library_function_Nodejs_executeHttpStep)

## addExecutionError(errorMessage, ex);
<a name="Library_function_Nodejs_addExecutionError_Nodecanary"></a>

`errorMessage` beschreibt den Fehler und `ex` ist die aufgetretene Ausnahme

Sie können Folgendes verwenden:`addExecutionError`, um Ausführungsfehler für Ihren Canary festzulegen. Es lässt den Canary fehlschlagen, ohne die Skriptausführung zu unterbrechen. Es wirkt sich auch nicht auf Ihre `successPercent`-Metriken aus.

Sie sollten Fehler nur dann als Ausführungsfehler verfolgen, wenn sie nicht wichtig sind, um den Erfolg oder Misserfolg Ihres Canary-Skripts anzuzeigen.

Ein Beispiel für die Verwendung von `addExecutionError` ist das folgende. Sie überwachen die Verfügbarkeit Ihres Endpunkts und machen Screenshots, nachdem die Seite geladen wurde. Da der Fehler beim Erstellen eines Screenshots die Verfügbarkeit des Endpunkts nicht bestimmt, können Sie beim Erstellen von Screenshots aufgetretene Fehler abfangen und sie als Ausführungsfehler hinzufügen. Ihre Verfügbarkeitsmetriken zeigen weiterhin an, dass der Endpunkt aktiv ist und ausgeführt wird, aber Ihr Canary-Status wird als fehlgeschlagen markiert. Der folgende Codeblock fängt einen solchen Fehler ab und fügt ihn als Ausführungsfehler hinzu.

```
try {await synthetics.executeStep(stepName, callbackFunc);} catch(ex) {synthetics.addExecutionError('Unable to take screenshot ', ex);}
```

## getCanaryName();
<a name="Library_function_Nodejs_getCanaryName"></a>

Gibt den Namen des Canarys zurück.

## getCanaryArn();
<a name="Library_function_Nodejs_Nodecanary"></a>

Gibt den ARN des Canarys aus.

## getCanaryUserAgentString();
<a name="Library_function_Nodejs_getCanaryUserAgentString_Nodecanary"></a>

Gibt den benutzerdefinierten Benutzeragenten des Canary zurück.

## getRuntimeVersion();
<a name="Library_function_Nodejs_getRuntimeVersion_Nodecanary"></a>

Diese Funktion ist in der Runtime-Version `syn-nodejs-3.0` und höher verfügbar. Es gibt die Synthetics Laufzeitversion des Canarys zurück. Der Rückgabewert könnte beispielsweise `syn-nodejs-3.0` sein.

## getLogLevel();
<a name="Library_function_Nodejs_getLogLevel_Nodecanary"></a>

Ruft die aktuelle Protokollebene für die Synthetics-Bibliothek ab. Folgende Werte sind möglich:
+ `0` – Debug
+ `1` – Info
+ `2` – Warnen
+ `3` – Fehler

Beispiel:

```
let logLevel = synthetics.getLogLevel();
```

## setLogLevel();
<a name="Library_function_Nodejs_setLogLevel_Nodecanary"></a>

Legt die Protokollebene für die Synthetics-Bibliothek fest. Folgende Werte sind möglich:
+ `0` – Debug
+ `1` – Info
+ `2` – Warnen
+ `3` – Fehler

Beispiel:

```
synthetics.setLogLevel(0);
```

## ExecuteStep (stepName, functionToExecute, [SchrittConfig])
<a name="Library_function_Nodejs_executestep_Nodecanary"></a>

Führt den angegebenen Schritt aus und umschließt ihn mit Metriken und deren Dauer. start/pass/fail logging and pass/fail

Die `executeStep`-Funktion tut Folgendes:
+ Protokolliert, dass der Schritt gestartet wurde
+ Startet einen Timer
+ Führt die bereitgestellte Funktion aus
+ Wenn die Funktion normal zurückkehrt, gilt sie als bestanden. Wenn die Funktion ausgelöst wird, gilt sie als fehlgeschlagen
+ Beendet den Timer
+ Protokolliert, ob der Schritt bestanden oder fehlgeschlagen ist
+ Gibt die `stepName SuccessPercent` Metrik aus, 100 für bestanden oder 0 für Fehlschlag
+ Gibt den aus`stepName Duration metric`, mit einem Wert, der auf der Start- und Endzeit des Schritts basiert
+ Gibt zurück, was functionToExecute zurückgegeben wurde, oder wirft erneut, was geworfen wurde ` functionToExecute`
+ Fügt dem Canary-Bericht eine Zusammenfassung der Schrittausführung hinzu

 **Beispiel** 

```
await synthetics.executeStep(stepName, async function () {
    return new Promise((resolve, reject) => {
        const req = https.request(url, (res) => {
            console.log(`Status: ${res.statusCode}`);
            if (res.statusCode >= 400) {
                reject(new Error(`Request failed with status ${res.statusCode} for ${url}`));
            } else {
                resolve();
            }
        });

        req.on('error', (err) => {
            reject(new Error(`Request failed for ${url}: ${err.message}`));
        });

        req.end();
    });
});
```

## executeHttpStep(stepName, RequestOptions, [Rückruf], [StepConfig])
<a name="Library_function_Nodejs_executeHttpStep"></a>

Führt die bereitgestellte HTTP-Anforderung als Schritt aus und veröffentlicht `SuccessPercent`- (pass/fail) und `Duration`-Metriken.

**executeHttpStep**verwendet entweder native HTTP- oder HTTPS-Funktionen unter der Haube, abhängig vom in der Anfrage angegebenen Protokoll.

Diese Funktion fügt dem Bericht des Canarys außerdem eine Zusammenfassung der Schrittausführung hinzu. Die Zusammenfassung enthält Details zu jeder HTTP-Anforderung, wie zum Beispiel die folgenden:
+ Startzeit
+ Endzeit
+ Status (PASSED/FAILED)
+ Fehlergrund, wenn fehlgeschlagen
+ HTTP-Aufrufdetails wie request/response Header, Hauptteil, Statuscode, Statusmeldung und Leistungszeiten. 

**Topics**
+ [Parameters](#Library_function_Nodejs_executeHttpStep_parameters_Nodecanary)
+ [Beispiele für die Verwendung executeHttpStep](#Library_function_Nodejs_executeHttpStep_examples_Nodecanary)

### Parameters
<a name="Library_function_Nodejs_executeHttpStep_parameters_Nodecanary"></a>

 **stepName () *String*** 

Legt den Namen des Schrittes fest. Dieser Name wird auch für die Veröffentlichung von CloudWatch Metriken für diesen Schritt verwendet.

 **RequestOptions () *Object or String*** 

Der Wert dieses Parameters kann eine URL, eine URL-Zeichenfolge oder ein Objekt sein. Wenn es sich um ein Objekt handelt, muss es sich um eine Gruppe konfigurierbarer Optionen handeln, um eine HTTP-Anforderung zu stellen. Es unterstützt alle Optionen in [ http.request(options[, callback])](https://nodejs.org/api/http.html#http_http_request_options_callback) in der Node.js-Dokumentation.

Zusätzlich zu diesen Node.js-Optionen unterstützt **requestOptions** den zusätzlichen Parameter `body`. Sie können den Parameter `body` verwenden, um Daten als Anforderungstext zu übergeben.

 **Rückruf () *response*** 

(Optional) Dies ist eine Benutzerfunktion, die mit der HTTP-Antwort aufgerufen wird. Die Antwort ist vom Typ [Class: http. IncomingMessage](https://nodejs.org/api/http.html#http_class_http_incomingmessage).

 **SchrittKonfiguration () *object*** 

(Optional) Verwenden Sie diesen Parameter, um globale Synthetics-Konfigurationen mit einer anderen Konfiguration für diesen Schritt zu überschreiben.

### Beispiele für die Verwendung executeHttpStep
<a name="Library_function_Nodejs_executeHttpStep_examples_Nodecanary"></a>

Die folgende Reihe von Beispielen baut aufeinander auf, um die verschiedenen Verwendungsmöglichkeiten dieser Option zu veranschaulichen.

In diesem ersten Beispiel werden Anforderungsparameter konfiguriert. Sie können eine URL als **RequestOptions** übergeben:

```
let requestOptions = 'https://www.amazon.com';
```

Oder Sie können eine Reihe von Optionen übergeben:

```
let requestOptions = {
        'hostname': 'myproductsEndpoint.com',
        'method': 'GET',
        'path': '/test/product/validProductName',
        'port': 443,
        'protocol': 'https:'
    };
```

Das nächste Beispiel erstellt eine Callback-Funktion, die eine Antwort akzeptiert. Wenn Sie keinen **Callback** angeben, überprüft CloudWatch Synthetics standardmäßig, ob der Status zwischen 200 und 299 (einschließlich) liegt.

```
// Handle validation for positive scenario
    const callback = async function(res) {
        return new Promise((resolve, reject) => {
            if (res.statusCode < 200 || res.statusCode > 299) {
                throw res.statusCode + ' ' + res.statusMessage;
            }
     
            let responseBody = '';
            res.on('data', (d) => {
                responseBody += d;
            });
     
            res.on('end', () => {
                // Add validation on 'responseBody' here if required. For ex, your status code is 200 but data might be empty
                resolve();
            });
        });
    };
```

Das nächste Beispiel erstellt eine Konfiguration für diesen Schritt, die die globale CloudWatch Synthetics-Konfiguration überschreibt. Die Schrittkonfiguration in diesem Beispiel ermöglicht Anforderungskopfzeilen, Antwort-Header, Anforderungstext (Postdaten) und Antworttext in Ihrem Bericht und schränkt die Header-Werte „X-AMZ-Security-Token“ und „Authorization“ ein. Standardmäßig sind diese Werte aus Sicherheitsgründen nicht im Bericht enthalten. Wenn Sie sie einbeziehen, werden die Daten nur in Ihrem S3 Bucket gespeichert.

```
// By default headers, post data, and response body are not included in the report for security reasons. 
// Change the configuration at global level or add as step configuration for individual steps
let stepConfig = {
    includeRequestHeaders: true, 
    includeResponseHeaders: true,
    restrictedHeaders: ['X-Amz-Security-Token', 'Authorization'], // Restricted header values do not appear in report generated.
    includeRequestBody: true,
    includeResponseBody: true
};
```

Dieses letzte Beispiel leitet Ihre Anfrage an den Schritt weiter **executeHttpStep**und benennt ihn.

```
await synthetics.executeHttpStep('Verify GET products API', requestOptions, callback, stepConfig);
```

Mit diesen Beispielen fügt CloudWatch Synthetics die Details aus jedem Schritt in Ihrem Bericht hinzu und erstellt mithilfe von **stepName** Metriken für jeden Schritt.

 Sie sehen `successPercent`- und `duration`-Metriken für den Schritt `Verify GET products API`. Sie können Ihre API-Leistung überwachen, indem Sie die Metriken für Ihre API-Aufrufschritte überwachen. 

Ein vollständiges Beispielskript, das diese Funktionen verwendet, finden Sie unter [Mehrstufiger API-Canary](CloudWatch_Synthetics_Canaries_Samples.md#CloudWatch_Synthetics_Canaries_Samples_APIsteps).

# Für Java-Canary verfügbare Bibliotheksfunktionen
<a name="CloudWatch_Synthetics_Canaries_Java"></a>

Die `executeStep`-Funktion wird verwendet, um den Canary-Code zu modularisieren und schrittweise auszuführen. In CloudWatch Synthetics ist ein Synthetics-Schritt eine Möglichkeit, Ihr Canary-Skript in eine Reihe klar definierter Aktionen zu unterteilen, sodass Sie verschiedene Teile Ihrer Anwendungsreise getrennt überwachen können. Für jeden Schritt geht CloudWatch Synthetics wie folgt vor:
+ Für jede Canary-Ausführung wird ein Bericht erstellt, der eine Zusammenfassung der Ausführungsdetails wie die Dauer eines Schritts, den Status *Bestanden* oder *Nicht bestanden* usw. enthält. Wenn Sie in der CloudWatch Synthetics-Konsole einen Lauf auswählen, können Sie die Ausführungsdetails der einzelnen Schritte auf der Registerkarte **Schritt** anzeigen.
+ *SuccessPercent*und für jeden Schritt werden CloudWatch Metriken zur *Dauer* ausgegeben, sodass Benutzer die Verfügbarkeit und Latenz jedes Schritts überwachen können.

   **Usage** 

  ```
  synthetics.executeStep(stepName,()->{
      try {
          //step code to be executed
          return null;
      } catch (Exception e) {
          throw e;
      }
  }).get();
  ```

   **Parameter** 
  + *stepName*, Zeichenfolge (erforderlich) – Ein beschreibender Name des Synthetics-Schritts
  + *auszuführende Funktion*, Callable <T> (erforderlich) – Stellt die auszuführenden Aufgaben dar
  + *stepOptions*, `com.amazonaws.synthetics.StepOptions (optional)` — StepOptions Objekt, das zur Konfiguration der Schrittausführung verwendet werden kann. 

    *stepConfiguration*, ` com.amazonaws.synthetics.StepConfiguration`(als Teil der stepOptions erforderlich)

 **Rückgabewerte** 

<T>Der zurückgegebene Wert ist *CompletableFuture*.

**Anmerkung**  
Synthetics unterstützt nur aufeinanderfolgende Schritte. Stellen Sie sicher, dass Sie die `.get()`-Methode wie im Beispiel gezeigt aufrufen, um sicherzustellen, dass der Schritt abgeschlossen ist, bevor Sie mit dem nächsten Schritt fortfahren.

# Verfügbare Bibliotheksfunktionen für Node.js-Canary-Skripte, die Playwright nutzen
<a name="CloudWatch_Synthetics_Canaries_Nodejs_Playwright"></a>

In diesem Abschnitt werden die Bibliotheksfunktionen beschrieben, die für Canary-Skripte verfügbar sind, die die Playwright-Laufzeit von Node.js nutzen.

**Topics**
+ [starten](#Synthetics_Library_Nodejs_Playwright_functions)
+ [newPage](#Synthetics_Library_Nodejs_Playwright_function_newPage)
+ [close](#Synthetics_Library_Nodejs_Playwright_function_close)
+ [getDefaultLaunchOptionen](#Synthetics_Library_Nodejs_Playwright_function_getDefaultLaunchOptions)
+ [executeStep](#Synthetics_Library_Nodejs_Playwright_function_executeStep)

## starten
<a name="Synthetics_Library_Nodejs_Playwright_functions"></a>

Diese Funktion startet einen Chromium-Browser mithilfe einer Playwright-Startfunktion und gibt das Browserobjekt zurück. Sie dekomprimiert Browser-Binärdateien und startet den Chromium-Browser mithilfe von Standardoptionen, die für einen Headless-Browser geeignet sind. Weitere Informationen zu dieser `launch`-Funktion finden Sie unter [https://playwright.dev/docs/api/class-browsertype#browser-type-launch](https://playwright.dev/docs/api/class-browsertype#browser-type-launch) in der Dokumentation zu Playwright.

 **Usage** 

```
const browser = await synthetics.launch();
```

 **Argumente** 

`options` [Optionen](https://playwright.dev/docs/api/class-browsertype#browser-type-launch) (optional) ist ein konfigurierbarer Satz von Optionen für den Browser.

 **Rückgabewerte** 

Promise `<Browser>`, bei dem [Browser](https://playwright.dev/docs/api/class-browser) eine Playwright-Browserinstance ist.

Wenn diese Funktion erneut aufgerufen wird, wird ein zuvor geöffneter Browser geschlossen, bevor ein neuer Browser gestartet wird. Sie können die von CloudWatch Synthetics verwendeten Startparameter überschreiben und beim Starten des Browsers zusätzliche Parameter übergeben. Mit dem folgenden Codeausschnitt wird beispielsweise ein Browser mit Standardargumenten und einem standardmäßigen ausführbaren Pfad gestartet, jedoch mit einem Ansichtsfenster von 800 x 600 Pixel. Weitere Informationen finden Sie unter [Playwright-Startoptionen](https://playwright.dev/docs/api/class-browsertype#browser-type-launch) in der Playwright-Dokumentation.

```
const browser = await synthetics.launch({
  defaultViewport: { 
      "deviceScaleFactor": 1, 
      "width": 800,
      "height": 600 
}});
```

 Sie können auch Chromium-Flags hinzufügen oder überschreiben, die standardmäßig an den Browser weitergegeben werden. Sie können beispielsweise die Websicherheit deaktivieren, indem Sie den Argumenten in den CloudWatch Synthetics-Startparametern ein `--disable-web-security` Flag hinzufügen: 

```
// This function adds the --disable-web-security flag to the launch parameters
const defaultOptions = await synthetics.getDefaultLaunchOptions();
const launchArgs = [...defaultOptions.args, '--disable-web-security'];
const browser = await synthetics.launch({
    args: launchArgs
  });
```

## newPage
<a name="Synthetics_Library_Nodejs_Playwright_function_newPage"></a>

Die `newPage()`-Funktion erstellt eine neue Playwright-Seite und gibt sie zurück. Synthetics richtet automatisch eine DevTools Chrome-Protokollverbindung (CDP) ein, um Netzwerkaufnahmen für die Generierung von HTTP-Archiven (HAR) zu ermöglichen.

 **Usage** 

Verwenden Sie `newPage()` auf eine der folgenden Weisen:

 **1. Erstellen einer neuen Seite in einem neuen Browserkontext:** 

```
const page = await synthetics.newPage(browser);
```

 **2. Erstellen einer neuen Seite in einem bestimmten Browserkontext:** 

```
// Create a new browser context
const browserContext = await browser.newContext();

// Create a new page in the specified browser context
const page = await synthetics.newPage(browserContext)
```

 **Argumente** 

Akzeptiert entweder die Playwright [Browser-Instanz](https://playwright.dev/docs/api/class-browser) oder die [ BrowserContext](https://playwright.dev/docs/api/class-browsercontext)Playwright-Instanz. 

 **Rückgabewerte** 

Promise <Page>, wobei Page eine Playwright [Page](https://playwright.dev/docs/api/class-page)-Instance ist.

## close
<a name="Synthetics_Library_Nodejs_Playwright_function_close"></a>

Schließt den aktuell geöffneten Browser.

 **Usage** 

```
await synthetics.close();
```

Es wird empfohlen, den Browser in einem `finally`-Block Ihres Skripts zu schließen.

 **Argumente** 

Keine 

 **Rückgabewerte** 

Gibt Promise<void> zurück, das von der Synthetics-Startfunktion zum Starten des Browsers verwendet wird.

## getDefaultLaunchOptionen
<a name="Synthetics_Library_Nodejs_Playwright_function_getDefaultLaunchOptions"></a>

Die `getDefaultLaunchOptions()` Funktion gibt die Browser-Startoptionen zurück, die von CloudWatch Synthetics verwendet werden.

 **Usage** 

```
const defaultOptions = await synthetics.getDefaultLaunchOptions();
```

 **Argumente** 

Keine 

 **Rückgabewerte** 

Gibt die Playwright-[Startoptionen](https://playwright.dev/docs/api/class-browsertype#browser-type-launch) zurück, die von der Synthetics–`launch`-Funktion zum Starten des Browsers verwendet werden.

## executeStep
<a name="Synthetics_Library_Nodejs_Playwright_function_executeStep"></a>

Die `executeStep`-Funktion wird verwendet, um einen Schritt in einem Synthetics-Skript auszuführen. In CloudWatch Synthetics ist ein Synthetics-Schritt eine Möglichkeit, Ihr Canary-Skript in eine Reihe klar definierter Aktionen zu unterteilen, sodass Sie verschiedene Teile Ihrer Anwendungsreise getrennt überwachen können. Für jeden Schritt geht CloudWatch Synthetics wie folgt vor:
+ Zeichnet automatisch einen Screenshot auf, bevor ein Schritt beginnt und nachdem ein Schritt abgeschlossen ist. Sie können auch Screenshots innerhalb eines Schritts aufnehmen. Screenshots werden standardmäßig aufgenommen, können aber mithilfe von Synthetics-Konfigurationen deaktiviert werden.
+ Für jeden Canary-Run wird ein Bericht mit einer Zusammenfassung der Ausführungsdetails wie Dauer eines Schritts `pass` oder `fail` Status, Quell- und Zielseite URLs, zugehörige Screenshots usw. erstellt. Wenn Sie in der CloudWatch Synthetics-Konsole einen Lauf auswählen, können Sie die Ausführungsdetails der einzelnen Schritte auf der Registerkarte **Schritt** anzeigen.
+ `SuccessPercent`und für jeden Schritt werden `Duration` CloudWatch Metriken ausgegeben, sodass Benutzer die Verfügbarkeit und Latenz jedes Schritts überwachen können.

 **Usage** 

```
await synthetics.executeStep("mystepname", async function () {
  await page.goto(url, { waitUntil: 'load', timeout: 30000 });
}
```

**Anmerkung**  
Die Schritte sollten nacheinander ausgeführt werden. Stellen Sie sicher, `await` für Promises zu verwenden.

 **Argumente** 
+ `stepName`-Zeichenfolge (erforderlich) (Boolean) – Name des Synthetics-Schritts. 
+ `functionToExecute` asynchrone Funktion (erforderlich) – Die Funktion, die Synthetics ausführen soll. Diese Funktion sollte die Logik für den Schritt enthalten.
+ `stepConfig` Objekt (optional) – die Schrittkonfiguration überschreibt die globale Synthetics-Konfiguration für diese Schritt.
  + `continueOnStepFailure` Boolean (optional) – Gibt an, ob das Canary-Skript weiter ausgeführt werden soll, nachdem dieser Schritt fehlschlägt. 
  + `screenshotOnStepStart` Boolean (optional) – Gibt an, ob zu Beginn dieses Schritts ein Screenshot erstellt werden soll. 
  + `screenshotOnStepSuccess` Boolean (optional) – Gibt an, ob ein Screenshot erstellt werden soll, wenn dieser Schritt erfolgreich ist. 
  + `screenshotOnStepFailure` Boolean (optional) – Gibt an, ob ein Screenshot erstellt werden soll, nachdem ein Schritt fehlgeschlagen ist. 
+ `page` – Seitenobjekt von Playwright (optional)

  Ein Playwright-Seitenobjekt. Synthetics verwendet dieses Seitenobjekt, um Screenshots zu erfassen und URLs. Standardmäßig verwendet Synthetics die Playwright-Seite, die erstellt wurde, wenn die `synthetics.newPage()` Funktion aufgerufen wird, zum Erfassen von Seitendetails wie Screenshots und. URLs

 **Rückgabewerte** 

Gibt ein Promise zurück, das mit dem Wert aufgelöst wird, der von der ` functionToExecute`-Funktion zurückgegeben wird. Ein Beispielskript finden Sie unter [Beispielcode für Canary-Skripte](CloudWatch_Synthetics_Canaries_Samples.md) in diesem Handbuch.

# Für Node.js-Canary-Skripte verfügbare Bibliotheksfunktionen, die Puppeteer verwenden
<a name="CloudWatch_Synthetics_Canaries_Library_Nodejs"></a>

In diesem Abschnitt werden die Bibliotheksfunktionen beschrieben, die für Canary-Skripts von Node.js verfügbar sind.

**Topics**
+ [Node.js-Bibliotheksfunktionen, die für alle Canarys gelten](#CloudWatch_Synthetics_Library_allcanaries)
+ [Node.js-Bibliotheksklassen und -funktionen, die nur für UI-Canaries gelten](#CloudWatch_Synthetics_Library_UIcanaries)
+ [Node.js-Bibliotheksklassen und -funktionen, die nur für API-Canaries gelten](#CloudWatch_Synthetics_Library_APIcanaries)

## Node.js-Bibliotheksfunktionen, die für alle Canarys gelten
<a name="CloudWatch_Synthetics_Library_allcanaries"></a>

Die folgenden CloudWatch Synthetics-Bibliotheksfunktionen für Node.js sind für alle Kanarienvögel nützlich.

**Topics**
+ [Synthetics-Klasse](#CloudWatch_Synthetics_Library_Synthetics_Class_all)
+ [SyntheticsConfiguration Klasse](#CloudWatch_Synthetics_Library_SyntheticsConfiguration)
+ [Synthetics Logger](#CloudWatch_Synthetics_Library_SyntheticsLogger)
+ [SyntheticsLogHelper Klasse](#CloudWatch_Synthetics_Library_SyntheticsLogHelper)

### Synthetics-Klasse
<a name="CloudWatch_Synthetics_Library_Synthetics_Class_all"></a>

Die folgenden Funktionen für alle Canarys befinden sich in der Klasse Synthetics.

**Topics**
+ [addExecutionError(errorMessage, ex);](#CloudWatch_Synthetics_Library_addExecutionError)
+ [getCanaryName();](#CloudWatch_Synthetics_Library_getCanaryName)
+ [getCanaryArn();](#CloudWatch_Synthetics_Library_getCanaryARN)
+ [getCanaryUserAgentString();](#CloudWatch_Synthetics_Library_getCanaryUserAgentString)
+ [getRuntimeVersion();](#CloudWatch_Synthetics_Library_getRuntimeVersion)
+ [getLogLevel();](#CloudWatch_Synthetics_Library_getLogLevel)
+ [setLogLevel();](#CloudWatch_Synthetics_Library_setLogLevel)

#### addExecutionError(errorMessage, ex);
<a name="CloudWatch_Synthetics_Library_addExecutionError"></a>

`errorMessage` beschreibt den Fehler und `ex` ist die aufgetretene Ausnahme

Sie können Folgendes verwenden:`addExecutionError`, um Ausführungsfehler für Ihren Canary festzulegen. Es lässt den Canary fehlschlagen, ohne die Skriptausführung zu unterbrechen. Es wirkt sich auch nicht auf Ihre `successPercent`-Metriken aus.

Sie sollten Fehler nur dann als Ausführungsfehler verfolgen, wenn sie nicht wichtig sind, um den Erfolg oder Misserfolg Ihres Canary-Skripts anzuzeigen.

Ein Beispiel für die Verwendung von `addExecutionError` ist das folgende. Sie überwachen die Verfügbarkeit Ihres Endpunkts und machen Screenshots, nachdem die Seite geladen wurde. Da der Fehler beim Erstellen eines Screenshots die Verfügbarkeit des Endpunkts nicht bestimmt, können Sie beim Erstellen von Screenshots aufgetretene Fehler abfangen und sie als Ausführungsfehler hinzufügen. Ihre Verfügbarkeitsmetriken zeigen weiterhin an, dass der Endpunkt aktiv ist und ausgeführt wird, aber Ihr Canary-Status wird als fehlgeschlagen markiert. Der folgende Codeblock fängt einen solchen Fehler ab und fügt ihn als Ausführungsfehler hinzu.

```
try {
    await synthetics.takeScreenshot(stepName, "loaded");
} catch(ex) {
    synthetics.addExecutionError('Unable to take screenshot ', ex);
}
```

#### getCanaryName();
<a name="CloudWatch_Synthetics_Library_getCanaryName"></a>

Gibt den Namen des Canarys zurück.

#### getCanaryArn();
<a name="CloudWatch_Synthetics_Library_getCanaryARN"></a>

Gibt den ARN des Canarys aus.

#### getCanaryUserAgentString();
<a name="CloudWatch_Synthetics_Library_getCanaryUserAgentString"></a>

Gibt den benutzerdefinierten Benutzeragenten des Canary zurück.

#### getRuntimeVersion();
<a name="CloudWatch_Synthetics_Library_getRuntimeVersion"></a>

Diese Funktion ist in Laufzeitversion `syn-nodejs-puppeteer-3.0` und höher verfügbar. Es gibt die Synthetics Laufzeitversion des Canarys zurück. Der Rückgabewert könnte beispielsweise `syn-nodejs-puppeteer-3.0` sein.

#### getLogLevel();
<a name="CloudWatch_Synthetics_Library_getLogLevel"></a>

Ruft die aktuelle Protokollebene für die Synthetics-Bibliothek ab. Folgende Werte sind möglich:
+ `0` – Debug
+ `1` – Info
+ `2` – Warnen
+ `3` – Fehler

Beispiel:

```
let logLevel = synthetics.getLogLevel();
```

#### setLogLevel();
<a name="CloudWatch_Synthetics_Library_setLogLevel"></a>

Legt die Protokollebene für die Synthetics-Bibliothek fest. Folgende Werte sind möglich:
+ `0` – Debug
+ `1` – Info
+ `2` – Warnen
+ `3` – Fehler

Beispiel:

```
synthetics.setLogLevel(0);
```

### SyntheticsConfiguration Klasse
<a name="CloudWatch_Synthetics_Library_SyntheticsConfiguration"></a>

Diese Klasse ist nur in der `syn-nodejs-2.1`-Laufzeitversion oder höher verfügbar.

Sie können die `SyntheticsConfiguration`-Klasse verwenden, um das Verhalten von Synthetics-Bibliotheksfunktionen zu konfigurieren. Sie können diese Klasse beispielsweise verwenden, um die `executeStep()`-Funktion so zu konfigurieren, dass keine Screenshots erfasst werden.

Sie können CloudWatch Synthetics-Konfigurationen auf globaler Ebene festlegen, die auf alle Stufen der Kanaren angewendet werden. Sie können diese Konfigurationen auch auf Schrittebene überschreiben, indem Sie Konfigurationsschlüssel-Wert-Paare übergeben.

Sie können Optionen auf Schrittebene übergeben. Beispiele finden Sie unter [asynchron executeStep (stepName, functionToExecute, [StepConfig]);](#CloudWatch_Synthetics_Library_executeStep) und [executeHttpStep(stepName, RequestOptions, [Rückruf], [StepConfig])](#CloudWatch_Synthetics_Library_executeHttpStep).

**Topics**
+ [setConfig (Optionen)](#CloudWatch_Synthetics_Library_setConfig)
+ [Visuelle Überwachung](#CloudWatch_Synthetics_Library_SyntheticsLogger_VisualTesting)

#### setConfig (Optionen)
<a name="CloudWatch_Synthetics_Library_setConfig"></a>

` options ` ist ein Objekt, bei dem es sich um eine Reihe konfigurierbarer Optionen für Ihren Canary handelt. In den folgenden Abschnitten werden die möglichen Felder in ` options ` erläutert.

##### setConfig (Optionen) für alle Canary
<a name="CloudWatch_Synthetics_Library_setConfigall"></a>

Für Benutzer, die Canaries `syn-nodejs-puppeteer-3.2` oder später verwenden, können die **(Optionen)** für **SetConfig die folgenden** Parameter enthalten:
+ `includeRequestHeaders` (boolean) – Gibt an, ob Anforderungs-Header in den Bericht aufgenommen werden sollen. Der Standardwert ist `false`.
+ `includeResponseHeaders` (boolean) – Gibt an, ob Antwort-Header in den Bericht aufgenommen werden sollen. Der Standardwert ist `false`.
+ `restrictedHeaders` (array) – Eine Liste von Header-Werten, die ignoriert werden sollen, wenn Header enthalten sind. Dies gilt sowohl für Anforderungs- als auch für Antwort-Header. Sie können Ihre Anmeldeinformationen beispielsweise verbergen, indem Sie ** includeRequestHeaders**as `true` und **RestrictedHeaders** als übergeben. `['Authorization']` 
+ `includeRequestBody` (boolean) – Gibt an, ob der Anforderungstext in den Bericht aufgenommen werden soll. Der Standardwert ist `false`.
+ `includeResponseBody` (boolean) – Gibt an, ob der Antworttext in den Bericht aufgenommen werden soll. Der Standardwert ist `false`.
**Wichtig**  
Wenn Sie entweder `includeResponseBody` oder aktivieren` logResponseBody`, wird das Datenobjekt in der Antwort einiger Clients nicht zurückgegeben APIs, z. B. von aws-sdk v3-Clients. Dies liegt an einer Beschränkung von Node.js und des Typs des verwendeten Antwortobjekts.

 **setConfig (Optionen) in Bezug auf Metriken CloudWatch ** 

Für Kanarienvögel, die das Programm verwenden `syn-nodejs-puppeteer-3.1` oder später verwenden, können die **(Optionen)** für **SetConfig** die folgenden booleschen Parameter beinhalten, die bestimmen, welche Metriken vom Kanarienvogel veröffentlicht werden. Der Standardwert für jede dieser Optionen ist `true`. Die Optionen, die mit `aggregated` beginnen, bestimmen, ob die Metrik ohne die ` CanaryName`-Dimension ausgegeben wird. Sie können diese Metriken verwenden, um die aggregierten Ergebnisse für alle Canarys anzuzeigen. Die anderen Optionen bestimmen, ob die Metrik mit der `CanaryName` Dimension ausgegeben wird. Sie können diese Metriken verwenden, um die Ergebnisse für jeden einzelnen Canary anzuzeigen.

Eine Liste der von Canaries ausgegebenen CloudWatch Messwerte finden Sie unter. [CloudWatch von Canaries veröffentlichte Metriken](CloudWatch_Synthetics_Canaries_metrics.md)
+ `failedCanaryMetric` (boolean) – Gibt an, ob die ` Failed`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `failedRequestsMetric` (boolean) – Gibt an, ob die `Failed requests`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `_2xxMetric` (boolean) – Gibt an, ob die `2xx`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `_4xxMetric` (boolean) – Gibt an, ob die `4xx`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `_5xxMetric` (boolean) – Gibt an, ob die `5xx`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `stepDurationMetric` (boolean) – Gibt an, ob die `Step duration`-Metrik (mit der `CanaryName`-Dimension `StepName`) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `stepSuccessMetric` (boolean) – Gibt an, ob die `Step success`-Metrik (mit der `CanaryName`-Dimension `StepName`) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `aggregatedFailedCanaryMetric` (boolean) – Gibt an, ob die `Failed`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `aggregatedFailedRequestsMetric` (boolean) – Gibt an, ob die `Failed Requests`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `aggregated2xxMetric` (boolean) – Gibt an, ob die ` 2xx`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `aggregated4xxMetric` (boolean) – Gibt an, ob die ` 4xx`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `aggregated5xxMetric` (boolean) – Gibt an, ob die ` 5xx`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `visualMonitoringSuccessPercentMetric` (boolean) – Gibt an, ob die `visualMonitoringSuccessPercent`-Metrik für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `visualMonitoringTotalComparisonsMetric` (boolean) – Gibt an, ob die `visualMonitoringTotalComparisons`-Metrik für diesen Canary emittiert werden soll. Der Standardwert ist `false`.
+ `includeUrlPassword` (boolean) – Gibt an, ob ein Passwort eingefügt werden soll, das in der URL angezeigt wird. Standardmäßig URLs werden Passwörter, die in erscheinen, aus Protokollen und Berichten entfernt, um zu verhindern, dass sensible Daten preisgegeben werden. Der Standardwert ist `false`.
+ `restrictedUrlParameters` (array) – Eine Liste von URL-Pfad- oder Abfrageparametern, die geschwärzt werden sollen. Dies gilt für das URLs Erscheinen in Protokollen, Berichten und Fehlern. Bei dem Parameter wird die Groß-/Kleinschreibung nicht beachtet. Sie können ein Sternchen (\$1) als Wert übergeben, um alle URL-Pfad- und Abfrageparameterwerte zu überarbeiten. Der Standardwert ist ein leeres Array.
+ `logRequest` (boolean) – Gibt an, ob jede Anforderung in Canary-Protokollen protokolliert werden soll. Bei UI-Canarys protokolliert dies jede Anforderung, die vom Browser gesendet wird. Der Standardwert ist `true`.
+ `logResponse` (boolean) – Gibt an, ob jede Antwort in Canary-Protokollen protokolliert werden soll. Bei UI-Canarys protokolliert dies jede vom Browser empfangene Antwort. Der Standardwert ist `true`.
+ `logRequestBody` (boolean) – Gibt an, ob Anforderungstexte zusammen mit den Anforderungen in Canary- Protokollen protokolliert werden sollen. Diese Konfiguration gilt nur, wenn `logRequest` `true` ist. Der Standardwert ist `false`.
+ `logResponseBody` (boolean) – Gibt an, ob Antworttexte zusammen mit den Antworten in Canary-Logs protokolliert werden sollen. Diese Konfiguration gilt nur, wenn `logResponse` `true` ist. Der Standardwert ist ` false`.
**Wichtig**  
Wenn Sie entweder `includeResponseBody` oder aktivieren` logResponseBody`, wird das Datenobjekt in der Antwort einiger Clients nicht zurückgegeben APIs, z. B. von aws-sdk v3-Clients. Dies liegt an einer Beschränkung von Node.js und des Typs des verwendeten Antwortobjekts.
+ `logRequestHeaders` (boolean) – Gibt an, ob Anforderungsheader zusammen mit den Anforderungen in Canary-Protokollen protokolliert werden sollen. Diese Konfiguration gilt nur, wenn `logRequest` `true` ist. Der Standardwert ist ` false`.

  Beachten Sie, dass `includeRequestHeaders` Header in Artefakten aktiviert.
+ `logResponseHeaders` (boolean) – Gibt an, ob Antwortheader zusammen mit den Antworten in Canary-Protokollen protokolliert werden sollen. Diese Konfiguration gilt nur, wenn `logResponse` `true` ist. Der Standardwert ist ` false`.

  Beachten Sie, dass `includeResponseHeaders` Header in Artefakten aktiviert.

**Anmerkung**  
Die `Duration`- und `SuccessPercent`-Metriken werden immer für jeden Canary ausgegeben, sowohl mit als auch ohne die `CanaryName`-Metrik

##### Methoden zum Aktivieren oder Deaktivieren von Metriken
<a name="CloudWatch_Synthetics_Library_setConfig_metrics"></a>

 **disableAggregatedRequestMetriken ()** 

Verhindert, dass der Canary alle Anforderungsmesswerte ausgibt, die ohne `CanaryName`-Dimension ausgegeben werden.

 **disableRequestMetrics()** 

Deaktiviert alle Anforderungsmetriken, einschließlich aller Canary-Metriken und Metriken, die über alle Canarys aggregiert werden.

 **disableStepMetrics()** 

Deaktiviert alle Schrittmetriken, einschließlich Metriken für den Schritterfolg und für die Schrittdauer.

 **enableAggregatedRequestMetriken ()** 

Ermöglicht dem Canary, alle Anforderungsmesswerte auszugeben, die ohne ` CanaryName`-Dimension ausgegeben werden.

 **enableRequestMetrics()** 

Aktiviert alle Anforderungsmetriken, einschließlich aller Canary-Metriken und Metriken, die über alle Canarys aggregiert werden.

 **enableStepMetrics()** 

Aktiviert alle Schrittmetriken, einschließlich Metriken für den Schritterfolg und für die Schrittdauer.

 **get2xxMetric()** 

Gibt zurück, ob der Canary eine `2xx`-Metrik mit der ` CanaryName`-Dimension ausgibt.

 **get4xxMetric()** 

Gibt zurück, ob der Canary eine `4xx`-Metrik mit der ` CanaryName`-Dimension ausgibt.

 **get5xxMetric()** 

Gibt zurück, ob der Canary eine `5xx`-Metrik mit der ` CanaryName`-Dimension ausgibt.

 **getAggregated2xxMetric()** 

Gibt zurück, ob der Canary eine `2xx`-Metrik ohne Dimension ausgibt.

 **getAggregated4xxMetric()** 

Gibt zurück, ob der Canary eine `4xx`-Metrik ohne Dimension ausgibt.

 **getAggregatedFailedCanaryMetric()** 

Gibt zurück, ob der Canary eine `Failed`-Metrik ohne Dimension ausgibt.

 **getAggregatedFailedRequestsMetric()** 

Gibt zurück, ob der Canary eine `Failed requests`-Metrik ohne Dimension ausgibt.

 **getAggregated5xxMetric()** 

Gibt zurück, ob der Canary eine `5xx`-Metrik ohne Dimension ausgibt.

 **getFailedCanaryMetrisch ()** 

Gibt zurück, ob der Canary eine `Failed`-Metrik mit der ` CanaryName`-Dimension ausgibt.

 **getFailedRequestsMetrisch ()** 

Gibt zurück, ob der Canary eine `Failed requests`-Metrik mit der `CanaryName`-Dimension ausgibt.

 **getStepDurationMetrisch ()** 

Gibt zurück, ob der Canary eine `Duration`-Metrik mit der ` CanaryName`-Dimension für dieses Canary ausgibt.

 **getStepSuccessMetrisch ()** 

Gibt zurück, ob der Canary eine `StepSuccess`-Metrik mit der ` CanaryName`-Dimension für dieses Canary ausgibt.

 **with2xxMetric(\$12xxMetric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `2xx`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

 **with4xxMetric(\$14xxMetric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `4xx`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

 **with5xxMetric(\$15xxMetric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `5xx`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

 **withAggregated2xxMetric(aggregated2xxMetric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `2xx`-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

 **withAggregated4xxMetric(aggregated4xxMetric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `4xx`-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

 **withAggregated5xxMetric(aggregated5xxMetric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `5xx`-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

 ** withAggregatedFailedCanaryMetric(aggregatedFailedCanaryMetrisch)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `Failed`-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

 ** withAggregatedFailedRequestsMetric(aggregatedFailedRequestsMetrisch)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `Failed requests`-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

 **withFailedCanaryMetrisch (failedCanaryMetric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `Failed`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

 **withFailedRequestsMetrisch (failedRequestsMetric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `Failed requests`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

 **withStepDurationMetrisch (stepDurationMetric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `Duration`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

 **withStepSuccessMetrisch (stepSuccessMetric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine ` StepSuccess`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

##### Methoden zum Aktivieren oder Deaktivieren anderer Features
<a name="CloudWatch_Synthetics_Library_setConfig_methods"></a>

 **withHarFile()** 

Akzeptiert ein boolesches Argument, das angibt, ob eine HAR-Datei für diesen Canary erstellt werden soll.

 **withStepsReport()** 

Akzeptiert ein boolesches Argument, das angibt, ob eine Zusammenfassung der Schrittausführung für diesen Canary gemeldet werden soll.

 **withIncludeUrlPasswort ()** 

Akzeptiert ein boolesches Argument, das angibt, ob Passwörter, die URLs in Protokollen und Berichten vorkommen, eingeschlossen werden sollen.

 **withRestrictedUrlParameter ()** 

Akzeptiert ein Array von URL-Pfad- oder Abfrageparametern zum Schwärzen. Dies gilt für das URLs Erscheinen in Protokollen, Berichten und Fehlern. Sie können ein Sternchen (\$1) als Wert übergeben, um alle URL-Pfad- und Abfrageparameterwerte zu verkleinern

 **withLogRequest()** 

Akzeptiert ein boolesches Argument, das angibt, ob jede Anforderung in den Protokollen des Canarys protokolliert werden soll.

 **withLogResponse()** 

Akzeptiert ein boolesches Argument, das angibt, ob jede Antwort in den Protokollen des Canarys protokolliert werden soll.

 **withLogRequestKörper ()** 

Akzeptiert ein boolesches Argument, das angibt, ob jeder Anforderungstext in den Protokollen des Canarys protokolliert werden soll.

 **withLogResponseKörper ()** 

Akzeptiert ein boolesches Argument, das angibt, ob jeder Antworttext in den Protokollen des Canarys protokolliert werden soll.

 **withLogRequestÜberschriften ()** 

Akzeptiert ein boolesches Argument, das angibt, ob jeder Anforderungs-Header in den Protokollen des Canarys protokolliert werden soll.

 **withLogResponseÜberschriften ()** 

Akzeptiert ein boolesches Argument, das angibt, ob jeder Antwort-Header in den Protokollen des Canarys protokolliert werden soll.

 **getHarFile()** 

Gibt zurück, ob der Canary eine HAR-Datei erstellt.

 **getStepsReport()** 

Gibt zurück, ob der Canary eine Zusammenfassung der Schrittausführung meldet

 **getIncludeUrlPasswort ()** 

Gibt zurück, ob der Canary Passwörter enthält, die URLs in Protokollen und Berichten vorkommen.

 **getRestrictedUrlParameter ()** 

Gibt zurück, ob der Canary den URL-Pfad oder die Abfrageparameter entfernt.

 **getLogRequest()** 

Gibt zurück, ob der Canary jede Anforderung in den Canaryprotokollen protokolliert.

 **getLogResponse()** 

Gibt zurück, ob der Canary jede Antwort in den Canaryprotokollen protokolliert.

 **getLogRequestKörper ()** 

Gibt zurück, ob der Canary jeden Anforderungstext in den Canaryprotokollen protokolliert.

 **getLogResponseKörper ()** 

Gibt zurück, ob der Canary jeden Antworttext in den Canaryprotokollen protokolliert.

 **getLogRequestÜberschriften ()** 

Gibt zurück, ob der Canary jeden Anforderungsheader in den Protokollen des Canarys.

 **getLogResponseÜberschriften ()** 

Gibt zurück, ob der Canary alle Antwort-Header in den Canaryprotokollen protokolliert.

 **Funktionen für alle Canarys** 
+ `withIncludeRequestHeaders`(includeRequestHeaders)
+ `withIncludeResponseHeaders`(includeResponseHeaders)
+ `withRestrictedHeaders`(RestrictedHeader)
+ `withIncludeRequestBody`(includeRequestBody)
+ `withIncludeResponseBody`(includeResponseBody)
+ `enableReportingOptions`() — Aktiviert alle Berichtsoptionen-- **includeRequestHeaders**, ** includeResponseHeaders**includeRequestBody****, und **includeResponseBody**,.
+ `disableReportingOptions`() — Deaktiviert alle Berichtsoptionen-- **includeRequestHeaders**, ** includeResponseHeaders**includeRequestBody****, und **includeResponseBody**,.

##### setConfig (Optionen) für UI-Canarys
<a name="CloudWatch_Synthetics_Library_setConfigUI"></a>

Für UI-Canarys kann **SetConfig** folgende boolesche Parameter enthalten:
+ `continueOnStepFailure`(boolean) — Ob mit der Ausführung des Canary-Skripts fortgefahren werden soll, nachdem ein Schritt fehlgeschlagen ist (dies bezieht sich auf die **ExecuteStep-Funktion**). Wenn Schritte fehlschlagen, wird der Canary-Lauf weiterhin als fehlgeschlagen markiert. Der Standardwert ist `false`.
+ `harFile` (boolean) – Gibt an, ob eine HAR-Datei erstellt werden soll. Der Standardwert ist `True`.
+ `screenshotOnStepStart` (boolean) – Gibt an, ob ein Screenshot erstellt werden soll, bevor ein Schritt gestartet wird.
+ `screenshotOnStepSuccess` (boolean) – Gibt an, ob nach einem erfolgreichen Schritt ein Screenshot erstellt werden soll.
+ `screenshotOnStepFailure` (boolean) - Ob ein Screenshot erstellt werden soll, nachdem ein Schritt fehlgeschlagen ist.

##### Methoden zum Aktivieren oder Deaktivieren von Screenshots
<a name="CloudWatch_Synthetics_Library_setConfig_screenshots"></a>

 **disableStepScreenshots()** 

Deaktiviert alle Screenshot-Optionen (screenshotOnStepStart, screenshotOnStep Erfolg und Fehler). screenshotOnStep

 **enableStepScreenshots()** 

Aktiviert alle Screenshot-Optionen (screenshotOnStepStart, screenshotOnStep Erfolg und screenshotOnStep Fehler). Standardmäßig sind alle diese Methoden aktiviert.

 **getScreenshotOnStepFailure()** 

Gibt zurück, ob der Canary einen Screenshot macht, nachdem ein Schritt fehlschlägt.

 **getScreenshotOnStepStart()** 

Gibt zurück, ob der Canary einen Screenshot erstellt, bevor er einen Schritt startet.

 **getScreenshotOnStepSuccess()** 

Gibt zurück, ob der Canary nach erfolgreichem Abschluss eines Schritts einen Screenshot erstellt.

 **withScreenshotOnStepStart(screenshotOnStepStart)** 

Akzeptiert ein boolesches Argument, das angibt, ob ein Screenshot erstellt werden soll, bevor ein Schritt gestartet wird.

 **withScreenshotOnStepSuccess(screenshotOnStepErfolg)** 

Akzeptiert ein boolesches Argument, das angibt, ob nach erfolgreichem Abschluss eines Schritts ein Screenshot erstellt werden soll.

 **withScreenshotOnStepFailure(screenshotOnStepMisserfolg)** 

Akzeptiert ein boolesches Argument, das angibt, ob nach einem Schritt ein Screenshot erstellt werden soll.

 **Verwendung in UI-Canarys** 

Importieren Sie zuerst die Synthetics-Abhängigkeit und holen Sie die Konfiguration ab.

```
// Import Synthetics dependency
const synthetics = require('@aws/synthetics-puppeteer');

// Get Synthetics configuration
const synConfig = synthetics.getConfiguration();
```

Legen Sie dann die Konfiguration für jede Option fest, indem Sie die setConfig-Methode mit einer der folgenden Optionen aufrufen.

```
// Set configuration values
    synConfig.setConfig({
        screenshotOnStepStart: true, 
        screenshotOnStepSuccess: false,
        screenshotOnStepFailure: false
    });
```

Oder

```
synConfig.withScreenshotOnStepStart(false).withScreenshotOnStepSuccess(true).withScreenshotOnStepFailure(true)
```

Um alle Screenshots zu deaktivieren, verwenden Sie die `disableStepScreenshots()`-Funktion wie in diesem Beispiel.

```
synConfig.disableStepScreenshots();
```

Sie können Screenshots jederzeit im Code aktivieren oder deaktivieren. Wenn Sie beispielsweise Screenshots nur für einen Schritt deaktivieren möchten, deaktivieren Sie sie, bevor Sie diesen Schritt ausführen, und aktivieren Sie sie dann nach dem Schritt.

##### setConfig (Optionen) für API-Canarys
<a name="CloudWatch_Synthetics_Library_setConfigAPI"></a>

Für API-Canarys kann **SetConfig** folgende boolesche Parameter enthalten:
+ `continueOnHttpStepFailure`(boolean) — Ob mit der Ausführung des Canary-Skripts fortgefahren werden soll, nachdem ein HTTP-Schritt fehlgeschlagen ist (dies bezieht sich auf die **executeHttpStep**Funktion). Wenn Schritte fehlschlagen, wird der Canary-Lauf weiterhin als fehlgeschlagen markiert. Der Standardwert ist `true`.

#### Visuelle Überwachung
<a name="CloudWatch_Synthetics_Library_SyntheticsLogger_VisualTesting"></a>

Die visuelle Überwachung vergleicht Screenshots, die während eines Canary-Laufs aufgenommen wurden, mit Screenshots, die während eines Baseline-Canary-Laufs aufgenommen wurden. Wenn die Diskrepanz zwischen den beiden Screenshots einen Schwellenwert überschreitet, schlägt der Canary fehl, und Sie können die Bereiche mit Unterschieden in der Farbe im Canarylauf-Bericht sehen. Die visuelle Überwachung wird auf Kanaren unterstützt, auf denen die Version **syn-puppeteer-node-3.2** und höher ausgeführt wird. Es wird derzeit nicht in Canarys unterstützt, die Python und Selenium ausführen.

Um die visuelle Überwachung zu aktivieren, fügen Sie dem Canary-Skript die folgende Codezeile hinzu. Weitere Details finden Sie unter [SyntheticsConfiguration Klasse](#CloudWatch_Synthetics_Library_SyntheticsConfiguration).

```
syntheticsConfiguration.withVisualCompareWithBaseRun(true);
```

Wenn der Canary zum ersten Mal erfolgreich ausgeführt wird, nachdem diese Zeile zum Skript hinzugefügt wurde, verwendet er die während dieser Ausführung erstellten Screenshots als Vergleichsbasis. Nach dem ersten Canary-Run kannst du die CloudWatch Konsole verwenden, um den Canary zu bearbeiten, um einen der folgenden Schritte auszuführen:
+ Legen Sie den nächsten Lauf des Canarys als neue Basislinie fest.
+ Zeichnen Sie Grenzen auf dem aktuellen Baseline-Screenshot, um Bereiche des Screenshots festzulegen, die bei visuellen Vergleichen ignoriert werden sollen.
+ Entfernen Sie einen Screenshot, der für die visuelle Überwachung verwendet wird.

Weitere Informationen zur Verwendung der CloudWatch Konsole zum Bearbeiten eines Canary finden Sie unter[Einen Canary bearbeiten oder löschen](synthetics_canaries_deletion.md).

 **Weitere Optionen für die visuelle Überwachung** 

 **Synthetics-Konfiguration. withVisualVarianceThresholdPercentage(Gewünschter Prozentsatz)** 

Legen Sie den akzeptablen Prozentsatz für die Screenshot-Varianz in visuellen Vergleichen fest.

 **Konfiguration „Synthetik“. withVisualVarianceHighlightHexColor(“ \$1fafa00 „)** 

Legen Sie die Hervorhebungsfarbe fest, die Varianzbereiche angibt, wenn Sie Canary-Lauf-Berichte betrachten, die visuelle Überwachung verwenden.

 **Synthetische Konfiguration. withFailCanaryRunOnVisualVariance(Canary scheitern)** 

Legen Sie fest, ob der Canary fehlschlägt, wenn ein visueller Unterschied größer als der Schwellenwert ist. Die Standardeinstellung ist, dass der Canary fehlschlägt.

### Synthetics Logger
<a name="CloudWatch_Synthetics_Library_SyntheticsLogger"></a>

SyntheticsLogger schreibt Logs sowohl in die Konsole als auch in eine lokale Protokolldatei auf derselben Protokollebene. Diese Protokolldatei wird nur dann an beide Speicherorte geschrieben, wenn die Protokollebene auf oder unter der gewünschten Protokollierungsebene der aufgerufenen Protokollfunktion liegt.

Den Protokollierungsanweisungen in der lokalen Protokolldatei werden je nach der Protokollebene der aufgerufenen Funktion „DEBUG“ „INFO“ usw. vorangestellt.

Sie können das verwenden SyntheticsLogger, vorausgesetzt, Sie möchten die Synthetics Library auf derselben Protokollebene wie Ihr Synthetics Canary-Logging ausführen.

Die Verwendung von SyntheticsLogger ist nicht erforderlich, um eine Protokolldatei zu erstellen, die an Ihren S3-Ergebnisspeicherort hochgeladen wird. Sie können stattdessen eine andere Protokolldatei im ` /tmp`-Ordner erstellen. Alle Dateien, die unter dem `/tmp`-Ordner erstellt wurden, werden als Artefakte an den Ergebnisspeicherort in S3 hochgeladen. 

So verwenden Sie den Synthetics Library Logger:

```
const log = require('@aws/synthetics-logger');
```

Nützliche Funktionsdefinitionen:

 **log.debug (*message*,); *ex*** 

Parameter: *message* ist die zu protokollierende Nachricht. * ex*ist die Ausnahme, falls vorhanden, für die Protokollierung.

Beispiel:

```
log.debug("Starting step - login.");
```

 **log.error (*message*,); *ex*** 

Parameter: *message* ist die zu protokollierende Nachricht. * ex*ist die Ausnahme, falls vorhanden, für die Protokollierung.

Beispiel:

```
try {
  await login();
catch (ex) {
  log.error("Error encountered in step - login.", ex);
}
```

 **log.info (*message*,*ex*);** 

Parameter: *message* ist die zu protokollierende Nachricht. * ex*ist die Ausnahme, falls vorhanden, für die Protokollierung.

Beispiel:

```
log.info("Successfully completed step - login.");
```

 **log.log (*message*,*ex*);** 

Dies ist ein Alias für `log.info`. 

Parameter: *message* ist die zu protokollierende Nachricht. * ex*ist die Ausnahme, falls vorhanden, für die Protokollierung.

Beispiel:

```
 log.log("Successfully completed step - login.");
```

 **log.warn (*message*,); *ex*** 

Parameter: *message* ist die zu protokollierende Nachricht. * ex*ist die Ausnahme, falls vorhanden, für die Protokollierung.

Beispiel:

```
log.warn("Exception encountered trying to publish CloudWatch Metric.", ex);
```

### SyntheticsLogHelper Klasse
<a name="CloudWatch_Synthetics_Library_SyntheticsLogHelper"></a>

Die Klasse `SyntheticsLogHelper` ist in der Laufzeit ` syn-nodejs-puppeteer-3.2` und späteren Laufzeiten verfügbar. Es ist bereits in der CloudWatch Synthetics-Bibliothek initialisiert und mit der Synthetics-Konfiguration konfiguriert. Sie können dies in Ihrem Skript als Abhängigkeit hinzufügen. Mit dieser Klasse können Sie Header und Fehlermeldungen bereinigen URLs, um vertrauliche Informationen zu redigieren.

**Anmerkung**  
Synthetics bereinigt alle URLs protokollierten Fehlermeldungen, bevor sie auf der Grundlage der Synthetics-Konfigurationseinstellung in Protokolle, Berichte, HAR-Dateien und Canary-Run-Fehler aufgenommen werden. `restrictedUrlParameters` Sie müssen ` getSanitizedUrl` oder `getSanitizedErrorMessage` nur verwenden, wenn Sie Fehler in Ihrem Skript protokollieren URLs . Synthetics speichert keine Canaryartefakte mit Ausnahme von Canaryfehlern, die vom Skript ausgelöst werden. Canary-Lauf-Artefakte werden in Ihrem Kundenkonto gespeichert. Weitere Informationen finden Sie unter [Sicherheitsüberlegungen für Synthetics-Canaries](servicelens_canaries_security.md).

**Topics**
+ [getSanitizedUrl(url, stepConfig = null)](#CloudWatch_Synthetics_Library_getSanitizedUrl)
+ [getSanitizedErrorNachricht](#CloudWatch_Synthetics_Library_getSanitizedErrorMessage)
+ [getSanitizedHeaders(Header, StepConfig=Null)](#CloudWatch_Synthetics_Library_getSanitizedHeaders)

#### getSanitizedUrl(url, stepConfig = null)
<a name="CloudWatch_Synthetics_Library_getSanitizedUrl"></a>

Diese Funktion ist in `syn-nodejs-puppeteer-3.2` und höher verfügbar. Es gibt bereinigt URL-Zeichenfolgen basierend auf der Konfiguration. Sie können sich dafür entscheiden, sensible URL-Parameter wie password und access\$1token zu schwärzen, indem Sie die Eigenschaft `restrictedUrlParameters` festlegen. Standardmäßig werden Passwörter in URLs geschwärzt. Sie können bei Bedarf URL-Passwörter aktivieren, indem Sie `includeUrlPassword` auf true setzen. 

Diese Funktion löst einen Fehler aus, wenn die übergebene URL keine gültige URL ist.

 **Parameter** 
+ *url*ist eine Zeichenfolge und die URL, die bereinigt werden soll.
+  *stepConfig*(Optional) überschreibt die globale Synthetics-Konfiguration für diese Funktion. Wenn `stepConfig` nicht übergeben wird, wird die globale Konfiguration verwendet, um die URL zu bereinigen.

 **Beispiel** 

In diesem Beispiel wird die folgende Beispiel-URL verwendet :` https://example.com/learn/home?access_token=12345&token_type=Bearer&expires_in=1200`. In diesem Beispiel enthält `access_token` Ihre vertraulichen Informationen, die nicht protokolliert werden sollten. Beachten Sie, dass die Synthetics-Services keine Canary-Artefakte speichern. Artefakte wie Protokolle, Screenshots und Berichte werden in einem Amazon-S3-Bucket in Ihrem Kundenkonto gespeichert.

Der erste Schritt besteht darin, die Synthetics-Konfiguration festzulegen.

```
// Import Synthetics dependency
const synthetics = require('@aws/synthetics-puppeteer');

// Import Synthetics logger for logging url
const log = require('@aws/synthetics-logger');

// Get Synthetics configuration
const synConfig = synthetics.getConfiguration();

// Set restricted parameters
synConfig.setConfig({
   restrictedUrlParameters: ['access_token'];
});
// Import SyntheticsLogHelper dependency
const syntheticsLogHelper = require('@aws/synthetics-log-helper');

const sanitizedUrl = syntheticsLogHelper.getSanitizedUrl('URL');



const urlConfig = {
   restrictedUrlParameters = ['*']
};
const sanitizedUrl = syntheticsLogHelper.getSanitizedUrl('URL', urlConfig);
logger.info('My example url is: ' + sanitizedUrl);
```

Als nächstes bereinigen und protokollieren Sie die URL

```
// Import SyntheticsLogHelper dependency
const syntheticsLogHelper = require('@aws/synthetics-log-helper');

const sanitizedUrl = syntheticsLogHelper.getSanitizedUrl('https://example.com/learn/home?access_token=12345&token_type=Bearer&expires_in=1200');
```

Dies protokolliert Folgendes in Ihrem Canaryprotokoll.

```
My example url is: https://example.com/learn/home?access_token=REDACTED&token_type=Bearer&expires_in=1200
```

Sie können die Synthetics-Konfiguration für eine URL überschreiben, indem Sie einen optionalen Parameter mit Synthetics-Konfigurationsoptionen übergeben, wie im folgenden Beispiel gezeigt.

```
const urlConfig = {
   restrictedUrlParameters = ['*']
};
const sanitizedUrl = syntheticsLogHelper.getSanitizedUrl('https://example.com/learn/home?access_token=12345&token_type=Bearer&expires_in=1200', urlConfig);
logger.info('My example url is: ' + sanitizedUrl);
```

Im obigen Beispiel werden alle Abfrageparameter geschwärzt und wie folgt protokolliert:

```
My example url is: https://example.com/learn/home?access_token=REDACTED&token_type=REDACTED&expires_in=REDACTED
```

#### getSanitizedErrorNachricht
<a name="CloudWatch_Synthetics_Library_getSanitizedErrorMessage"></a>

Diese Funktion ist in `syn-nodejs-puppeteer-3.2` und höher verfügbar. Es gibt bereinigte Fehlerzeichenfolgen zurück, indem alle URLs vorhandenen Zeichenketten basierend auf der Synthetics-Konfiguration bereinigt werden. Sie können die globale Synthetics-Konfiguration überschreiben, wenn Sie diese Funktion aufrufen, indem Sie einen optionalen `stepConfig`-Parameter übergeben. 

 **Parameter** 
+ *error*ist der Fehler bei der Bereinigung. Es kann ein Fehler-Objekt oder eine Zeichenfolge sein.
+  *stepConfig*(Optional) überschreibt die globale Synthetics-Konfiguration für diese Funktion. Wenn `stepConfig` nicht übergeben wird, wird die globale Konfiguration verwendet, um die URL zu bereinigen.

 **Beispiel** 

In diesem Beispiel wird der folgende Fehler verwendet: ` Failed to load url: https://example.com/learn/home?access_token=12345&token_type=Bearer&expires_in=1200`

Der erste Schritt besteht darin, die Synthetics-Konfiguration festzulegen.

```
// Import Synthetics dependency
const synthetics = require('@aws/synthetics-puppeteer');

// Import Synthetics logger for logging url
const log = require('@aws/synthetics-logger');

// Get Synthetics configuration
const synConfig = synthetics.getConfiguration();

// Set restricted parameters
synConfig.setConfig({
   restrictedUrlParameters: ['access_token'];
});
```

Als nächstes bereinigen und protokollieren Sie die Fehlermeldung

```
// Import SyntheticsLogHelper dependency
const syntheticsLogHelper = require('@aws/synthetics-log-helper');

try {
   // Your code which can throw an error containing url which your script logs
} catch (error) {
    const sanitizedErrorMessage = syntheticsLogHelper.getSanitizedErrorMessage(errorMessage);
    logger.info(sanitizedErrorMessage);
}
```

Dies protokolliert Folgendes in Ihrem Canaryprotokoll.

```
Failed to load url: https://example.com/learn/home?access_token=REDACTED&token_type=Bearer&expires_in=1200
```

#### getSanitizedHeaders(Header, StepConfig=Null)
<a name="CloudWatch_Synthetics_Library_getSanitizedHeaders"></a>

Diese Funktion ist in `syn-nodejs-puppeteer-3.2` und höher verfügbar. Es gibt bereinigte Header basierend auf der `restrictedHeaders`-Eigenschaft von ` syntheticsConfiguration` zurück. Die in der Eigenschaft `restrictedHeaders` angegebenen Header werden aus Protokollen, HAR-Dateien und Berichten entfernt. 

 **Parameter** 
+ *headers*ist ein Objekt, das die zu bereinigenden Header enthält.
+ *stepConfig*(Optional) überschreibt die globale Synthetics-Konfiguration für diese Funktion. Wenn `stepConfig` nicht übergeben wird, wird die globale Konfiguration verwendet, um die Header zu bereinigen.

## Node.js-Bibliotheksklassen und -funktionen, die nur für UI-Canaries gelten
<a name="CloudWatch_Synthetics_Library_UIcanaries"></a>

Die folgenden CloudWatch Synthetics-Bibliotheksfunktionen für Node.js sind nur für UI Canaries nützlich.

**Topics**
+ [Synthetics-Klasse](#CloudWatch_Synthetics_Library_Synthetics_Class)
+ [BrokenLinkCheckerReport Klasse](#CloudWatch_Synthetics_Library_BrokenLinkCheckerReport)
+ [SyntheticsLink Klasse](#CloudWatch_Synthetics_Library_SyntheticsLink)

### Synthetics-Klasse
<a name="CloudWatch_Synthetics_Library_Synthetics_Class"></a>

Die folgenden Funktionen befinden sich in der Klasse Synthetics.

**Topics**
+ [asynchron addUserAgent (Seite,); userAgentString](#CloudWatch_Synthetics_Library_addUserAgent)
+ [asynchron executeStep (stepName, functionToExecute, [StepConfig]);](#CloudWatch_Synthetics_Library_executeStep)
+ [getDefaultLaunchOptionen ();](#CloudWatch_Synthetics_Library_getDefaultLaunchOptions)
+ [getPage();](#CloudWatch_Synthetics_Library_getPage)
+ [getRequestResponseLogHelper();](#CloudWatch_Synthetics_Library_getRequestResponseLogHelper)
+ [Start (Optionen)](#CloudWatch_Synthetics_Library_LaunchOptions)
+ [RequestResponseLogHelper Klasse](#CloudWatch_Synthetics_Library_RequestResponseLogHelper)
+ [setRequestResponseLogHelper();](#CloudWatch_Synthetics_Library_setRequestResponseLogHelper)
+ [async takeScreenshot(name, suffix);](#CloudWatch_Synthetics_Library_takeScreenshot)

#### asynchron addUserAgent (Seite,); userAgentString
<a name="CloudWatch_Synthetics_Library_addUserAgent"></a>

Diese Funktion hängt *userAgentString* an den User-Agent-Header der angegebenen Seite an.

Beispiel:

```
await synthetics.addUserAgent(page, "MyApp-1.0");
```

Bewirkt, dass der User-Agent-Header der Seite auf ` browsers-user-agent-header-valueMyApp-1.0` gesetzt wird.

#### asynchron executeStep (stepName, functionToExecute, [StepConfig]);
<a name="CloudWatch_Synthetics_Library_executeStep"></a>

Führt den angegebenen Schritt aus und umschließt ihn mit Metriken und deren Dauer. start/pass/fail logging, start/pass/fail screenshots, and pass/fail

**Anmerkung**  
Wenn Sie die Laufzeit `syn-nodejs-2.1` oder höher verwenden, können Sie konfigurieren, ob und wann Screenshots erstellt werden. Weitere Informationen finden Sie unter [SyntheticsConfiguration Klasse](#CloudWatch_Synthetics_Library_SyntheticsConfiguration).

Die `executeStep`-Funktion tut Folgendes:
+ Protokolliert, dass der Schritt gestartet wurde.
+ Erfasst einen Screenshot mit dem Namen `<stepName>-starting`.
+ Startet einen Timer.
+ Führt die bereitgestellte Funktion aus.
+ Wenn die Funktion normal zurückgegeben wird, gilt sie als „bestanden“. Wenn die Funktion scheitert, gilt sie als fehlgeschlagen.
+ Beendet den Timer.
+ Protokolliert, ob der Schritt bestanden oder fehlgeschlagen ist
+ Erfasst einen Screenshot mit dem Namen `<stepName>-succeeded` oder ` <stepName>-failed`.
+ Gibt die Metrik `stepName` `SuccessPercent` aus, wobei „100“ für erfolgreich bzw. „0“ für nicht erfolgreich steht.
+ Gibt die Metrik `stepName` `Duration` aus, mit einem Wert basierend auf der Start- und der Endzeit des Schrittes.
+ Gibt schließlich zurück, was die `functionToExecute` zurückgegeben hat, oder wiederholt einen Throw-Vorgang von `functionToExecute`.

Wenn der Canary die Laufzeit `syn-nodejs-2.0` oder höher verwendet, fügt diese Funktion dem Bericht des Canary auch eine Zusammenfassung der Schrittausführung hinzu. Die Zusammenfassung enthält Details zu jedem Schritt, wie Startzeit, Endzeit, Status (PASSED/FAILED), Fehlergrund (falls fehlgeschlagen) und Screenshots, die während der Ausführung jedes Schritts erfasst wurden.

Beispiel:

```
await synthetics.executeStep('navigateToUrl', async function (timeoutInMillis = 30000) {
           await page.goto(url, {waitUntil: ['load', 'networkidle0'], timeout: timeoutInMillis});});
```

Antwort:

Gibt zurück, was `functionToExecute` zurückgibt.

 **Updates mit syn-nodejs-2.2** 

Zunächst können Sie optional Schrittkonfigurationen übergeben`syn-nodejs-2.2`, um CloudWatch Synthetics-Konfigurationen auf Schrittebene zu überschreiben. Eine Liste der Optionen, die Sie an `executeStep` übergeben können, finden Sie unter [SyntheticsConfiguration Klasse](#CloudWatch_Synthetics_Library_SyntheticsConfiguration).

Das folgende Beispiel überschreibt die `false`-Standardkonfiguration für ` continueOnStepFailure` bis `true` und gibt an, wann Screenshots erstellt werden sollen.

```
var stepConfig = {
    'continueOnStepFailure': true,
    'screenshotOnStepStart': false,
    'screenshotOnStepSuccess': true,
    'screenshotOnStepFailure': false
}

await executeStep('Navigate to amazon', async function (timeoutInMillis = 30000) {
      await page.goto(url, {waitUntil: ['load', 'networkidle0'], timeout: timeoutInMillis});
 }, stepConfig);
```

#### getDefaultLaunchOptionen ();
<a name="CloudWatch_Synthetics_Library_getDefaultLaunchOptions"></a>

Die `getDefaultLaunchOptions()` Funktion gibt die Browser-Startoptionen zurück, die von CloudWatch Synthetics verwendet werden. Weitere Informationen finden Sie unter [Startoptionen-Typ](https://pptr.dev/browsers-api/browsers.launchoptions/) 

```
// This function returns default launch options used by Synthetics.
const defaultOptions = await synthetics.getDefaultLaunchOptions();
```

#### getPage();
<a name="CloudWatch_Synthetics_Library_getPage"></a>

Gibt die aktuell geöffnete Seite als Puppeteer-Objekt zurück. Weitere Informationen finden Sie unter [Puppeteer API v1.14.0](https://github.com/puppeteer/puppeteer/blob/v1.14.0/docs/api.md).

Beispiel:

```
let page = await synthetics.getPage();
```

Antwort:

Die Seite (Puppeteer-Objekt), die derzeit in der aktuellen Browsersitzung geöffnet ist.

#### getRequestResponseLogHelper();
<a name="CloudWatch_Synthetics_Library_getRequestResponseLogHelper"></a>

**Wichtig**  
In Canaries, die die Laufzeit `syn-nodejs-puppeteer-3.2` oder höher verwenden, ist diese Funktion zusammen mit der `RequestResponseLogHelper`-Klasse veraltet. Jede Verwendung dieser Funktion bewirkt, dass eine Warnung in Ihren Canaryprotokollen angezeigt wird. Diese Funktion wird in zukünftigen Laufzeitversionen entfernt. Wenn Sie diese Funktion verwenden, verwenden Sie stattdessen [RequestResponseLogHelper Klasse](#CloudWatch_Synthetics_Library_RequestResponseLogHelper). 

Verwenden Sie diese Funktion als Builder-Muster zum Optimieren der Anforderungs- und Antwortprotokollierungsmarkierungen.

Beispiel:

```
synthetics.setRequestResponseLogHelper(getRequestResponseLogHelper().withLogRequestHeaders(false));;
```

Antwort:

```
{RequestResponseLogHelper}
```

#### Start (Optionen)
<a name="CloudWatch_Synthetics_Library_LaunchOptions"></a>

Die Optionen für diese Funktion sind erst ab der Laufzeit-Version `syn-nodejs-2.1` verfügbar.

Diese Funktion wird nur für UI-Canarys verwendet. Es schließt den vorhandenen Browser und startet einen neuen.

**Anmerkung**  
CloudWatch Synthetics startet immer einen Browser, bevor Sie mit der Ausführung Ihres Skripts beginnen. Sie müssen launch() nicht aufrufen, es sei denn, Sie möchten einen neuen Browser mit benutzerdefinierten Optionen starten.

(Optionen) ist ein konfigurierbarer Satz von Optionen, die im Browser festgelegt werden sollen. Weitere Informationen finden Sie unter [Startoptionen-Typ](https://pptr.dev/browsers-api/browsers.launchoptions/).

Wenn Sie diese Funktion ohne Optionen aufrufen, startet Synthetics einen Browser mit Standardargumenten `executablePath` und `defaultViewport`. Das Standardansichtsfenster in CloudWatch Synthetics ist 1920 mal 1080.

Sie können die von CloudWatch Synthetics verwendeten Startparameter überschreiben und beim Starten des Browsers zusätzliche Parameter übergeben. Mit dem folgenden Codeausschnitt wird beispielsweise ein Browser mit Standardargumenten und einem standardmäßigen ausführbaren Pfad gestartet, jedoch mit einem Ansichtsfenster von 800 x 600.

```
await synthetics.launch({
        defaultViewport: { 
            "deviceScaleFactor": 1, 
            "width": 800,
            "height": 600 
    }});
```

Der folgende Beispielcode fügt den `ignoreHTTPSErrors` CloudWatch Synthetics-Startparametern einen neuen Parameter hinzu:

```
await synthetics.launch({
        ignoreHTTPSErrors: true
 });
```

Sie können die Websicherheit deaktivieren, indem Sie args in den CloudWatch Synthetics-Startparametern ein `--disable-web-security` Flag hinzufügen:

```
// This function adds the --disable-web-security flag to the launch parameters
const defaultOptions = await synthetics.getDefaultLaunchOptions();
const launchArgs = [...defaultOptions.args, '--disable-web-security'];
await synthetics.launch({
     args: launchArgs
  });
```

#### RequestResponseLogHelper Klasse
<a name="CloudWatch_Synthetics_Library_RequestResponseLogHelper"></a>

**Wichtig**  
In Canaries, die die Laufzeit `syn-nodejs-puppeteer-3.2` oder höher verwenden, ist diese Klasse veraltet. Jede Verwendung dieser Klasse bewirkt, dass eine Warnung in Ihren Canaryprotokollen angezeigt wird. Diese Funktion wird in zukünftigen Laufzeitversionen entfernt. Wenn Sie diese Funktion verwenden, verwenden Sie stattdessen [RequestResponseLogHelper Klasse](#CloudWatch_Synthetics_Library_RequestResponseLogHelper).

Behandelt die präzise Konfiguration und Erstellung von Zeichenfolgendarstellungen von Anforderungs- und Antwort-Nutzlasten. 

```
class RequestResponseLogHelper {
 
    constructor () {
        this.request = {url: true, resourceType: false, method: false, headers: false, postData: false};
        this.response = {status: true, statusText: true, url: true, remoteAddress: false, headers: false};
    }
 
    withLogRequestUrl(logRequestUrl);
    
    withLogRequestResourceType(logRequestResourceType);
    
    withLogRequestMethod(logRequestMethod);
    
    withLogRequestHeaders(logRequestHeaders);
    
    withLogRequestPostData(logRequestPostData);

        
    withLogResponseStatus(logResponseStatus);
    
    withLogResponseStatusText(logResponseStatusText);
   
    withLogResponseUrl(logResponseUrl);
 
    withLogResponseRemoteAddress(logResponseRemoteAddress);
    
    withLogResponseHeaders(logResponseHeaders);
```

Beispiel:

```
synthetics.setRequestResponseLogHelper(getRequestResponseLogHelper()
.withLogRequestPostData(true)
.withLogRequestHeaders(true)
.withLogResponseHeaders(true));
```

Antwort:

```
{RequestResponseLogHelper}
```

#### setRequestResponseLogHelper();
<a name="CloudWatch_Synthetics_Library_setRequestResponseLogHelper"></a>

**Wichtig**  
In Canaries, die die Laufzeit `syn-nodejs-puppeteer-3.2` oder höher verwenden, ist diese Funktion zusammen mit der `RequestResponseLogHelper`-Klasse veraltet. Jede Verwendung dieser Funktion bewirkt, dass eine Warnung in Ihren Canaryprotokollen angezeigt wird. Diese Funktion wird in zukünftigen Laufzeitversionen entfernt. Wenn Sie diese Funktion verwenden, verwenden Sie stattdessen [RequestResponseLogHelper Klasse](#CloudWatch_Synthetics_Library_RequestResponseLogHelper). 

Verwenden Sie diese Funktion als Builder-Muster zum Einstellen der Anforderungs- und Antwortprotokollierungsmarkierungen.

Beispiel:

```
synthetics.setRequestResponseLogHelper().withLogRequestHeaders(true).withLogResponseHeaders(true);
```

Antwort:

```
{RequestResponseLogHelper}
```

#### async takeScreenshot(name, suffix);
<a name="CloudWatch_Synthetics_Library_takeScreenshot"></a>

Erstelle einen Screenshot (.PNG) der aktuellen Seite mit Name und Suffix (Optional).

Beispiel:

```
await synthetics.takeScreenshot("navigateToUrl", "loaded")
```

In diesem Beispiel wird ein Screenshot mit dem Namen ` 01-navigateToUrl-loaded.png` aufgenommen und in den S3 Bucket des Canary hochgeladen.

Sie können einen Screenshot für einen bestimmten Canary-Schritt erstellen, indem Sie das ` stepName` als ersten Parameter übergeben. Screenshots sind mit dem Canaryschritt in Ihren Berichten verknüpft, damit Sie jeden Schritt beim Debuggen verfolgen können.

CloudWatch Synthetics Canaries macht automatisch Screenshots vor dem Starten eines Schritts (die `executeStep` Funktion) und nach Abschluss des Schritts (es sei denn, Sie konfigurieren den Canary so, dass Screenshots deaktiviert werden). Sie können weitere Screenshots erstellen, indem Sie den Schrittnamen in der `takeScreenshot`-Funktion übergeben.

Im folgenden Beispiel wird ein Screenshot mit dem `signupForm` als Wert von `stepName` erstellt. Der Screenshot erhält den Namen ` 02-signupForm-address` und wird mit dem Schritt namens ` signupForm` im Canary-Bericht verknüpft.

```
await synthetics.takeScreenshot('signupForm', 'address')
```

### BrokenLinkCheckerReport Klasse
<a name="CloudWatch_Synthetics_Library_BrokenLinkCheckerReport"></a>

Diese Klasse bietet Methoden, um eine Synthetics-Verknüpfung hinzuzufügen. Es wird nur auf Canarysn unterstützt, die die `syn-nodejs-2.0-beta`-Version der Laufzeitumgebung oder höher verwenden. 

Um `BrokenLinkCheckerReport` zu verwenden, fügen Sie die folgenden Zeilen in das Skript ein:

```
const BrokenLinkCheckerReport = require('@aws/synthetics-broken-link-checker-report');
            
const brokenLinkCheckerReport = new BrokenLinkCheckerReport();
```

Nützliche Funktionsdefinitionen:

 **Link hinzufügen (*syntheticsLink*, ist kaputt)** 

` syntheticsLink ` ist ein ` SyntheticsLink`-Objekt, das eine Verknüpfung darstellt. Diese Funktion fügt den Link entsprechend dem Statuscode hinzu. Standardmäßig betrachtet es einen Link als unterbrochen, wenn der Statuscode nicht verfügbar ist oder der Statuscode 400 oder höher ist. Sie können dieses Standardverhalten überschreiben, indem Sie den optionalen Parameter `isBrokenLink` mit einem Wert von`true` oder `false` übergeben.

Diese Funktion hat keinen Rückgabewert.

 **getLinks()** 

Diese Funktion gibt ein Array von `SyntheticsLink`-Objekten zurück, die im Bericht zur Überprüfung von defekten Links enthalten sind.

 **getTotalBrokenVerknüpfungen ()** 

Diese Funktion gibt eine Zahl zurück, die die Gesamtzahl der defekten Links darstellt.

 **getTotalLinksGeprüft ()** 

Diese Funktion gibt eine Zahl zurück, die die Gesamtzahl der im Bericht enthaltenen Links darstellt.

 **Wie benutzt man BrokenLinkCheckerReport** 

Das folgende Code-Snippet aus einem Canary-Skript veranschaulicht anhand eines Beispiels die Navigation zu einem Link und das Hinzufügen zum Bericht zur Überprüfung eines fehlerhaften Links.

1. Importieren von `SyntheticsLink`, `BrokenLinkCheckerReport` und ` Synthetics`.

   ```
   const BrokenLinkCheckerReport = require('@aws/synthetics-broken-link-checker-report');
   const SyntheticsLink = require('@aws/synthetics-link');
   
   // Synthetics dependency
   const synthetics = require('@aws/synthetics-puppeteer');
   ```

1. Um einen Link zum Bericht hinzuzufügen, erstellen Sie eine Instance von ` BrokenLinkCheckerReport`.

   ```
   let brokenLinkCheckerReport = new BrokenLinkCheckerReport();
   ```

1. Navigieren Sie zu der URL, und fügen Sie sie dem Bericht zur Überprüfung fehlerhafter Links hinzu.

   ```
   let url = "https://amazon.com";
   
   let syntheticsLink = new SyntheticsLink(url);
   
   // Navigate to the url.
   let page = await synthetics.getPage();
   
   // Create a new instance of Synthetics Link
   let link = new SyntheticsLink(url)
   
   try {
       const response = await page.goto(url, {waitUntil: 'domcontentloaded', timeout: 30000});
   } catch (ex) {
       // Add failure reason if navigation fails.
       link.withFailureReason(ex);
   }
   
   if (response) {
       // Capture screenshot of destination page
       let screenshotResult = await synthetics.takeScreenshot('amazon-home', 'loaded');
      
       // Add screenshot result to synthetics link
       link.addScreenshotResult(screenshotResult);
   
       // Add status code and status description to the link
       link.withStatusCode(response.status()).withStatusText(response.statusText())
   }
   
   // Add link to broken link checker report.
   brokenLinkCheckerReport.addLink(link);
   ```

1. Fügen Sie den Bericht zu Synthetics hinzu. Dadurch wird für jeden Canary-Lauf eine JSON-Datei mit dem Namen ` BrokenLinkCheckerReport.json` in Ihrem S3 Bucket erstellt. Sie können einen Link-Bericht in der Konsole für jeden Canary-Lauf zusammen mit Screenshots, Protokollen und HAR-Dateien sehen.

   ```
   await synthetics.addReport(brokenLinkCheckerReport);
   ```

### SyntheticsLink Klasse
<a name="CloudWatch_Synthetics_Library_SyntheticsLink"></a>

Diese Klasse bietet Methoden zum Umschließen von Informationen. Es wird nur auf Canaries unterstützt, die die `syn-nodejs-2.0-beta`-Version der Laufzeit oder höher verwenden. 

Um `SyntheticsLink` zu verwenden, fügen Sie die folgenden Zeilen in das Skript ein:

```
const SyntheticsLink = require('@aws/synthetics-link');

const syntheticsLink = new SyntheticsLink("https://www.amazon.com");
```

Diese Funktion gibt `syntheticsLinkObject` zurück

Nützliche Funktionsdefinitionen:

 **mit URL () *url*** 

` url ` ist eine URL-Zeichenfolge. Diese Funktion gibt `syntheticsLinkObject` zurück

 **mit Text () *text*** 

` text ` ist eine Zeichenfolge, die Ankertext darstellt. Diese Funktion gibt `syntheticsLinkObject` zurück. Es fügt Ankertext hinzu, der dem Link entspricht.

 **withParentUrl(*parentUrl*)** 

` parentUrl ` ist eine Zeichenfolge, die die übergeordnete URL (Quellseite) darstellt. Diese Funktion gibt `syntheticsLink Object` zurück

 **withStatusCode(*statusCode*)** 

` statusCode ` ist eine Zeichenfolge, die den Statuscode darstellt. Diese Funktion gibt `syntheticsLinkObject` zurück

 **withFailureReason(*failureReason*)** 

` failureReason ` ist eine Zeichenfolge, die den Grund für den Fehler darstellt. Diese Funktion gibt `syntheticsLink Object` zurück

 **addScreenshotResult(*screenshotResult*)** 

` screenshotResult ` ist ein Objekt. Es ist eine Instance von `ScreenshotResult`, die von der Synthetics-Funktion `takeScreenshot` zurückgegeben wurde. Das Objekt umfasst Folgendes:
+ `fileName` – Eine Zeichenfolge, die ` screenshotFileName` darstellt
+ `pageUrl` (optional)
+ `error` (optional)

## Node.js-Bibliotheksklassen und -funktionen, die nur für API-Canaries gelten
<a name="CloudWatch_Synthetics_Library_APIcanaries"></a>

Die folgenden CloudWatch Synthetics-Bibliotheksfunktionen für Node.js sind nur für API Canaries nützlich.

**Topics**
+ [executeHttpStep(stepName, RequestOptions, [Rückruf], [StepConfig])](#CloudWatch_Synthetics_Library_executeHttpStep)

### executeHttpStep(stepName, RequestOptions, [Rückruf], [StepConfig])
<a name="CloudWatch_Synthetics_Library_executeHttpStep"></a>

Führt die bereitgestellte HTTP-Anforderung als Schritt aus und veröffentlicht `SuccessPercent`- (pass/fail) und `Duration`-Metriken.

**executeHttpStep**verwendet entweder native HTTP- oder HTTPS-Funktionen unter der Haube, abhängig vom in der Anfrage angegebenen Protokoll.

Diese Funktion fügt dem Bericht des Canarys außerdem eine Zusammenfassung der Schrittausführung hinzu. Die Zusammenfassung enthält Details zu jeder HTTP-Anforderung, wie zum Beispiel die folgenden:
+ Startzeit
+ Endzeit
+ Status (PASSED/FAILED)
+ Fehlergrund, wenn fehlgeschlagen
+ HTTP-Aufrufdetails wie request/response Header, Hauptteil, Statuscode, Statusmeldung und Leistungszeiten. 

**Topics**
+ [Parameters](#CloudWatch_Synthetics_Library_executeHttpStep_parameters)
+ [Beispiele für die Verwendung executeHttpStep](#CloudWatch_Synthetics_Library_executeHttpStep_examples)

#### Parameters
<a name="CloudWatch_Synthetics_Library_executeHttpStep_parameters"></a>

 **stepName () *String*** 

Legt den Namen des Schrittes fest. Dieser Name wird auch für die Veröffentlichung von CloudWatch Metriken für diesen Schritt verwendet.

 **RequestOptions () *Object or String*** 

Der Wert dieses Parameters kann eine URL, eine URL-Zeichenfolge oder ein Objekt sein. Wenn es sich um ein Objekt handelt, muss es sich um eine Gruppe konfigurierbarer Optionen handeln, um eine HTTP-Anforderung zu stellen. Es unterstützt alle Optionen in [ http.request(options[, callback])](https://nodejs.org/api/http.html#http_http_request_options_callback) in der Node.js-Dokumentation.

Zusätzlich zu diesen Node.js-Optionen unterstützt **requestOptions** den zusätzlichen Parameter `body`. Sie können den Parameter `body` verwenden, um Daten als Anforderungstext zu übergeben.

 **Rückruf () *response*** 

(Optional) Dies ist eine Benutzerfunktion, die mit der HTTP-Antwort aufgerufen wird. Die Antwort ist vom Typ [Class: http. IncomingMessage](https://nodejs.org/api/http.html#http_class_http_incomingmessage).

 **SchrittKonfiguration () *object*** 

(Optional) Verwenden Sie diesen Parameter, um globale Synthetics-Konfigurationen mit einer anderen Konfiguration für diesen Schritt zu überschreiben.

#### Beispiele für die Verwendung executeHttpStep
<a name="CloudWatch_Synthetics_Library_executeHttpStep_examples"></a>

Die folgende Reihe von Beispielen baut aufeinander auf, um die verschiedenen Verwendungsmöglichkeiten dieser Option zu veranschaulichen.

In diesem ersten Beispiel werden Anforderungsparameter konfiguriert. Sie können eine URL als **RequestOptions** übergeben:

```
let requestOptions = 'https://www.amazon.com';
```

Oder Sie können eine Reihe von Optionen übergeben:

```
let requestOptions = {
        'hostname': 'myproductsEndpoint.com',
        'method': 'GET',
        'path': '/test/product/validProductName',
        'port': 443,
        'protocol': 'https:'
    };
```

Das nächste Beispiel erstellt eine Callback-Funktion, die eine Antwort akzeptiert. Wenn Sie keinen **Callback** angeben, überprüft CloudWatch Synthetics standardmäßig, ob der Status zwischen 200 und 299 (einschließlich) liegt.

```
// Handle validation for positive scenario
    const callback = async function(res) {
        return new Promise((resolve, reject) => {
            if (res.statusCode < 200 || res.statusCode > 299) {
                throw res.statusCode + ' ' + res.statusMessage;
            }
     
            let responseBody = '';
            res.on('data', (d) => {
                responseBody += d;
            });
     
            res.on('end', () => {
                // Add validation on 'responseBody' here if required. For ex, your status code is 200 but data might be empty
                resolve();
            });
        });
    };
```

Das nächste Beispiel erstellt eine Konfiguration für diesen Schritt, die die globale CloudWatch Synthetics-Konfiguration überschreibt. Die Schrittkonfiguration in diesem Beispiel ermöglicht Anforderungskopfzeilen, Antwort-Header, Anforderungstext (Postdaten) und Antworttext in Ihrem Bericht und schränkt die Header-Werte „X-AMZ-Security-Token“ und „Authorization“ ein. Standardmäßig sind diese Werte aus Sicherheitsgründen nicht im Bericht enthalten. Wenn Sie sie einbeziehen, werden die Daten nur in Ihrem S3 Bucket gespeichert.

```
// By default headers, post data, and response body are not included in the report for security reasons. 
// Change the configuration at global level or add as step configuration for individual steps
let stepConfig = {
    includeRequestHeaders: true, 
    includeResponseHeaders: true,
    restrictedHeaders: ['X-Amz-Security-Token', 'Authorization'], // Restricted header values do not appear in report generated.
    includeRequestBody: true,
    includeResponseBody: true
};
```

Dieses letzte Beispiel leitet Ihre Anfrage an den Schritt weiter **executeHttpStep**und benennt ihn.

```
await synthetics.executeHttpStep('Verify GET products API', requestOptions, callback, stepConfig);
```

Mit diesen Beispielen fügt CloudWatch Synthetics die Details aus jedem Schritt in Ihrem Bericht hinzu und erstellt mithilfe von **stepName** Metriken für jeden Schritt.

 Sie sehen `successPercent`- und `duration`-Metriken für den Schritt `Verify GET products API`. Sie können Ihre API-Leistung überwachen, indem Sie die Metriken für Ihre API-Aufrufschritte überwachen. 

Ein vollständiges Beispielskript, das diese Funktionen verwendet, finden Sie unter [Mehrstufiger API-Canary](CloudWatch_Synthetics_Canaries_Samples.md#CloudWatch_Synthetics_Canaries_Samples_APIsteps).

# Verfügbare Bibliotheksfunktionen für Python-Canary-Skripte mit Selenium
<a name="CloudWatch_Synthetics_Canaries_Library_Python"></a>

Dieser Abschnitt listet die Selenium-Bibliotheksfunktionen auf, die für Python-Canary-Skripte verfügbar sind

**Topics**
+ [Python- und Selenium-Bibliotheksklassen und Funktionen, die für alle Canarys gelten](#CloudWatch_Synthetics_Library_allcanaries_Python)
+ [Python- und Selenium-Bibliotheksklassen und Funktionen, die nur für UI-Canarys gelten](#CloudWatch_Synthetics_Library_Python_UIcanaries)

## Python- und Selenium-Bibliotheksklassen und Funktionen, die für alle Canarys gelten
<a name="CloudWatch_Synthetics_Library_allcanaries_Python"></a>

Die folgenden CloudWatch Synthetics Selenium-Bibliotheksfunktionen für Python sind für alle Kanarienvögel nützlich.

**Topics**
+ [SyntheticsConfiguration Klasse](#CloudWatch_Synthetics_Library_SyntheticsConfiguration_Python)
+ [SyntheticsLogger Klasse](#CloudWatch_Synthetics_Library_SyntheticsLogger_Python)

### SyntheticsConfiguration Klasse
<a name="CloudWatch_Synthetics_Library_SyntheticsConfiguration_Python"></a>

Sie können die SyntheticsConfiguration Klasse verwenden, um das Verhalten von Synthetics-Bibliotheksfunktionen zu konfigurieren. Sie können diese Klasse beispielsweise verwenden, um die ` executeStep()`-Funktion so zu konfigurieren, dass keine Screenshots erfasst werden.

Sie können CloudWatch Synthetics-Konfigurationen auf globaler Ebene festlegen.

Funktionsdefinitionen:

#### set\$1config (Optionen)
<a name="CloudWatch_Synthetics_Library_setConfig_Python"></a>

```
from aws_synthetics.common import synthetics_configuration
```

` options ` ist ein Objekt, bei dem es sich um eine Reihe konfigurierbarer Optionen für Ihren Canary handelt. In den folgenden Abschnitten werden die möglichen Felder in ` options ` erläutert.
+ `screenshot_on_step_start` (boolean) – Gibt an, ob ein Screenshot erstellt werden soll, bevor ein Schritt gestartet wird.
+ `screenshot_on_step_success` (boolean) – Gibt an, ob nach einem erfolgreichen Schritt ein Screenshot erstellt werden soll.
+ `screenshot_on_step_failure` (boolean) - Ob ein Screenshot erstellt werden soll, nachdem ein Schritt fehlgeschlagen ist.

 **with\$1screenshot\$1on\$1step\$1start(screenshot\$1on\$1step\$1start)** 

Akzeptiert ein boolesches Argument, das angibt, ob ein Screenshot erstellt werden soll, bevor ein Schritt gestartet wird.

 **with\$1screenshot\$1on\$1step\$1success(screenshot\$1on\$1step\$1success)** 

Akzeptiert ein boolesches Argument, das angibt, ob nach erfolgreichem Abschluss eines Schritts ein Screenshot erstellt werden soll.

 **with\$1screenshot\$1on\$1step\$1failure(screenshot\$1on\$1step\$1failure)** 

Akzeptiert ein boolesches Argument, das angibt, ob nach einem Schritt ein Screenshot erstellt werden soll.

 **get\$1screenshot\$1on\$1step\$1start()** 

Gibt zurück, ob ein Screenshot erstellt werden soll, bevor ein Schritt gestartet wird.

 **get\$1screenshot\$1on\$1step\$1success()** 

Gibt zurück, ob ein Screenshot erstellt werden soll, nachdem ein Schritt erfolgreich abgeschlossen wurde.

 **get\$1screenshot\$1on\$1step\$1failure()** 

Gibt zurück, ob ein Screenshot erstellt werden soll, nachdem ein Schritt fehlgeschlagen ist.

 **disable\$1step\$1screenshots()** 

Deaktiviert alle Screenshot-Optionen (get\$1screenshot\$1on\$1step\$1start, get\$1screenshot\$1on\$1step\$1success und get\$1screenshot\$1on\$1step\$1failure).

 **enable\$1step\$1screenshots()** 

Aktiviert alle Screenshot-Optionen (get\$1screenshot\$1on\$1step\$1start, get\$1screenshot\$1on\$1step\$1success und get\$1screenshot\$1on\$1step\$1failure). Standardmäßig sind alle diese Methoden aktiviert.

 **SetConfig (Optionen) in Bezug auf Metriken CloudWatch ** 

Für Kanarienvögel, die das Programm verwenden `syn-python-selenium-1.1` oder später verwenden, können die **(Optionen)** für **SetConfig** die folgenden booleschen Parameter beinhalten, die bestimmen, welche Metriken vom Kanarienvogel veröffentlicht werden. Der Standardwert für jede dieser Optionen ist `true`. Die Optionen, die mit ` aggregated` beginnen, bestimmen, ob die Metrik ohne die ` CanaryName`-Dimension ausgegeben wird. Sie können diese Metriken verwenden, um die aggregierten Ergebnisse für alle Canarys anzuzeigen. Die anderen Optionen bestimmen, ob die Metrik mit der `CanaryName` Dimension ausgegeben wird. Sie können diese Metriken verwenden, um die Ergebnisse für jeden einzelnen Canary anzuzeigen.

Eine Liste der von Canaries ausgegebenen CloudWatch Messwerte finden Sie unter. [CloudWatch von Canaries veröffentlichte Metriken](CloudWatch_Synthetics_Canaries_metrics.md)
+ `failed_canary_metric` (boolean) – Gibt an, ob die ` Failed`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `failed_requests_metric` (boolean) – Gibt an, ob die `Failed requests`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `2xx_metric` (boolean) – Gibt an, ob die `2xx`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `4xx_metric` (boolean) – Gibt an, ob die `4xx`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `5xx_metric` (boolean) – Gibt an, ob die `5xx`-Metrik (mit der `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `step_duration_metric` (boolean) – Gibt an, ob die `Step duration`-Metrik (mit der `CanaryName`-Dimension `StepName`) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `step_success_metric` (boolean) – Gibt an, ob die `Step success`-Metrik (mit der `CanaryName`-Dimension `StepName`) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `aggregated_failed_canary_metric` (boolean) – Gibt an, ob die `Failed`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `aggregated_failed_requests_metric` (boolean) – Gibt an, ob die `Failed Requests`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `aggregated_2xx_metric` (boolean) – Gibt an, ob die ` 2xx`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `aggregated_4xx_metric` (boolean) – Gibt an, ob die ` 4xx`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.
+ `aggregated_5xx_metric` (boolean) – Gibt an, ob die ` 5xx`-Metrik (ohne die `CanaryName`-Dimension) für diesen Canary emittiert werden soll. Der Standardwert ist `true`.

 **with\$12xx\$1metric(2xx\$1metric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `2xx`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

 **with\$14xx\$1metric(4xx\$1metric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `4xx`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

 **with\$15xx\$1metric(5xx\$1metric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `5xx`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

 **withAggregated2xxMetric(aggregated2xxMetric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `2xx`-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

 **withAggregated4xxMetric(aggregated4xxMetric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `4xx`-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

 **with\$1aggregated\$15xx\$1metric(aggregated\$15xx\$1metric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `5xx`-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

 **with\$1aggregated\$1failed\$1canary\$1metric (aggregated\$1failed\$1canary\$1metric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `Failed`-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

 **with\$1aggregated\$1failed\$1requests\$1metric (aggregated\$1failed\$1requests\$1metric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `Failed requests`-Metrik mit keiner Dimension für diesen Canary emittiert werden soll.

 **with\$1failed\$1canary\$1metric(failed\$1canary\$1metric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `Failed`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

 **with\$1failed\$1requests\$1metric(failed\$1requests\$1metric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `Failed requests`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

 **with\$1step\$1duration\$1metric(step\$1duration\$1metric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `Duration`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

 **with\$1step\$1success\$1metric(step\$1success\$1metric)** 

Akzeptiert ein boolesches Argument, das angibt, ob eine `StepSuccess`-Metrik mit der `CanaryName`-Dimension für diesen Canary emittiert werden soll.

##### Methoden zum Aktivieren oder Deaktivieren von Metriken
<a name="CloudWatch_Synthetics_Python_setConfig_metrics"></a>

 **disable\$1aggregated\$1request\$1metrics()** 

Verhindert, dass der Canary alle Anforderungsmesswerte ausgibt, die ohne ` CanaryName`-Dimension ausgegeben werden.

 **disable\$1request\$1metrics()** 

Deaktiviert alle Anforderungsmetriken, einschließlich aller Canary-Metriken und Metriken, die über alle Canarys aggregiert werden.

 **disable\$1step\$1metrics()** 

Deaktiviert alle Schrittmetriken, einschließlich Metriken für den Schritterfolg und für die Schrittdauer.

 **enable\$1aggregated\$1request\$1metrics()** 

Ermöglicht dem Canary, alle Anforderungsmesswerte auszugeben, die ohne ` CanaryName`-Dimension ausgegeben werden.

 **enable\$1request\$1metrics()** 

Aktiviert alle Anforderungsmetriken, einschließlich aller Canary-Metriken und Metriken, die über alle Canarys aggregiert werden.

 **enable\$1step\$1metrics()** 

Aktiviert alle Schrittmetriken, einschließlich Metriken für den Schritterfolg und für die Schrittdauer.

 **Verwendung in UI-Canarys** 

Importieren Sie zuerst die Synthetics-Abhängigkeit und holen Sie die Konfiguration ab. Legen Sie dann die Konfiguration für jede Option fest, indem Sie die setConfig-Methode mit einer der folgenden Optionen aufrufen.

```
from aws_synthetics.common import synthetics_configuration

synthetics_configuration.set_config(
     {
        "screenshot_on_step_start": False,
        "screenshot_on_step_success": False,
        "screenshot_on_step_failure": True
     }
)

or
```

Oder

```
synthetics_configuration.with_screenshot_on_step_start(False).with_screenshot_on_step_success(False).with_screenshot_on_step_failure(True)
```

Um alle Screenshots zu deaktivieren, verwenden Sie die Funktion () wie in diesem Beispiel. disableStepScreenshots

```
synthetics_configuration.disable_step_screenshots()
```

Sie können Screenshots jederzeit im Code aktivieren oder deaktivieren. Wenn Sie beispielsweise Screenshots nur für einen Schritt deaktivieren möchten, deaktivieren Sie sie, bevor Sie diesen Schritt ausführen, und aktivieren Sie sie dann nach dem Schritt.

##### set\$1config (Optionen) für UI-Canarys
<a name="CloudWatch_Synthetics_Library_Python_UI"></a>

Ab `syn-python-selenium-1.1` kann ` set_config` für UI-Canarys folgende boolesche Parameter enthalten:
+ `continue_on_step_failure`(boolean) — Ob mit der Ausführung des Canary-Skripts fortgefahren werden soll, nachdem ein Schritt fehlgeschlagen ist (dies bezieht sich auf die **ExecuteStep-Funktion**). Wenn Schritte fehlschlagen, wird der Canary-Lauf weiterhin als fehlgeschlagen markiert. Der Standardwert ist `false`.

### SyntheticsLogger Klasse
<a name="CloudWatch_Synthetics_Library_SyntheticsLogger_Python"></a>

`synthetics_logger` schreibt Protokolle auf die Konsole und in eine lokale Protokolldatei auf derselben Protokollebene. Diese Protokolldatei wird nur dann an beide Speicherorte geschrieben, wenn die Protokollebene auf oder unter der gewünschten Protokollierungsebene der aufgerufenen Protokollfunktion liegt.

Den Protokollierungsanweisungen in der lokalen Protokolldatei werden je nach der Protokollebene der aufgerufenen Funktion „DEBUG“ „INFO“ usw. vorangestellt.

Die Verwendung von `synthetics_logger` ist nicht erforderlich, um eine Protokolldatei zu erstellen, die in Ihren Amazon-S3-Ergebnisspeicherort hochgeladen wird. Sie können stattdessen eine andere Protokolldatei im `/tmp`-Ordner erstellen. Alle Dateien, die unter dem `/tmp`-Ordner erstellt wurden, werden als Artefakte an den Ergebnisspeicherort im S3 Bucket hochgeladen.

Verwendung von `synthetics_logger`:

```
from aws_synthetics.common import synthetics_logger
```

****Nützliche Funktionsdefinitionen:

Protokollebene abrufen:

```
log_level = synthetics_logger.get_level()
```

Protokollebene festlegen:

```
synthetics_logger.set_level()
```

Protokollieren Sie eine Nachricht mit einer angegebenen Ebene. Die Ebene kann `DEBUG`, ` INFO`, `WARN` oder `ERROR` sein, wie in den folgenden Syntaxbeispielen:

```
synthetics_logger.debug(message, *args, **kwargs)
```

```
synthetics_logger.info(message, *args, **kwargs)
```

```
synthetics_logger.log(message, *args, **kwargs)
```

```
synthetics_logger.warning(message, *args, **kwargs)
```

```
synthetics_logger.error(message, *args, **kwargs)
```

Informationen zu Debug-Parametern finden Sie in der Python-Standarddokumentation unter [logging.debug](https://docs.python.org/3/library/logging.html#logging.debug)

In diesen Protokollierungsfunktionen ist das `message` die Zeichenfolge für das Nachrichtenformat. Die `args` sind die Argumente, die mit dem Zeichenfolgen-Formatierungsoperator in `msg` zusammengeführt werden.

Es gibt drei Schlüsselwortargumente in `kwargs`:
+ `exc_info` – Wird nicht als false ausgewertet, fügt der Protokollierungsmeldung Ausnahmeinformationen hinzu.
+ `stack_info` – Standardwert „false“. Bei „true“ werden der Protokollierungsnachricht Stackinformationen hinzugefügt, einschließlich des eigentlichen Protokollierungsaufrufs.
+ `extra` – Das dritte optionale Schlüsselwortargument, mit dem Sie ein Wörterbuch übergeben können, das verwendet wird, um das `__dict__` von `LogRecord`, das für das Protokollierungsereignis erstellt wurde, mit benutzerdefinierten Attributen aufzufüllen.

Beispiele:

Protokollieren Sie eine Nachricht mit der Ebene `DEBUG`:

```
synthetics_logger.debug('Starting step - login.')
```

Protokollieren Sie eine Nachricht mit der Ebene `INFO`. `logger.log` ist ein Synonym für `logger.info`:

```
synthetics_logger.info('Successfully completed step - login.')
```

oder

```
synthetics_logger.log('Successfully completed step - login.')
```

Protokollieren Sie eine Nachricht mit der Ebene `WARN`:

```
synthetics_logger.warning('Warning encountered trying to publish %s', 'CloudWatch Metric')
```

Protokollieren Sie eine Nachricht mit der Ebene `ERROR`:

```
synthetics_logger.error('Error encountered trying to publish %s', 'CloudWatch Metric')
```

Protokollieren einer Ausnahme:

```
synthetics_logger.exception(message, *args, **kwargs)
```

Protokolliert eine Nachricht mit der Ebene `ERROR`. Ausnahmeinformationen werden der Protokollierungsmeldung hinzugefügt. Sie sollten diese Funktion nur von einem Exception-Handler aufrufen.

Informationen zu Ausnahmeparametern finden Sie in der Python-Standarddokumentation unter [logging.exception](https://docs.python.org/3/library/logging.html#logging.exception)

Das Format für die Nachricht ist `message`. Die `args` sind die Argumente, die mit dem Zeichenfolgen-Formatierungsoperator in `msg` zusammengeführt werden.

Es gibt drei Schlüsselwortargumente in `kwargs`:
+ `exc_info` – Wird nicht als false ausgewertet, fügt der Protokollierungsmeldung Ausnahmeinformationen hinzu.
+ `stack_info` – Standardwert „false“. Bei „true“ werden der Protokollierungsnachricht Stackinformationen hinzugefügt, einschließlich des eigentlichen Protokollierungsaufrufs.
+ `extra` – Das dritte optionale Schlüsselwortargument, mit dem Sie ein Wörterbuch übergeben können, das verwendet wird, um das `__dict__` von `LogRecord`, das für das Protokollierungsereignis erstellt wurde, mit benutzerdefinierten Attributen aufzufüllen.

Beispiel:

```
synthetics_logger.exception('Error encountered trying to publish %s', 'CloudWatch Metric')
```

## Python- und Selenium-Bibliotheksklassen und Funktionen, die nur für UI-Canarys gelten
<a name="CloudWatch_Synthetics_Library_Python_UIcanaries"></a>

Die folgenden CloudWatch Synthetics Selenium-Bibliotheksfunktionen für Python sind nur für UI Canaries nützlich.

**Topics**
+ [SyntheticsBrowser Klasse](#CloudWatch_Synthetics_Library_Python_SyntheticsBrowser)
+ [SyntheticsWebDriver Klasse](#CloudWatch_Synthetics_Library_Python_SyntheticsWebDriver)

### SyntheticsBrowser Klasse
<a name="CloudWatch_Synthetics_Library_Python_SyntheticsBrowser"></a>

**Anmerkung**  
`SyntheticsBrowser` wird nur im Chrome-Browser unterstützt.

Wenn Sie eine Browserinstance durch Aufrufen von `synthetics_webdriver.Chrome()` erstellen, ist die zurückgegebene Browserinstance vom Typ `SyntheticsBrowser`. Die ` SyntheticsBrowser` Klasse erbt die WebDriver Klasse und bietet Zugriff auf alle Methoden, die von der [WebDriver](https://www.selenium.dev/documentation/webdriver/)bereitgestellt werden. Es steuert den Browser und ermöglicht es dem Canary-Skript ChromeDriver, den Browser zu steuern, sodass Selenium WebDriver mit Synthetics arbeiten kann.

**Anmerkung**  
Synthetics überschreibt die WebDriver [Quit-Methode,](https://www.selenium.dev/selenium/docs/api/py/selenium_webdriver_firefox/selenium.webdriver.firefox.webdriver.html) sodass keine Aktion ausgeführt wird. Sie müssen sich keine Gedanken darüber machen, den Browser zu beenden, da Synthetics das für Sie erledigt.

Zusätzlich zu den standardmäßigen Selenium-Methoden bietet es auch die folgenden Methoden. 

**Topics**
+ [set\$1viewport\$1size (Breite, Höhe)](#CloudWatch_Synthetics_Library_set_viewport_size)
+ [save\$1screenshot (Dateiname, Suffix)](#CloudWatch_Synthetics_Library_save_screenshot)

#### set\$1viewport\$1size (Breite, Höhe)
<a name="CloudWatch_Synthetics_Library_set_viewport_size"></a>

Legt das Ansichtsfenster des Browsers fest. Beispiel:

```
browser.set_viewport_size(1920, 1080)
```

#### save\$1screenshot (Dateiname, Suffix)
<a name="CloudWatch_Synthetics_Library_save_screenshot"></a>

Speichert Screenshots im `/tmp`-Verzeichnis. Die Screenshots werden von dort in den Ordner Canary-Artefakte im S3 Bucket hochgeladen.

*Dateiname* ist der Dateiname für den Screenshot, und *Suffix* ist eine optionale Zeichenfolge, die für die Benennung des Screenshots verwendet werden kann.

Beispiel:

```
browser.save_screenshot('loaded.png', 'page1')
```

### SyntheticsWebDriver Klasse
<a name="CloudWatch_Synthetics_Library_Python_SyntheticsWebDriver"></a>

Um diese Klasse zu verwenden, verwenden Sie Folgendes in Ihrem Skript:

```
from aws_synthetics.selenium import synthetics_webdriver
```

**Topics**
+ [add\$1execution\$1error (errorMessage, ex);](#CloudWatch_Synthetics_Library_Python_addExecutionError)
+ [add\$1user\$1agent (user\$1agent\$1str)](#CloudWatch_Synthetics_Library_add_user_agent)
+ [execute\$1step (step\$1name, function\$1to\$1execute)](#CloudWatch_Synthetics_Library_Python_execute_step)
+ [get\$1http\$1response (URL)](#CloudWatch_Synthetics_Library_Python_get_http_response)
+ [Chrome()](#CloudWatch_Synthetics_Library_Python_Chrome)

#### add\$1execution\$1error (errorMessage, ex);
<a name="CloudWatch_Synthetics_Library_Python_addExecutionError"></a>

`errorMessage` beschreibt den Fehler und `ex` ist die aufgetretene Ausnahme

Sie können Folgendes verwenden:`add_execution_error`, um Ausführungsfehler für Ihren Canary festzulegen. Es lässt den Canary fehlschlagen, ohne die Skriptausführung zu unterbrechen. Es wirkt sich auch nicht auf Ihre `successPercent`-Metriken aus.

Sie sollten Fehler nur dann als Ausführungsfehler verfolgen, wenn sie nicht wichtig sind, um den Erfolg oder Misserfolg Ihres Canary-Skripts anzuzeigen.

Ein Beispiel für die Verwendung von `add_execution_error` ist das folgende. Sie überwachen die Verfügbarkeit Ihres Endpunkts und machen Screenshots, nachdem die Seite geladen wurde. Da der Fehler beim Erstellen eines Screenshots die Verfügbarkeit des Endpunkts nicht bestimmt, können Sie beim Erstellen von Screenshots aufgetretene Fehler abfangen und sie als Ausführungsfehler hinzufügen. Ihre Verfügbarkeitsmetriken zeigen weiterhin an, dass der Endpunkt aktiv ist und ausgeführt wird, aber Ihr Canary-Status wird als fehlgeschlagen markiert. Der folgende Codeblock fängt einen solchen Fehler ab und fügt ihn als Ausführungsfehler hinzu.

```
try:
    browser.save_screenshot("loaded.png")  
except Exception as ex:
   self.add_execution_error("Unable to take screenshot", ex)
```

#### add\$1user\$1agent (user\$1agent\$1str)
<a name="CloudWatch_Synthetics_Library_add_user_agent"></a>

Hängt den Wert von `user_agent_str` an den Benutzer-Agent-Header des Browsers an. Sie müssen `user_agent_str` zuweisen, bevor Sie die Browserinstance erstellen.

Beispiel:

```
await synthetics_webdriver.add_user_agent('MyApp-1.0')
```

`add_user_agent` sollte innerhalb einer `async`-Funktion verwendet werden.

#### execute\$1step (step\$1name, function\$1to\$1execute)
<a name="CloudWatch_Synthetics_Library_Python_execute_step"></a>

Verarbeitet eine Funktion. Folgendes wird ebenfalls bewirkt:
+ Protokolliert, dass der Schritt gestartet wurde.
+ Erfasst einen Screenshot mit dem Namen `<stepName>-starting`.
+ Startet einen Timer.
+ Führt die bereitgestellte Funktion aus.
+ Wenn die Funktion normal zurückgegeben wird, gilt sie als „bestanden“. Wenn die Funktion scheitert, gilt sie als fehlgeschlagen.
+ Beendet den Timer.
+ Protokolliert, ob der Schritt bestanden oder fehlgeschlagen ist
+ Erfasst einen Screenshot mit dem Namen `<stepName>-succeeded` oder ` <stepName>-failed`.
+ Gibt die Metrik `stepName` `SuccessPercent` aus, wobei „100“ für erfolgreich bzw. „0“ für nicht erfolgreich steht.
+ Gibt die Metrik `stepName` `Duration` aus, mit einem Wert basierend auf der Start- und der Endzeit des Schrittes.
+ Gibt schließlich zurück, was die `functionToExecute` zurückgegeben hat, oder wiederholt einen Throw-Vorgang von `functionToExecute`.

Beispiel:

```
from selenium.webdriver.common.by import By

def custom_actions():
        #verify contains
        browser.find_element(By.XPATH, "//*[@id=\"id_1\"][contains(text(),'login')]")
        #click a button
        browser.find_element(By.XPATH, '//*[@id="submit"]/a').click()

    await synthetics_webdriver.execute_step("verify_click", custom_actions)
```

#### get\$1http\$1response (URL)
<a name="CloudWatch_Synthetics_Library_Python_get_http_response"></a>

Stellt eine HTTP-Anforderung an die angegebene URL und gibt den Antwortcode der HTTP-Anforderung zurück. Wenn während der HTTP-Anforderung eine Ausnahme aufgetreten ist, wird stattdessen eine Zeichenfolge mit dem Wert „error“ zurückgegeben.

Beispiel:

```
response_code = syn_webdriver.get_http_response(url)
if not response_code or response_code == "error" or response_code < 200 or response_code > 299:
    raise Exception("Failed to load page!")
```

#### Chrome()
<a name="CloudWatch_Synthetics_Library_Python_Chrome"></a>

Startet eine Instance des Chromium-Browsers und gibt die erstellte Instance des Browsers zurück.

Beispiel:

```
browser = synthetics_webdriver.Chrome()
browser.get("https://example.com/)
```

Verwenden Sie folgende Parameter, um einen Browser im Inkognito-Modus zu starten:

```
add_argument('——incognito')
```

Verwenden Sie folgende Parameter, um Proxy-Einstellungen hinzuzufügen:

```
add_argument('--proxy-server=%s' % PROXY)
```

Beispiel:

```
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("——incognito")
browser = syn_webdriver.Chrome(chrome_options=chrome_options)
```

# Planen von Canary-Durchläufen mit Cron
<a name="CloudWatch_Synthetics_Canaries_cron"></a>

Die Verwendung eines Cron-Ausdrucks gibt Ihnen Flexibilität, wenn Sie einen Canary planen. Cron-Ausdrücke enthalten fünf oder sechs Felder in der in der folgenden Tabelle aufgeführten Reihenfolge. Die Felder werden durch Leerzeichen voneinander getrennt. Die Syntax unterscheidet sich je nachdem, ob Sie die CloudWatch Konsole zum Erstellen des Canary verwenden, oder das AWS CLI Oder. AWS SDKs Wenn Sie die Konsole verwenden, geben Sie nur die ersten fünf Felder an. Wenn Sie das AWS CLI oder verwenden AWS SDKs, geben Sie alle sechs Felder an, und Sie müssen `*` für das `Year` Feld angeben.


|  **Feld**  |  **Zulässige Werte**  |  **Zulässige Sonderzeichen**  | 
| --- | --- | --- | 
|  Minuten  |  0-59  |  , - \$1 /  | 
|  Stunden  |  0-23  |  , - \$1 /  | 
|  D ay-of-month  |  1-31  |  , - \$1 ? / L W  | 
|  Monat  |  1-12 oder JAN-DEC  |  , - \$1 /  | 
|  D ay-of-week  |  1-7 oder SUN-SAT  |  , - \$1 ? / L \$1  | 
|  Jahr  |  \$1  |    | 

**Sonderzeichen**
+ Das **,** (Komma) enthält mehrere Werte im Ausdruck für ein Feld. Im Feld Monat würde JAN,FEB,MAR beispielsweise Januar, Februar und März enthalten.
+ Das Sonderzeichen **-** (Bindestrich) gibt Bereiche an. Im Feld "Tag" steht 1-15 für die Tage 1 bis 15 des angegebenen Monats.
+ Das Sonderzeichen **\$1** (Sternchen) steht für alle Werte im Feld. Im Feld für die Stundenangaben steht **\$1** für alle Stunden. Sie können **\$1** nicht sowohl in den Day-of-month Day-of-week Feldern als auch in demselben Ausdruck verwenden. Wenn Sie es in einem der Felder eingeben, müssen Sie im anderen Feld ein **?** verwenden.
+ Das Zeichen **/** (Schrägstrich) steht für schrittweise Steigerungen. Im Feld Minuten können Sie 1/10 eingeben, um jede zehnte Minute anzugeben, beginnend mit der ersten Minute der Stunde (z. B. die elfte, einundzwanzigste und einunddreißigste Minute usw.).
+ Das Zeichen **?** (Fragezeichen) steht für einen Wert. Wenn Sie **7** in das Day-of-month Feld eingeben und es Ihnen egal ist, welcher Wochentag der siebte ist, können Sie eingeben**?** im Day-of-week Feld.
+ Das Platzhalterzeichen **L** in den Feldern für Day-of-month oder Day-of-week gibt den letzten Tag des Monats oder der Woche an.
+ Der **W** Platzhalter in dem Day-of-month Feld gibt einen Wochentag an. **3W**Gibt in dem Day-of-month Feld den Wochentag an, der dem dritten Tag des Monats am nächsten liegt.
+ Der Platzhalter **\$1** in dem Day-of-week Feld gibt eine bestimmte Instanz des angegebenen Wochentags innerhalb eines Monats an. 3\$12 ist beispielsweise der zweite Dienstag im Monat. Die 3 bezieht sich auf Dienstag, da dies der dritte Tag jeder Woche ist, und die 2 bezieht sich auf den zweiten Tag dieses Typs innerhalb des Monats.

**Einschränkungen**
+ Es ist nicht möglich, die Felder Day-of-month und Day-of-week im gleichen Cron-Ausdruck anzugeben. Wenn Sie in einem der Felder einen Wert oder ein `*` (Sternchen) angeben, müssen Sie ein **?** (Fragezeichen) im anderen.
+ cron-Ausdrücke werden mit einer Ausführungsrate ab einer Minute unterstützt, kürzere Intervalle sind nicht möglich.
+ Sie können einen Canary nicht so einstellen, dass er länger als ein Jahr wartet, bevor er ausgeführt wird. Sie können also nur `*` im `Year`-Feld angeben.

**Beispiele**  
Wenn Sie einen Canary erstellen, können Sie auf die folgenden Beispiel-Cron-Zeichenfolgen verweisen. Die folgenden Beispiele sind die korrekte Syntax für die Verwendung von AWS CLI oder AWS SDKs , um einen Canary zu erstellen oder zu aktualisieren. Wenn Sie die CloudWatch Konsole verwenden, lassen Sie das Finale `*` in jedem Beispiel weg.


| Expression | Bedeutung | 
| --- | --- | 
|   `0 10 * * ? *`   |  Ausführung jeden Tag um 10:00 Uhr (UTC)  | 
|   `15 12 * * ? *`   |  Ausführung jeden Tag um 12:15 Uhr (UTC)  | 
|   `0 18 ? * MON-FRI *`   |  Ausführung jeden Montag bis Freitag um 18:00 Uhr (UTC)  | 
|   `0 8 1 * ? *`   |  Ausführung um 8:00 Uhr (UTC) am ersten Tag jedes Monats  | 
|   `0/10 * ? * MON-SAT *`   |  Ausführung alle 10 Minuten von Montag bis Samstag jeder Woche  | 
|   `0/5 8-17 ? * MON-FRI *`   |  Ausführung alle 5 Minuten von Montag bis Freitag zwischen 08:00 Uhr und 17:55 Uhr (UTC)   | 

# Konfigurieren Sie Ihren Canary so, dass er es automatisch erneut versucht
<a name="CloudWatch_Synthetics_Canaries_autoretry"></a>

Wenn Sie einen Canary erstellen oder aktualisieren, können Sie Ihre Canarys so konfigurieren, dass sie automatisch weitere Ausführungen versuchen, wenn der geplante Versuch fehlschlägt. So können Sie zwischen echten Ausfällen und temporären Störungen unterscheiden, was zu zuverlässigeren Ergebnissen führt. Dieses Feature ist ideal, um robustere Überwachungssysteme aufzubauen und gleichzeitig Fehlalarme und manuelle Eingriffe zu reduzieren.

**So erstellen Sie einen Canary zur automatischen Wiederholung**

1. Öffnen Sie die CloudWatch Konsole unter. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)

1. Wählen Sie im Navigationsbereich **Application Signals**, **Synthetics Canaries** aus.

1. Wählen Sie **Canary erstellen** aus.

1. Wählen Sie unter **Zusätzliche Konfiguration**, **Automatische Wiederholung** die gewünschte maximale Anzahl an Wiederholungen aus.

**So aktualisieren Sie die maximale Anzahl an Wiederholungsversuchen für einen Canary**

1. Öffnen Sie die CloudWatch Konsole unter [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Wählen Sie im Navigationsbereich **Application Signals** **Synthetics Canaries** aus.

1. Sie können einen der folgenden Schritte ausführen:
   + Wählen Sie den Canary aus und wählen Sie **Aktionen**, **Automatische Wiederholung aktivieren** und passen Sie die maximale Anzahl an Wiederholungen an.
   + Wählen Sie den Canary und dann **Aktionen**, **Bearbeiten** aus. Passen Sie auf der Seite **Details bearbeiten** unter **Zusätzliche Konfiguration** und **Automatische Wiederholung** die Konfiguration der Wiederholungsversuche an.

 **Einschränkungen** 

Hier sind die Einschränkungen für die Konfiguration der automatischen Wiederholung.
+ Wird nur in Runtime-Versionen `syn-nodejs-puppeteer-10.0 ` oder neueren ` syn-nodejs-playwright-2.0` oder neueren `syn-python-selenium-5.1` oder neueren oder neueren Versionen unterstützt. `syn-nodejs-3.0`
+ Canarys mit langer Laufzeit, deren Timeout nach zehn Minuten auf einen erneuten Versuch beschränkt ist. Alle anderen Canarys können bis zu zwei Wiederholungen unterstützen

# Verwenden von Abhängigkeiten mit CloudWatch Synthetics Canaries
<a name="CloudWatch_Synthetics_Canaries_dependencies"></a>

In diesem Abschnitt wird die Verwendung von `Dependencies` In CloudWatch Synthetics Canaries erklärt. Mit dem `Dependencies`-Feld können Sie Abhängigkeiten für Ihre Canarys angeben, sodass Sie zusätzliche Bibliotheken oder benutzerdefinierten Code hinzufügen können, den Ihre Canary-Skripte verwenden können.

## -Übersicht
<a name="overview"></a>

CloudWatch Synthetics Canaries unterstützt die Angabe von Lambda-Schichten als Abhängigkeiten. Mit diesem Feature können Sie Folgendes tun:
+ Gemeinsamen Code auf mehreren Canarys teilen
+ Abhängigkeiten getrennt von Ihrem Canary-Skriptcode verwalten
+ Die Größe Ihres Canary-Skripts reduzieren, indem Sie Abhängigkeiten auf eine Lambda-Schicht verschieben

## Unterstützt APIs
<a name="supported-apis"></a>

Das `Dependencies` Feld wird in den folgenden APIs Bereichen unterstützt:
+  [CreateCanary](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_CreateCanary.html) 
+  [UpdateCanary](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_UpdateCanary.html) 
+  [ StartCanaryDryRun](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_StartCanaryDryRun.html) 

## Syntax
<a name="syntax"></a>

Das `Dependencies`-Feld ist Teil der Codestruktur in der Anforderungssyntax:

```
"Code": { 
  "Handler": "string",
  "S3Bucket": "string",
  "S3Key": "string",
  "S3Version": "string",
  "ZipFile": blob,
  "Dependencies": [
    {
      "Type": "LambdaLayer",
      "Reference": "string"
    }
  ]
}
```

## Verwenden von Abhängigkeiten
<a name="usage"></a>

Im Folgenden finden Sie einige Beispiele und Anweisungen für die Verwendung des `Dependencies`-Felds in verschiedenen Szenarien.

### Erstellen eines Canary mit Abhängigkeiten
<a name="creating-canary"></a>

Wenn Sie einen Canary erstellen, können Sie eine Lambda-Schicht als Abhängigkeit angeben:

```
{
  "Name": "my-canary",
  "Code": {
    "Handler": "pageLoadBlueprint.handler",
    "S3Bucket": "my-bucket",
    "S3Key": "my-canary-script.zip",
    "Dependencies": [
      {
        "Type": "LambdaLayer",
        "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-custom-layer:1"
      }
    ]
  },
  "ArtifactS3Location": "s3://my-bucket/artifacts/",
  "ExecutionRoleArn": "arn:aws:iam::123456789012:role/my-canary-role",
  "Schedule": {
    "Expression": "rate(5 minutes)"
  },
  "RuntimeVersion": "syn-nodejs-puppeteer-3.9"
}
```

### Aktualisieren der Abhängigkeiten eines Canary
<a name="updating-canary"></a>

Du kannst die Abhängigkeiten eines Canary mithilfe der UpdateCanary API aktualisieren:

```
{
  "Name": "my-canary",
  "Code": {
    "Dependencies": [
      {
        "Type": "LambdaLayer",
        "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-updated-layer:2"
      }
    ]
  }
}
```

### Entfernen von Abhängigkeiten
<a name="removing-dependencies"></a>

Um Abhängigkeiten von einem Canary zu entfernen, geben Sie ein leeres Array für das Feld Abhängigkeiten an:

```
{
  "Name": "my-canary",
  "Code": {
    "Dependencies": []
  }
}
```

### Abhängigkeiten testen mit StartCanaryDryRun
<a name="testing-dependencies"></a>

Bevor du einen Canary mit neuen Abhängigkeiten aktualisierst, kannst du sie mit der StartCanaryDryRun API testen:

```
{
  "Name": "my-canary",
  "Code": {
    "Dependencies": [
      {
        "Type": "LambdaLayer",
        "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-test-layer:3"
      }
    ]
  }
}
```

## Einschränkungen und Überlegungen
<a name="limitations"></a>
+ Nur eine Lambda-Schicht kann als Abhängigkeit angegeben werden
+ Die Rolle, die verwendet wird, um einen Canary mit Abhängigkeiten zu erstellen, sollte zusätzlich zu den [erforderlichen Rollen und Berechtigungen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Roles.html) ` lambda:GetLayerVersion`-Zugriff auf die Abhängigkeitsschicht haben

## Erstellen von kompatiblen Lambda-Schichten
<a name="creating-compatible-layers"></a>

Informationen zum Erstellen und Bündeln von Schichten finden Sie unter [Verwalten von Lambda-Abhängigkeiten mit Schichten](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html). Informationen zur Bündelungsstruktur eines Canary-Checks auf der Grundlage der Canary-Bündelstruktur finden Sie unter [Schreiben eines Canary-Skripts](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_WritingCanary.html).

# Gruppen
<a name="CloudWatch_Synthetics_Groups"></a>

Sie können *Gruppen* erstellen, um Canarys miteinander zu verknüpfen, einschließlich regionsübergreifender Canarys. Die Verwendung von Gruppen kann Ihnen bei der Verwaltung und Automatisierung Ihrer Canarys helfen, und Sie können auch aggregierte Laufergebnisse und Statistiken für alle Canarys in einer Gruppe anzeigen. 

Gruppen sind globale Ressourcen. Wenn du eine Gruppe erstellst, wird sie in allen AWS Regionen repliziert, die Gruppen unterstützen, und du kannst ihr Kanarienvögel aus jeder dieser Regionen hinzufügen und sie dir in jeder dieser Regionen ansehen. Obwohl das Format des Gruppen-ARNs den Namen der Region widerspiegelt, in der sie erstellt wurde, ist eine Gruppe nicht auf eine Region beschränkt. Das bedeutet, dass Sie Canarys aus mehreren Regionen in dieselbe Gruppe einfügen und diese Gruppe dann verwenden können, um all diese Canarys in einer einzigen Ansicht anzuzeigen und zu verwalten.

Gruppen werden in allen Regionen außer den Regionen unterstützt, die standardmäßig deaktiviert sind. Weitere Informationen zu diesen Regionen finden Sie unter [Aktivieren einer Region](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-enable).

Jede Gruppe kann bis zu 10 Canarys enthalten. Sie können bis zu 20 Gruppen in Ihrem Konto haben. Jeder Canary kann Mitglied von bis zu 10 Gruppen sein.

**So erstellen Sie eine Gruppe**

1. Öffnen Sie die CloudWatch Konsole unter. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)

1. Wählen Sie im Navigationsbereich **Application Signals** **Synthetics-Canarys** aus.

   

1. Wählen Sie **Create Group**.

1. Geben Sie unter **Group Name** (Gruppenname) einen Namen für die Gruppe ein. 

1. Wählen Sie Canarys aus, die dieser Gruppe zugeordnet werden sollen. Um einen Canary auszuwählen, geben Sie seinen vollständigen Namen in **Exact canary name** (Eindeutiger Canary-Name) und wählen Sie **Search** (Suche). Aktivieren Sie dann das Kontrollkästchen neben dem Canary-Namen. Wenn es in verschiedenen Regionen mehrere Canarys mit demselben Namen gibt, achten Sie darauf, die gewünschten Canarys auszuwählen.

   Sie können diesen Schritt wiederholen, um bis zu 10 Canarys der Gruppe zuzuordnen.

1. (Optional) Fügen Sie unter **Tags** ein oder mehrere Schlüssel/Wert-Paare als Tags für diese Gruppe hinzu. Mithilfe von Tags können Sie Ihre AWS Ressourcen identifizieren und organisieren und Ihre AWS Kosten verfolgen. Weitere Informationen finden Sie unter [Markierung von Ressourcen von Amazon CloudWatch Events](CloudWatch-Tagging.md).

1. Wählen Sie **Create Group**.

# Lokales Testen eines Canary
<a name="CloudWatch_Synthetics_Debug_Locally"></a>

In diesem Abschnitt wird erklärt, wie Sie CloudWatch Synthetics Canaries direkt im Microsoft Visual Studio Code-Editor oder Code-Editor ändern, testen und debuggen können. JetBrains IDE Die lokale Debugging-Umgebung verwendet einen SAM-Container (Serverless Application Model), um eine Lambda-Funktion zu simulieren, die das Verhalten eines Synthetics-Canarys emuliert. 

**Anmerkung**  
Es ist nicht praktikabel, Canarys, die auf visueller Überwachung basieren, lokal zu debuggen. Bei der visuellen Überwachung werden während einer ersten Ausführung Basis-Screenshots aufgenommen und diese Screenshots dann mit den Screenshots aus nachfolgenden Ausführungen verglichen. In einer lokalen Entwicklungsumgebung werden Ausführungen nicht gespeichert oder nachverfolgt, und jede Iteration ist eine unabhängige, eigenständige Ausführung. Das Fehlen eines Canary-Ausführungsverlaufs macht es unpraktisch, Canarys zu debuggen, die auf visuelle Überwachung angewiesen sind.

 **Voraussetzungen** 

1. Wählen oder erstellen Sie einen Amazon-S3-Buckets zum Speichern von Artefakten aus lokalen Canary-Testläufen, wie HAR-Dateien und Screenshots. Dazu muss Ihnen IAM bereitgestellt werden. Wenn Sie die Einrichtung von Amazon-S3-Buckets überspringen, können Sie Ihren Canary trotzdem lokal testen. Sie erhalten jedoch eine Fehlermeldung über den fehlenden Bucket und Sie haben keinen Zugriff auf Canary-Artefakte.

   Wenn Sie einen Amazon-S3-Bucket verwenden, empfehlen wir Ihnen, den Bucket-Lebenszyklus so einzustellen, dass Objekte nach einigen Tagen gelöscht werden, um Kosten zu sparen. Weitere Informationen finden Sie unter [Verwalten Ihres Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html).

1. Richten Sie ein AWS Standardprofil für Ihr Konto ein. AWS Weitere Informationen finden Sie unter [Einstellungen für Konfigurations- und Anmeldeinformationsdateien](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).

1. Stellen Sie die AWS Standardregion der Debug-Umgebung auf Ihre bevorzugte Region ein, z. B. ` us-west-2`

1. Installieren Sie die AWS SAM CLI. Weitere Informationen finden Sie unter [Installation der AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html).

1. Installieren Sie Visual Studio Code Editor oder JetBrains IDE. Weitere Informationen finden Sie unter [https://code.visualstudio.com/](https://code.visualstudio.com/) oder [https://www.jetbrains.com/ides/](https://www.jetbrains.com/ides/)

1. Installieren SieDocker, um mit der AWS SAM CLI zu arbeiten. Stellen Sie sicher, dass Sie den Docker-Daemon starten. Weitere Informationen finden Sie unter [Installation  Docker zur Verwendung mit der AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-docker.html).

   Alternativ können Sie auch andere Container-Management-Software installieren, z. B. Rancher, sofern sie die Docker-Laufzeit verwendet.

1. Installieren Sie eine AWS Toolkit-Erweiterung für Ihren bevorzugten Editor. Weitere Informationen finden Sie unter [Installieren der AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html) oder [Installieren der AWS Toolkit for JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/setup-toolkit.html).

**Topics**
+ [Richten Sie die Test- und Debugging-Umgebung ein](#CloudWatch_Synthetics_Debug_Environment)
+ [Verwenden von Visual Studio Code IDE](#CloudWatch_Synthetics_Debug_VS)
+ [Verwenden von JetBrains IDE](#CloudWatch_Synthetics_Debug_JetBrains)
+ [Führen Sie einen Canary lokal mit der SAM-CLI aus](#CloudWatch_Synthetics_Run_Locally)
+ [Integrieren Sie Ihre lokale Testumgebung in ein vorhandenes Canary-Paket](#CloudWatch_Synthetics_Debug_Integrate)
+ [Ändern Sie die CloudWatch Synthetics-Laufzeit](#CloudWatch_Synthetics_Debug_DifferentRuntime)
+ [Häufige Fehler](#CloudWatch_Synthetics_Debug_Errors)

## Richten Sie die Test- und Debugging-Umgebung ein
<a name="CloudWatch_Synthetics_Debug_Environment"></a>

Klonen Sie zunächst das Github-Repository, das AWS Ihnen zur Verfügung steht, indem Sie den folgenden Befehl eingeben. Das Repository enthält Codebeispiele sowohl für Node.js-Canarys als auch für Python-Canarys. 

```
git clone https://github.com/aws-samples/synthetics-canary-local-debugging-sample.git
```

Führen Sie dann je nach Sprache Ihrer Canarys einen der folgenden Schritte aus.

**Für Node.js-Canarys**

1. Gehen Sie zum Node.js-Canary-Quellverzeichnis, indem Sie den folgenden Befehl eingeben.

   ```
   cd synthetics-canary-local-debugging-sample/nodejs-canary/src
   ```

1. Geben Sie den folgenden Befehl ein, um die Canary-Abhängigkeit zu installieren.

   ```
   npm install
   ```

**Für Python-Canarys**

1. Gehen Sie zum Python-Canary-Quellverzeichnis, indem Sie den folgenden Befehl eingeben.

   ```
   cd synthetics-canary-local-debugging-sample/python-canary/src
   ```

1. Geben Sie den folgenden Befehl ein, um Canary-Abhängigkeit zu installieren.

   ```
   pip3 install -r requirements.txt -t .
   ```

## Verwenden von Visual Studio Code IDE
<a name="CloudWatch_Synthetics_Debug_VS"></a>

Die Visual Studio-Startkonfigurationsdatei befindet sich unter ` .vscode/launch.json`. Sie enthält Konfigurationen, mit denen die Vorlagendatei durch Visual Studio-Code erkannt werden kann. Sie definiert eine Lambda-Nutzlast mit den erforderlichen Parametern, um den Canary erfolgreich aufzurufen. Das ist die Startkonfiguration für einen Node.js-Canary: 

```
{
            ...
            ...
            "lambda": {
                "payload": {
                    "json": {
                        // Canary name. Provide any name you like.
                        "canaryName": "LocalSyntheticsCanary", 
                        // Canary artifact location
                        "artifactS3Location": {
                            "s3Bucket": "cw-syn-results-123456789012-us-west-2",
                            "s3Key": "local-run-artifacts",
                        },
                        // Your canary handler name
                        "customerCanaryHandlerName": "heartbeat-canary.handler"
                    }
                },
                // Environment variables to pass to the canary code
                "environmentVariables": {}
            }
        }
    ]
}
```

Sie können optional auch die folgenden Felder in der Nutzlast-JSON angeben:
+ `s3EncryptionMode` Gültige Werte: `SSE_S3` \$1 `SSE_KMS`
+ `s3KmsKeyArn`Gültiger Wert: *KMS Key ARN*
+ `activeTracing` Gültige Werte: `true` \$1 `false`
+ `canaryRunId`Gültiger Wert: *UUID* Dieser Parameter ist erforderlich, wenn die aktive Ablaufverfolgung aktiviert ist.

Um den Canary in Visual Studio zu debuggen, fügen Sie dem Canary-Code Haltepunkte hinzu, an denen Sie die Ausführung unterbrechen möchten. Um einen Haltepunkt hinzuzufügen, wählen Sie den Editor-Rand und wechseln Sie im Editor in den **Ausführungs- und Debug-Modus**. Starten Sie den Canary, indem Sie auf die Wiedergabe-Schaltfläche klicken. Wenn der Canary ausgeführt wird, werden die Protokolle in der Debug-Konsole verfolgt, sodass Sie in Echtzeit Einblicke in das Verhalten des Canary erhalten. Wenn Sie Haltepunkte hinzugefügt haben, wird die Canary-Ausführung an jedem Haltepunkt angehalten, sodass Sie den Code Schritt für Schritt durchgehen und Variablenwerte, Instance-Methoden, Objektattribute und die Funktionsaufrufliste überprüfen können.

Für das lokale Ausführen und Debuggen von Canaries fallen keine Kosten an, mit Ausnahme der im Amazon S3 S3-Bucket gespeicherten Artefakte und der bei jedem lokalen Lauf generierten CloudWatch Metriken.

![\[Visual Studio Code interface showing JavaScript code for a heartbeat canary function.\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/images/DebugCanaryVS.png)


## Verwenden von JetBrains IDE
<a name="CloudWatch_Synthetics_Debug_JetBrains"></a>

Nachdem Sie die AWS Toolkit for JetBrains Erweiterung installiert haben, stellen Sie sicher, dass das Plug-In und der JavaScript Debugger Node.js für die Ausführung aktiviert sind, wenn Sie einen Node.js Canary debuggen. Gehen Sie dann folgendermaßen vor.

**Debuggen Sie einen Canary mit JetBrains IDE**

1. Wählen Sie im linken Navigationsbereich von JetBrains IDE **Lambda** und dann die lokale Konfigurationsvorlage aus.

1. Geben Sie einen Namen für die Ausführungskonfiguration ein, z. B. **LocalSyntheticsCanary**

1. Wählen Sie **Aus Vorlage**, wählen Sie den Dateibrowser im Vorlagenfeld und wählen Sie dann die Datei **template.yml** aus dem Projekt aus, entweder aus dem Verzeichnis **nodejs** oder dem **Python**-Verzeichnis.

1. Geben Sie im Abschnitt **Eingabe** die Nutzlast für den Canary ein, wie im folgenden Bildschirm gezeigt.

   ```
   {
    "canaryName": "LocalSyntheticsCanary",
    "artifactS3Location": {
        "s3Bucket": "cw-syn-results-123456789012-us-west-2",
        "s3Key": "local-run-artifacts"
    },
    "customerCanaryHandlerName": "heartbeat-canary.handler"
   }
   ```

   Sie können auch andere Umgebungsvariablen in der Nutzlast-JSON festlegen, wie unter [Verwenden von Visual Studio Code IDE](#CloudWatch_Synthetics_Debug_VS) aufgeführt.

![\[Run/Debug Configurations interface for AWS Lambda with LocalSyntheticsCanary settings.\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/images/DebugCanaryIntellij.png)


## Führen Sie einen Canary lokal mit der SAM-CLI aus
<a name="CloudWatch_Synthetics_Run_Locally"></a>

Gehen Sie wie folgt vor, um Ihren Canary lokal mit der SAM (Serverless Application Model)-CLI auszuführen. Stellen Sie sicher, dass Sie Ihren eigenen Amazon-S3-Bucket-Namen angeben für `s3Bucket` in `event.json`

**So verwenden Sie die SAM-CLI, um einen Node.js-Canary auszuführen**

1. Gehen Sie zum Quellverzeichnis, indem Sie den folgenden Befehl eingeben.

   ```
   cd synthetics-canary-local-debugging-sample/nodejs-canary
   ```

1. Geben Sie die folgenden Befehle ein.

   ```
   sam build
   sam local invoke -e ../event.json
   ```

**So verwenden Sie die SAM-CLI, um einen Python-Canary auszuführen**

1. Gehen Sie zum Quellverzeichnis, indem Sie den folgenden Befehl eingeben.

   ```
   cd synthetics-canary-local-debugging-sample/python-canary
   ```

1. Geben Sie die folgenden Befehle ein.

   ```
   sam build
   sam local invoke -e ../event.json
   ```

## Integrieren Sie Ihre lokale Testumgebung in ein vorhandenes Canary-Paket
<a name="CloudWatch_Synthetics_Debug_Integrate"></a>

Sie können das lokale Canary-Debugging in Ihr bestehendes Canary-Paket integrieren, indem Sie drei Dateien kopieren:
+ Kopieren Sie die `template.yml`-Datei in das Stammverzeichnis Ihres Canary-Pakets. Achten Sie darauf, den Pfad für `CodeUri` zu ändern, damit er auf das Verzeichnis verweist, in dem Ihr Canary-Code existiert.
+ Wenn Sie mit einem Node.js-Canary arbeiten, kopieren Sie die `cw-synthetics.js`-Datei in Ihr Canary-Quellverzeichnis. Wenn Sie mit einem Python-Canary arbeiten, kopieren Sie den ` cw-synthetics.py` in Ihr Canary-Quellverzeichnis.
+ Kopieren Sie die Startkonfigurationsdatei. `vscode/launch.json` in das Paketstammverzeichnis. Stellen Sie sicher, dass Sie sie im `.vscode`-Verzeichnis ablegen; erstellen Sie sie, falls sie noch nicht existiert.

## Ändern Sie die CloudWatch Synthetics-Laufzeit
<a name="CloudWatch_Synthetics_Debug_DifferentRuntime"></a>

Im Rahmen Ihres Debuggings möchten Sie vielleicht versuchen, einen Canary mit einer anderen CloudWatch Synthetics-Laufzeit anstelle der neuesten Runtime auszuführen. Suchen Sie dazu in einer der folgenden Tabellen nach der Laufzeit, die Sie verwenden möchten. Stellen Sie sicher, dass die Laufzeit für die richtige Region ausgewählt ist. Fügen Sie dann den ARN für diese Laufzeit an der entsprechenden Stelle in Ihrer ` template.yml`-Datei ein und führen Sie dann den Canary aus.

### Laufzeiten für Node.js und Puppeteer
<a name="Synthetics_NodeJS_Puppeteer_Runtime_ARNs"></a>

#### ARNs für -15,0 syn-nodejs-puppeteer
<a name="syn-nodejs-puppeteer-15.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-15.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Debug_Locally.html)

#### ARNs für syn-nodejs-puppeteer -14,0
<a name="syn-nodejs-puppeteer-14.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-14.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Debug_Locally.html)

#### ARNs für syn-nodejs-puppeteer -13,1
<a name="syn-nodejs-puppeteer-13.1"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-13.1` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Debug_Locally.html)

#### ARNs für syn-nodejs-puppeteer -13,0
<a name="syn-nodejs-puppeteer-13.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-13.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Debug_Locally.html)

#### ARNs für syn-nodejs-puppeteer -12,0
<a name="syn-nodejs-puppeteer-12.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-12.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Debug_Locally.html)

#### ARNs für syn-nodejs-puppeteer -11,0
<a name="syn-nodejs-puppeteer-11.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-11.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Debug_Locally.html)

#### ARNs für syn-nodejs-puppeteer -10,0
<a name="syn-nodejs-puppeteer-10.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-10.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics:58`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics:61`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics:59`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics:61`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics:59`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics:59`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics:34`   | 
|  Asien-Pazifik (Jakarta)  |   `arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics:41`   | 
|  Asien-Pazifik (Malaysia)  |   `arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics:15`   | 
|  Asien-Pazifik (Melbourne)  |   `arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics:32`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics:59`   | 
|  Asien-Pazifik (Neuseeland)  |   `arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics:18`   | 
|  Asien-Pazifik (Osaka)  |   `arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics:45`   | 
|  Asien-Pazifik (Seoul)  |   `arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics:62`   | 
|  Asien-Pazifik (Singapur)  |   `arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics:63`   | 
|  Asien-Pazifik (Sydney)  |   `arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics:58`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics:24`   | 
|  Asien-Pazifik (Thailand)  |   `arn:aws:lambda:ap-southeast-7:851725245975:layer:Synthetics:6`   | 
|  Asien-Pazifik (Tokio)  |   `arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics:59`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics:59`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics:90`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics:58`   | 
|  China (Ningxia);  |   `arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics:59`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics:59`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics:60`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics:58`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics:60`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics:59`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics:34`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics:59`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics:33`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics:31`   | 
|  Mexiko (Zentral)  |   `arn:aws:lambda:mx-central-1:654654265476:layer:Synthetics:7`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics:58`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics:34`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics:60`   | 
|  AWS GovCloud (US-Ost)  |   `arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics:54`   | 
|  AWS GovCloud (US-West)  |   `arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics:55`   | 

#### ARNs für syn-nodejs-puppeteer -9,1
<a name="syn-nodejs-puppeteer-9.1"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-9.1` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics:53`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics:56`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics:54`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics:56`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics:54`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics:54`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics:29`   | 
|  Asien-Pazifik (Jakarta)  |   `arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics:36`   | 
|  Asien-Pazifik (Malaysia)  |   `arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics:10`   | 
|  Asien-Pazifik (Melbourne)  |   `arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics:27`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics:54`   | 
|  Asien-Pazifik (Neuseeland)  |   `arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics:17`   | 
|  Asien-Pazifik (Osaka)  |   `arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics:40`   | 
|  Asien-Pazifik (Seoul)  |   `arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics:57`   | 
|  Asien-Pazifik (Singapur)  |   `arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics:58`   | 
|  Asien-Pazifik (Sydney)  |   `arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics:53`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics:25`   | 
|  Asien-Pazifik (Thailand)  |   `arn:aws:lambda:ap-southeast-7:851725245975:layer:Synthetics:1`   | 
|  Asien-Pazifik (Tokio)  |   `arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics:54`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics:54`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics:85`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics:54`   | 
|  China (Ningxia);  |   `arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics:55`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics:54`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics:55`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics:53`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics:55`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics:54`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics:29`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics:54`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics:28`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics:26`   | 
|  Mexiko (Zentral)  |   `arn:aws:lambda:mx-central-1:654654265476:layer:Synthetics:3`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics:53`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics:29`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics:55`   | 
|  AWS GovCloud (US-Ost)  |   `arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics:50`   | 
|  AWS GovCloud (US-West)  |   `arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics:51`   | 

#### ARNs für syn-nodejs-puppeteer -9,0
<a name="syn-nodejs-puppeteer-9.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-9.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics:51`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics:54`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics:52`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics:54`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics:52`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics:52`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics:27`   | 
|  Asien-Pazifik (Jakarta)  |   `arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics:34`   | 
|  Asien-Pazifik (Malaysia)  |   `arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics:8`   | 
|  Asien-Pazifik (Melbourne)  |   `arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics:25`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics:52`   | 
|  Asien-Pazifik (Neuseeland)  |   `arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics:16`   | 
|  Asien-Pazifik (Osaka)  |   `arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics:38`   | 
|  Asien-Pazifik (Seoul)  |   `arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics:55`   | 
|  Asien-Pazifik (Singapur)  |   `arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics:56`   | 
|  Asien-Pazifik (Sydney)  |   `arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics:51`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics:26`   | 
|  Asien-Pazifik (Tokio)  |   `arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics:52`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics:52`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics:83`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics:52`   | 
|  China (Ningxia);  |   `arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics:53`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics:52`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics:53`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics:51`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics:53`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics:52`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics:27`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics:52`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics:26`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics:24`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics:51`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics:27`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics:53`   | 
|  AWS GovCloud (US-Ost)  |   `arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics:48`   | 
|  AWS GovCloud (US-West)  |   `arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics:49`   | 

#### ARNs für syn-nodejs-puppeteer -8,0
<a name="syn-nodejs-puppeteer-8.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-8.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics:48`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics:50`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics:48`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics:51`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics:48`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics:49`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics:24`   | 
|  Asien-Pazifik (Jakarta)  |   `arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics:30`   | 
|  Asien-Pazifik (Melbourne)  |   `arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics:22`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics:48`   | 
|  Asien-Pazifik (Neuseeland)  |   `arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics:15`   | 
|  Asien-Pazifik (Osaka)  |   `arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics:34`   | 
|  Asien-Pazifik (Seoul)  |   `arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics:51`   | 
|  Asien-Pazifik (Singapur)  |   `arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics:53`   | 
|  Asien-Pazifik (Sydney)  |   `arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics:48`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics:23`   | 
|  Asien-Pazifik (Tokio)  |   `arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics:48`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics:48`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics:80`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics:49`   | 
|  China (Ningxia);  |   `arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics:50`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics:48`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics:50`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics:48`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics:49`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics:48`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics:24`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics:48`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics:23`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics:21`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics:48`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics:23`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics:49`   | 
|  AWS GovCloud (US-Ost)  |   `arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics:45`   | 
|  AWS GovCloud (US-West)  |   `arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics:46`   | 

#### ARNs für syn-nodejs-puppeteer -7,0
<a name="syn-nodejs-puppeteer-7.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-7.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics:44`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics:46`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics:44`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics:47`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics:44`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics:45`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics:20`   | 
|  Asien-Pazifik (Jakarta)  |   `arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics:26`   | 
|  Asien-Pazifik (Malaysia)  |   `arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics:7`   | 
|  Asien-Pazifik (Melbourne)  |   `arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics:18`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics:44`   | 
|  Asien-Pazifik (Osaka)  |   `arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics:30`   | 
|  Asien-Pazifik (Seoul)  |   `arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics:46`   | 
|  Asien-Pazifik (Singapur)  |   `arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics:49`   | 
|  Asien-Pazifik (Sydney)  |   `arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics:44`   | 
|  Asien-Pazifik (Thailand)  |   `arn:aws:lambda:ap-southeast-7:851725245975:layer:Synthetics:3`   | 
|  Asien-Pazifik (Tokio)  |   `arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics:44`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics:44`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics:76`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics:45`   | 
|  China (Ningxia);  |   `arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics:46`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics:44`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics:46`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics:44`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics:45`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics:44`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics:20`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics:44`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics:19`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics:17`   | 
|  Mexiko (Zentral)  |   `arn:aws:lambda:mx-central-1:654654265476:layer:Synthetics:4`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics:44`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics:19`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics:45`   | 
|  AWS GovCloud (US-Ost)  |   `arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics:41`   | 
|  AWS GovCloud (US-West)  |   `arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics:42`   | 

#### ARNs für syn-nodejs-puppeteer -6,2
<a name="syn-nodejs-puppeteer-6.2"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-6.2` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics:41`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics:43`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics:41`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics:44`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics:41`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics:42`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics:17`   | 
|  Asien-Pazifik (Jakarta)  |   `arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics:23`   | 
|  Asien-Pazifik (Melbourne)  |   `arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics:15`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics:41`   | 
|  Asien-Pazifik (Osaka)  |   `arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics:27`   | 
|  Asien-Pazifik (Seoul)  |   `arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics:42`   | 
|  Asien-Pazifik (Singapur)  |   `arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics:46`   | 
|  Asien-Pazifik (Sydney)  |   `arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics:41`   | 
|  Asien-Pazifik (Tokio)  |   `arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics:41`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics:41`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics:73`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics:42`   | 
|  China (Ningxia);  |   `arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics:43`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics:41`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics:43`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics:41`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics:42`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics:41`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics:17`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics:41`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics:16`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics:14`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics:41`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics:16`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics:42`   | 
|  AWS GovCloud (US-Ost)  |   `arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics:39`   | 
|  AWS GovCloud (US-West)  |   `arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics:39`   | 

#### ARNs für syn-nodejs-puppeteer -5,2
<a name="syn-nodejs-puppeteer-5.2"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-puppeteer-5.2` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics:42`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics:44`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics:42`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics:45`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics:42`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics:43`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics:18`   | 
|  Asien-Pazifik (Jakarta)  |   `arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics:24`   | 
|  Asien-Pazifik (Melbourne)  |   `arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics:16`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics:42`   | 
|  Asien-Pazifik (Osaka)  |   `arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics:28`   | 
|  Asien-Pazifik (Seoul)  |   `arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics:44`   | 
|  Asien-Pazifik (Singapur)  |   `arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics:47`   | 
|  Asien-Pazifik (Sydney)  |   `arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics:42`   | 
|  Asien-Pazifik (Tokio)  |   `arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics:42`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics:42`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics:74`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics:43`   | 
|  China (Ningxia);  |   `arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics:44`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics:42`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics:44`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics:42`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics:43`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics:42`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics:18`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics:42`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics:17`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics:15`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics:42`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics:17`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics:43`   | 
|  AWS GovCloud (US-Ost)  |   `arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics:40`   | 
|  AWS GovCloud (US-West)  |   `arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics:40`   | 

### Node.js- und Playwright-Laufzeiten
<a name="Synthetics_Playwright_Runtime_ARNs"></a>

#### ARNs für syn-nodejs-playwright -6,0
<a name="syn-nodejs-playwright-6.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-playwright-6.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Debug_Locally.html)

#### ARNs für syn-nodejs-playwright -5.1
<a name="syn-nodejs-playwright-5.1"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-playwright-5.1` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Debug_Locally.html)

#### ARNs für syn-nodejs-playwright -5,0
<a name="syn-nodejs-playwright-5.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-playwright-5.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Debug_Locally.html)

#### ARNs für syn-nodejs-playwright -4,0
<a name="syn-nodejs-playwright-4.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-playwright-4.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Debug_Locally.html)

#### ARNs für syn-nodejs-playwright -3,0
<a name="syn-nodejs-playwright-3.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-playwright-3.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Debug_Locally.html)

#### ARNs für syn-nodejs-playwright -2,0
<a name="syn-nodejs-playwright-2.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-playwright-2.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   ` arn:aws:lambda:us-east-1:378653112637:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  USA Ost (Ohio)  |   ` arn:aws:lambda:us-east-2:772927465453:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  USA West (Nordkalifornien)  |   ` arn:aws:lambda:us-west-1:332033056316:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  USA West (Oregon)  |   ` arn:aws:lambda:us-west-2:760325925879:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Africa (Cape Town)  |   ` arn:aws:lambda:af-south-1:461844272066:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Asien-Pazifik (Hongkong)  |   ` arn:aws:lambda:ap-east-1:129828061636:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Asien-Pazifik (Hyderabad)  |   ` arn:aws:lambda:ap-south-2:280298676434:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Asien-Pazifik (Mumbai)  |   ` arn:aws:lambda:ap-south-1:724929286329:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:AWS-CW-SyntheticsNodeJsPlaywright:7`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Asien-Pazifik (Taipeh)  |   ` arn:aws:lambda:ap-east-2:471112897378:layer:AWS-CW-SyntheticsNodeJsPlaywright:9`   | 
|  Asien-Pazifik (Thailand)  |   ` arn:aws:lambda:ap-southeast-7:851725245975:layer:AWS-CW-SyntheticsNodeJsPlaywright:3`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Canada (Central)  |   ` arn:aws:lambda:ca-central-1:236629016841:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Kanada West (Calgary)  |   ` arn:aws:lambda:ca-west-1:944448206667:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  China (Peking)  |   ` arn:aws-cn:lambda:cn-north-1:422629156088:layer:AWS-CW-SyntheticsNodeJsPlaywright:3`   | 
|  China (Ningxia);  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:AWS-CW-SyntheticsNodeJsPlaywright:3`   | 
|  Europe (Frankfurt)  |   ` arn:aws:lambda:eu-central-1:122305336817:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Europa (Irland)  |   ` arn:aws:lambda:eu-west-1:563204233543:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Europa (London)  |   ` arn:aws:lambda:eu-west-2:565831452869:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Europa (Milan)  |   ` arn:aws:lambda:eu-south-1:525618516618:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Europa (Paris)  |   ` arn:aws:lambda:eu-west-3:469466506258:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Europa (Spain)  |   ` arn:aws:lambda:eu-south-2:029793053121:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Europa (Stockholm)  |   ` arn:aws:lambda:eu-north-1:162938142733:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Europa (Zürich)  |   ` arn:aws:lambda:eu-central-2:224218992030:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Israel (Tel Aviv)  |   ` arn:aws:lambda:il-central-1:313249807427:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Mexiko (Zentral)  |   ` arn:aws:lambda:mx-central-1:654654265476:layer:AWS-CW-SyntheticsNodeJsPlaywright:5`   | 
|  Middle East (Bahrain)  |   ` arn:aws:lambda:me-south-1:823195537320:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Naher Osten (VAE)  |   ` arn:aws:lambda:me-central-1:239544149032:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  Südamerika (São Paulo)  |   ` arn:aws:lambda:sa-east-1:783765544751:layer:AWS-CW-SyntheticsNodeJsPlaywright:4`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:AWS-CW-SyntheticsNodeJsPlaywright:3`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:AWS-CW-SyntheticsNodeJsPlaywright:3`   | 

#### ARNs für syn-nodejs-playwright -1,0
<a name="syn-nodejs-playwright-1.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-nodejs-playwright-1.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   ` arn:aws:lambda:us-east-1:378653112637:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  USA Ost (Ohio)  |   ` arn:aws:lambda:us-east-2:772927465453:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  USA West (Nordkalifornien)  |   ` arn:aws:lambda:us-west-1:332033056316:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  USA West (Oregon)  |   ` arn:aws:lambda:us-west-2:760325925879:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Africa (Cape Town)  |   ` arn:aws:lambda:af-south-1:461844272066:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Asien-Pazifik (Hongkong)  |   ` arn:aws:lambda:ap-east-1:129828061636:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Asien-Pazifik (Hyderabad)  |   ` arn:aws:lambda:ap-south-2:280298676434:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Asien-Pazifik (Mumbai)  |   ` arn:aws:lambda:ap-south-1:724929286329:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:AWS-CW-SyntheticsNodeJsPlaywright:8`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Asien-Pazifik (Taipeh)  |   ` arn:aws:lambda:ap-east-2:471112897378:layer:AWS-CW-SyntheticsNodeJsPlaywright:10`   | 
|  Asien-Pazifik (Thailand)  |   ` arn:aws:lambda:ap-southeast-7:851725245975:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Canada (Central)  |   ` arn:aws:lambda:ca-central-1:236629016841:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Kanada West (Calgary)  |   ` arn:aws:lambda:ca-west-1:944448206667:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  China (Peking)  |   ` arn:aws-cn:lambda:cn-north-1:422629156088:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  China (Ningxia);  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Europe (Frankfurt)  |   ` arn:aws:lambda:eu-central-1:122305336817:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Europa (Irland)  |   ` arn:aws:lambda:eu-west-1:563204233543:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Europa (London)  |   ` arn:aws:lambda:eu-west-2:565831452869:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Europa (Milan)  |   ` arn:aws:lambda:eu-south-1:525618516618:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Europa (Paris)  |   ` arn:aws:lambda:eu-west-3:469466506258:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Europa (Spain)  |   ` arn:aws:lambda:eu-south-2:029793053121:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Europa (Stockholm)  |   ` arn:aws:lambda:eu-north-1:162938142733:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Europa (Zürich)  |   ` arn:aws:lambda:eu-central-2:224218992030:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Israel (Tel Aviv)  |   ` arn:aws:lambda:il-central-1:313249807427:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Mexiko (Zentral)  |   ` arn:aws:lambda:mx-central-1:654654265476:layer:AWS-CW-SyntheticsNodeJsPlaywright:3`   | 
|  Middle East (Bahrain)  |   ` arn:aws:lambda:me-south-1:823195537320:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Naher Osten (VAE)  |   ` arn:aws:lambda:me-central-1:239544149032:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  Südamerika (São Paulo)  |   ` arn:aws:lambda:sa-east-1:783765544751:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:AWS-CW-SyntheticsNodeJsPlaywright:1`   | 

### Node.js-Laufzeiten
<a name="Synthetics_NodeJS_Runtime_ARNs"></a>

#### ARNs für syn-nodejs-4.1
<a name="syn-nodejs-4.1"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen `syn-nodejs-4.1` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Africa (Cape Town)  |   ` arn:aws:lambda:af-south-1:461844272066:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Hyderabad)  |   ` arn:aws:lambda:ap-south-2:280298676434:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Mumbai)  |   ` arn:aws:lambda:ap-south-1:724929286329:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Thailand)  |   ` arn:aws:lambda:ap-southeast-7:851725245975:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Canada (Central)  |   ` arn:aws:lambda:ca-central-1:236629016841:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  China (Peking)  |   ` arn:aws-cn:lambda:cn-north-1:422629156088:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  China (Ningxia)  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Europe (Frankfurt)  |   ` arn:aws:lambda:eu-central-1:122305336817:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Europa (Milan)  |   ` arn:aws:lambda:eu-south-1:525618516618:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Europa (Spain)  |   ` arn:aws:lambda:eu-south-2:029793053121:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Europa (Stockholm)  |   ` arn:aws:lambda:eu-north-1:162938142733:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Europa (Zürich)  |   ` arn:aws:lambda:eu-central-2:224218992030:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Israel (Tel Aviv)  |   ` arn:aws:lambda:il-central-1:313249807427:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Mexiko (Zentral)  |   ` arn:aws:lambda:mx-central-1:654654265476:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:AWS-CW-SyntheticsNodeJs:12`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:AWS-CW-SyntheticsNodeJs:12`   | 

#### ARNs für syn-nodejs-4.0
<a name="syn-nodejs-4.0"></a>

In der folgenden Tabelle ist die für die Version `syn-nodejs-4.0` der CloudWatch Synthetics-Laufzeit ARNs zu verwendende Version in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Africa (Cape Town)  |   ` arn:aws:lambda:af-south-1:461844272066:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Hyderabad)  |   ` arn:aws:lambda:ap-south-2:280298676434:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Mumbai)  |   ` arn:aws:lambda:ap-south-1:724929286329:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Thailand)  |   ` arn:aws:lambda:ap-southeast-7:851725245975:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Canada (Central)  |   ` arn:aws:lambda:ca-central-1:236629016841:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  China (Peking)  |   ` arn:aws-cn:lambda:cn-north-1:422629156088:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  China (Ningxia)  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Europe (Frankfurt)  |   ` arn:aws:lambda:eu-central-1:122305336817:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Europa (Milan)  |   ` arn:aws:lambda:eu-south-1:525618516618:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Europa (Spain)  |   ` arn:aws:lambda:eu-south-2:029793053121:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Europa (Stockholm)  |   ` arn:aws:lambda:eu-north-1:162938142733:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Europa (Zürich)  |   ` arn:aws:lambda:eu-central-2:224218992030:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Israel (Tel Aviv)  |   ` arn:aws:lambda:il-central-1:313249807427:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Mexiko (Zentral)  |   ` arn:aws:lambda:mx-central-1:654654265476:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:AWS-CW-SyntheticsNodeJs:11`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:AWS-CW-SyntheticsNodeJs:11`   | 

#### ARNs für syn-nodejs-3.1
<a name="syn-nodejs-3.1"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen `syn-nodejs-3.1` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Thailand)  |   ` arn:aws:lambda:ap-southeast-7:851725245975:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Canada (Central)  |   ` arn:aws:lambda:ca-central-1:236629016841:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  China (Peking)  |   ` arn:aws-cn:lambda:cn-north-1:422629156088:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  China (Ningxia)  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Europe (Frankfurt)  |   ` arn:aws:lambda:eu-central-1:122305336817:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Europa (Zürich)  |   ` arn:aws:lambda:eu-central-2:224218992030:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Israel (Tel Aviv)  |   ` arn:aws:lambda:il-central-1:313249807427:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Mexiko (Zentral)  |   ` arn:aws:lambda:mx-central-1:654654265476:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Naher Osten (VAE)  |   ` arn:aws:lambda:me-central-1:239544149032:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:AWS-CW-SyntheticsNodeJs:9`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:AWS-CW-SyntheticsNodeJs:9`   | 

#### ARNs für syn-nodejs-3.0
<a name="syn-nodejs-3.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen `syn-nodejs-3.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Thailand)  |   ` arn:aws:lambda:ap-southeast-7:851725245975:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Canada (Central)  |   ` arn:aws:lambda:ca-central-1:236629016841:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  China (Peking)  |   ` arn:aws-cn:lambda:cn-north-1:422629156088:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  China (Ningxia)  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Europe (Frankfurt)  |   ` arn:aws:lambda:eu-central-1:122305336817:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Europa (Zürich)  |   ` arn:aws:lambda:eu-central-2:224218992030:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Israel (Tel Aviv)  |   ` arn:aws:lambda:il-central-1:313249807427:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Mexiko (Zentral)  |   ` arn:aws:lambda:mx-central-1:654654265476:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Naher Osten (VAE)  |   ` arn:aws:lambda:me-central-1:239544149032:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:AWS-CW-SyntheticsNodeJs:1`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:AWS-CW-SyntheticsNodeJs:1`   | 

### Python- und Selenium-Laufzeiten
<a name="Synthetics_Python_Runtime_ARNs"></a>

#### ARNs für syn-python-selenium -10,0
<a name="syn-python-selenium-10.0"></a>

In der folgenden Tabelle ist die für die Version ` syn-python-selenium-10.0` der CloudWatch Synthetics-Laufzeit ARNs zu verwendende Version in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics_Selenium:62`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics_Selenium:65`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics_Selenium:63`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics_Selenium:64`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics_Selenium:63`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics_Selenium:62`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics_Selenium:50`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics_Selenium:57`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics_Selenium:32`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics_Selenium:48`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics_Selenium:63`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics_Selenium:38`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics_Selenium:61`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics_Selenium:66`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics_Selenium:67`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics_Selenium:62`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics_Selenium:25`   | 
|  Asien-Pazifik (Thailand)  |   ` arn:aws:lambda:ap-southeast-7:851725245975:layer:Synthetics_Selenium:23`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics_Selenium:63`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics_Selenium:63`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics_Selenium:106`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics_Selenium:61`   | 
|  China (Ningxia)  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics_Selenium:61`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics_Selenium:63`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics_Selenium:64`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics_Selenium:62`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics_Selenium:64`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics_Selenium:63`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics_Selenium:50`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics_Selenium:63`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics_Selenium:49`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics_Selenium:47`   | 
|  Mexiko (Zentral)  |   `arn:aws:lambda:mx-central-1:654654265476:layer:Synthetics_Selenium:24`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics_Selenium:64`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics_Selenium:59`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics_Selenium:60`   | 

#### ARNs für syn-python-selenium -9,0
<a name="syn-python-selenium-9.0"></a>

In der folgenden Tabelle ist die für die Version ` syn-python-selenium-9.0` der CloudWatch Synthetics-Laufzeit ARNs zu verwendende Version in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics_Selenium:61`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics_Selenium:64`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics_Selenium:62`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics_Selenium:63`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics_Selenium:62`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics_Selenium:61`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics_Selenium:49`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics_Selenium:56`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics_Selenium:31`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics_Selenium:47`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics_Selenium:62`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics_Selenium:37`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics_Selenium:60`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics_Selenium:65`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics_Selenium:66`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics_Selenium:61`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics_Selenium:24`   | 
|  Asien-Pazifik (Thailand)  |   ` arn:aws:lambda:ap-southeast-7:851725245975:layer:Synthetics_Selenium:22`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics_Selenium:62`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics_Selenium:62`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics_Selenium:105`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics_Selenium:60`   | 
|  China (Ningxia)  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics_Selenium:60`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics_Selenium:62`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics_Selenium:63`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics_Selenium:61`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics_Selenium:63`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics_Selenium:62`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics_Selenium:49`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics_Selenium:62`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics_Selenium:48`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics_Selenium:46`   | 
|  Mexiko (Zentral)  |   `arn:aws:lambda:mx-central-1:654654265476:layer:Synthetics_Selenium:23`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics_Selenium:61`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics_Selenium:49`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics_Selenium:63`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics_Selenium:58`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics_Selenium:59`   | 

#### ARNs für syn-python-selenium -8,0
<a name="syn-python-selenium-8.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-python-selenium-8.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics_Selenium:57`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics_Selenium:60`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics_Selenium:58`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics_Selenium:59`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics_Selenium:58`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics_Selenium:57`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics_Selenium:45`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics_Selenium:52`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics_Selenium:27`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics_Selenium:43`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics_Selenium:58`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics_Selenium:33`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics_Selenium:56`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics_Selenium:61`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics_Selenium:62`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics_Selenium:57`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics_Selenium:20`   | 
|  Asien-Pazifik (Thailand)  |   ` arn:aws:lambda:ap-southeast-7:851725245975:layer:Synthetics_Selenium:18`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics_Selenium:58`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics_Selenium:58`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics_Selenium:101`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics_Selenium:56`   | 
|  China (Ningxia)  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics_Selenium:56`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics_Selenium:58`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics_Selenium:59`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics_Selenium:57`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics_Selenium:59`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics_Selenium:58`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics_Selenium:45`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics_Selenium:58`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics_Selenium:44`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics_Selenium:42`   | 
|  Mexiko (Zentral)  |   `arn:aws:lambda:mx-central-1:654654265476:layer:Synthetics_Selenium:19`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics_Selenium:57`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics_Selenium:45`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics_Selenium:59`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics_Selenium:54`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics_Selenium:55`   | 

#### ARNs für syn-python-selenium -7,0
<a name="syn-python-selenium-7.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-python-selenium-7.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics_Selenium:49`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics_Selenium:52`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics_Selenium:50`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics_Selenium:51`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics_Selenium:50`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics_Selenium:49`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics_Selenium:37`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics_Selenium:44`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics_Selenium:19`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics_Selenium:35`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics_Selenium:50`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics_Selenium:25`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics_Selenium:48`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics_Selenium:53`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics_Selenium:54`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics_Selenium:49`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics_Selenium:12`   | 
|  Asien-Pazifik (Thailand)  |   ` arn:aws:lambda:ap-southeast-7:851725245975:layer:Synthetics_Selenium:10`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics_Selenium:50`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics_Selenium:50`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics_Selenium:93`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics_Selenium:48`   | 
|  China (Ningxia)  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics_Selenium:48`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics_Selenium:50`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics_Selenium:51`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics_Selenium:49`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics_Selenium:51`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics_Selenium:50`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics_Selenium:37`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics_Selenium:50`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics_Selenium:36`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics_Selenium:34`   | 
|  Mexiko (Zentral)  |   `arn:aws:lambda:mx-central-1:654654265476:layer:Synthetics_Selenium:11`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics_Selenium:49`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics_Selenium:37`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics_Selenium:51`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics_Selenium:46`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics_Selenium:47`   | 

#### ARNs für syn-python-selenium -6,0
<a name="syn-python-selenium-6.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-python-selenium-6.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics_Selenium:47`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics_Selenium:50`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics_Selenium:48`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics_Selenium:49`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics_Selenium:48`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics_Selenium:47`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics_Selenium:35`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics_Selenium:42`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics_Selenium:17`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics_Selenium:33`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics_Selenium:48`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics_Selenium:25`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics_Selenium:46`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics_Selenium:51`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics_Selenium:52`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics_Selenium:47`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics_Selenium:10`   | 
|  Asien-Pazifik (Thailand)  |   `arn:aws:lambda:ap-southeast-7:851725245975:layer:Synthetics_Selenium:8`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics_Selenium:48`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics_Selenium:48`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics_Selenium:91`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics_Selenium:46`   | 
|  China (Ningxia)  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics_Selenium:46`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics_Selenium:48`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics_Selenium:49`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics_Selenium:47`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics_Selenium:49`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics_Selenium:48`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics_Selenium:35`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics_Selenium:48`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics_Selenium:34`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics_Selenium:32`   | 
|  Mexiko (Zentral)  |   `arn:aws:lambda:mx-central-1:654654265476:layer:Synthetics_Selenium:9`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics_Selenium:47`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics_Selenium:35`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics_Selenium:49`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics_Selenium:44`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics_Selenium:45`   | 

#### ARNs für syn-python-selenium -5.1
<a name="syn-python-selenium-5.1"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-python-selenium-5.1` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics_Selenium:45`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics_Selenium:48`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics_Selenium:46`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics_Selenium:47`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics_Selenium:46`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics_Selenium:45`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics_Selenium:33`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics_Selenium:40`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics_Selenium:15`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics_Selenium:31`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics_Selenium:46`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics_Selenium:24`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics_Selenium:44`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics_Selenium:49`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics_Selenium:50`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics_Selenium:45`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics_Selenium:8`   | 
|  Asien-Pazifik (Thailand)  |   `arn:aws:lambda:ap-southeast-7:851725245975:layer:Synthetics_Selenium:6`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics_Selenium:46`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics_Selenium:44`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics_Selenium:89`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics_Selenium:44`   | 
|  China (Ningxia);  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics_Selenium:44`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics_Selenium:46`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics_Selenium:47`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics_Selenium:45`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics_Selenium:47`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics_Selenium:46`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics_Selenium:33`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics_Selenium:46`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics_Selenium:32`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics_Selenium:30`   | 
|  Mexiko (Zentral)  |   `arn:aws:lambda:mx-central-1:654654265476:layer:Synthetics_Selenium:7`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics_Selenium:45`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics_Selenium:33`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics_Selenium:47`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics_Selenium:42`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics_Selenium:43`   | 

#### ARNs für syn-python-selenium -5,0
<a name="syn-python-selenium-5.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-python-selenium-5.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics_Selenium:43`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics_Selenium:46`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics_Selenium:44`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics_Selenium:45`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics_Selenium:44`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics_Selenium:43`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics_Selenium:31`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics_Selenium:38`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics_Selenium:13`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics_Selenium:29`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics_Selenium:44`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics_Selenium:23`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics_Selenium:42`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics_Selenium:47`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics_Selenium:48`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics_Selenium:43`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics_Selenium:3`   | 
|  Asien-Pazifik (Thailand)  |   `arn:aws:lambda:ap-southeast-7:851725245975:layer:Synthetics_Selenium:4`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics_Selenium:44`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics_Selenium:44`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics_Selenium:87`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics_Selenium:43`   | 
|  China (Ningxia);  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics_Selenium:43`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics_Selenium:44`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics_Selenium:45`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics_Selenium:43`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics_Selenium:45`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics_Selenium:44`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics_Selenium:31`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics_Selenium:44`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics_Selenium:30`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics_Selenium:28`   | 
|  Mexiko (Zentral)  |   `arn:aws:lambda:mx-central-1:654654265476:layer:Synthetics_Selenium:5`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics_Selenium:43`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics_Selenium:31`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics_Selenium:45`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics_Selenium:41`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics_Selenium:42`   | 

#### ARNs für syn-python-selenium -4.1
<a name="syn-python-selenium-4.1"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-python-selenium-4.1` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics_Selenium:40`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics_Selenium:43`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics_Selenium:41`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics_Selenium:42`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics_Selenium:41`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics_Selenium:40`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics_Selenium:28`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics_Selenium:35`   | 
|  Asien-Pazifik (Malaysia)  |   ` arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics_Selenium:10`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics_Selenium:26`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics_Selenium:41`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics_Selenium:22`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics_Selenium:39`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics_Selenium:44`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics_Selenium:45`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics_Selenium:40`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics_Selenium:4`   | 
|  Asien-Pazifik (Thailand)  |   `arn:aws:lambda:ap-southeast-7:851725245975:layer:Synthetics_Selenium:1`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics_Selenium:41`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics_Selenium:41`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics_Selenium:84`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics_Selenium:40`   | 
|  China (Ningxia);  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics_Selenium:40`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics_Selenium:41`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics_Selenium:42`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics_Selenium:40`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics_Selenium:42`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics_Selenium:41`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics_Selenium:28`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics_Selenium:41`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics_Selenium:27`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics_Selenium:25`   | 
|  Mexiko (Zentral)  |   `arn:aws:lambda:mx-central-1:654654265476:layer:Synthetics_Selenium:3`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics_Selenium:40`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics_Selenium:28`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics_Selenium:42`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics_Selenium:38`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics_Selenium:39`   | 

#### ARNs für syn-python-selenium -4,0
<a name="syn-python-selenium-4.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-python-selenium-4.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics_Selenium:38`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics_Selenium:41`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics_Selenium:39`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics_Selenium:40`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics_Selenium:39`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics_Selenium:38`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics_Selenium:26`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics_Selenium:33`   | 
|  Asien-Pazifik (Malaysia)  |   `arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics_Selenium:8`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics_Selenium:24`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics_Selenium:39`   | 
|  Asien-Pazifik (Neuseeland)  |   ` arn:aws:lambda:ap-southeast-6:779414629109:layer:Synthetics_Selenium:21`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics_Selenium:37`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics_Selenium:42`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics_Selenium:43`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics_Selenium:38`   | 
|  Asien-Pazifik (Taipeh)  |   `arn:aws:lambda:ap-east-2:471112897378:layer:Synthetics_Selenium:5`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics_Selenium:39`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics_Selenium:39`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics_Selenium:82`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics_Selenium:38`   | 
|  China (Ningxia);  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics_Selenium:38`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics_Selenium:39`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics_Selenium:40`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics_Selenium:38`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics_Selenium:40`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics_Selenium:39`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics_Selenium:26`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics_Selenium:39`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics_Selenium:25`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics_Selenium:23`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics_Selenium:38`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics_Selenium:26`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics_Selenium:40`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics_Selenium:36`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics_Selenium:37`   | 

#### ARNs für syn-python-selenium -3,0
<a name="syn-python-selenium-3.0"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-python-selenium-3.0` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics_Selenium:32`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics_Selenium:34`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics_Selenium:32`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics_Selenium:34`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics_Selenium:32`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics_Selenium:32`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics_Selenium:20`   | 
|  Asien-Pazifik (Jakarta)  |   ` arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics_Selenium:26`   | 
|  Asien-Pazifik (Malaysia)  |   `arn:aws:lambda:ap-southeast-5:035872523913:layer:Synthetics_Selenium:7`   | 
|  Asien-Pazifik (Melbourne)  |   ` arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics_Selenium:18`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics_Selenium:32`   | 
|  Asien-Pazifik (Osaka)  |   ` arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics_Selenium:30`   | 
|  Asien-Pazifik (Seoul)  |   ` arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics_Selenium:34`   | 
|  Asien-Pazifik (Singapur)  |   ` arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics_Selenium:37`   | 
|  Asien-Pazifik (Sydney)  |   ` arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics_Selenium:32`   | 
|  Asien-Pazifik (Thailand)  |   `arn:aws:lambda:ap-southeast-7:851725245975:layer:Synthetics_Selenium:3`   | 
|  Asien-Pazifik (Tokio)  |   ` arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics_Selenium:32`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics_Selenium:32`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics_Selenium:76`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics_Selenium:32`   | 
|  China (Ningxia);  |   ` arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics_Selenium:32`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics_Selenium:32`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics_Selenium:34`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics_Selenium:32`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics_Selenium:33`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics_Selenium:32`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics_Selenium:20`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics_Selenium:32`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics_Selenium:19`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics_Selenium:17`   | 
|  Mexiko (Zentral)  |   `arn:aws:lambda:mx-central-1:654654265476:layer:Synthetics_Selenium:4`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics_Selenium:32`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics_Selenium:19`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics_Selenium:33`   | 
|  AWS GovCloud (US-Ost)  |   ` arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics_Selenium:30`   | 
|  AWS GovCloud (US-West)  |   ` arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics_Selenium:31`   | 

#### ARNs für syn-python-selenium -2,1
<a name="syn-python-selenium-2.1"></a>

In der folgenden Tabelle sind die ARNs zu verwendenden Versionen ` syn-python-selenium-2.1` der CloudWatch Synthetics-Laufzeit in jeder AWS Region aufgeführt, in der sie verfügbar ist.


| Region | ARN | 
| --- | --- | 
|  USA Ost (Nord-Virginia)  |   `arn:aws:lambda:us-east-1:378653112637:layer:Synthetics:29`   | 
|  USA Ost (Ohio)  |   `arn:aws:lambda:us-east-2:772927465453:layer:Synthetics:31`   | 
|  USA West (Nordkalifornien)  |   `arn:aws:lambda:us-west-1:332033056316:layer:Synthetics:29`   | 
|  USA West (Oregon)  |   `arn:aws:lambda:us-west-2:760325925879:layer:Synthetics:31`   | 
|  Africa (Cape Town)  |   `arn:aws:lambda:af-south-1:461844272066:layer:Synthetics:29`   | 
|  Asien-Pazifik (Hongkong)  |   `arn:aws:lambda:ap-east-1:129828061636:layer:Synthetics:29`   | 
|  Asien-Pazifik (Hyderabad)  |   `arn:aws:lambda:ap-south-2:280298676434:layer:Synthetics:17`   | 
|  Asien-Pazifik (Jakarta)  |   `arn:aws:lambda:ap-southeast-3:246953257743:layer:Synthetics:23`   | 
|  Asien-Pazifik (Melbourne)  |   `arn:aws:lambda:ap-southeast-4:200724813040:layer:Synthetics:15`   | 
|  Asien-Pazifik (Mumbai)  |   `arn:aws:lambda:ap-south-1:724929286329:layer:Synthetics:29`   | 
|  Asien-Pazifik (Osaka)  |   `arn:aws:lambda:ap-northeast-3:608016332111:layer:Synthetics:27`   | 
|  Asien-Pazifik (Seoul)  |   `arn:aws:lambda:ap-northeast-2:989515803484:layer:Synthetics:30`   | 
|  Asien-Pazifik (Singapur)  |   `arn:aws:lambda:ap-southeast-1:068035103298:layer:Synthetics:34`   | 
|  Asien-Pazifik (Sydney)  |   `arn:aws:lambda:ap-southeast-2:584677157514:layer:Synthetics:29`   | 
|  Asien-Pazifik (Tokio)  |   `arn:aws:lambda:ap-northeast-1:172291836251:layer:Synthetics:29`   | 
|  Canada (Central)  |   `arn:aws:lambda:ca-central-1:236629016841:layer:Synthetics:29`   | 
|  Kanada West (Calgary)  |   `arn:aws:lambda:ca-west-1:944448206667:layer:Synthetics:73`   | 
|  China (Peking)  |   `arn:aws-cn:lambda:cn-north-1:422629156088:layer:Synthetics:29`   | 
|  China (Ningxia);  |   `arn:aws-cn:lambda:cn-northwest-1:474974519687:layer:Synthetics:29`   | 
|  Europe (Frankfurt)  |   `arn:aws:lambda:eu-central-1:122305336817:layer:Synthetics:29`   | 
|  Europa (Irland)  |   `arn:aws:lambda:eu-west-1:563204233543:layer:Synthetics:31`   | 
|  Europa (London)  |   `arn:aws:lambda:eu-west-2:565831452869:layer:Synthetics:29`   | 
|  Europa (Milan)  |   `arn:aws:lambda:eu-south-1:525618516618:layer:Synthetics:30`   | 
|  Europa (Paris)  |   `arn:aws:lambda:eu-west-3:469466506258:layer:Synthetics:29`   | 
|  Europa (Spain)  |   `arn:aws:lambda:eu-south-2:029793053121:layer:Synthetics:17`   | 
|  Europa (Stockholm)  |   `arn:aws:lambda:eu-north-1:162938142733:layer:Synthetics:29`   | 
|  Europa (Zürich)  |   `arn:aws:lambda:eu-central-2:224218992030:layer:Synthetics:16`   | 
|  Israel (Tel Aviv)  |   `arn:aws:lambda:il-central-1:313249807427:layer:Synthetics:14`   | 
|  Middle East (Bahrain)  |   `arn:aws:lambda:me-south-1:823195537320:layer:Synthetics:29`   | 
|  Naher Osten (VAE)  |   `arn:aws:lambda:me-central-1:239544149032:layer:Synthetics:16`   | 
|  Südamerika (São Paulo)  |   `arn:aws:lambda:sa-east-1:783765544751:layer:Synthetics:30`   | 
|  AWS GovCloud (US-Ost)  |   `arn:aws-us-gov:lambda:us-gov-east-1:946759330430:layer:Synthetics:29`   | 
|  AWS GovCloud (US-West)  |   `arn:aws-us-gov:lambda:us-gov-west-1:946807836238:layer:Synthetics:29`   | 

## Häufige Fehler
<a name="CloudWatch_Synthetics_Debug_Errors"></a>

 **Fehler: Für die lokale Ausführung von AWS SAM-Projekten ist Docker erforderlich. Ist es installiert und wird ausgeführt?** 

Stellen Sie sicher, dass Docker auf Ihrem Computer gestartet wird.

 **Lokaler SAM-Aufruf ist fehlgeschlagen: Beim Aufrufen des GetLayerVersion Vorgangs ist ein Fehler aufgetreten (ExpiredTokenException): Das in der Anfrage enthaltene Sicherheitstoken ist abgelaufen** 

Stellen Sie sicher, dass das AWS Standardprofil eingerichtet ist.

 **Mehr häufige Fehler** 

Weitere Informationen zu häufigen Fehlern im Zusammenhang mit dem SAM finden Sie unter [AWS -SAM-CLI-Fehlersuche](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-troubleshooting.html).

# Problembehandlung bei fehlgeschlagenem Canary
<a name="CloudWatch_Synthetics_Canaries_Troubleshoot"></a>

Wenn Ihr Canary fehlschlägt, gehen Sie wie folgt vor:

 **Allgemeine Problembehebung** 
+ Verwenden Sie die Canarydetailseite, um weitere Informationen zu erhalten. Wählen Sie in der CloudWatch Konsole im Navigationsbereich **Canaries** und dann den Namen des Canaries aus, um die Canary-Detailseite zu öffnen. Prüfen Sie auf der Registerkarte „**Verfügbarkeit**“ anhand der ** SuccessPercent**Metrik, ob das Problem ständig oder nur sporadisch auftritt.

  Wählen Sie auf der Registerkarte **Verfügbarkeit** einen fehlgeschlagenen Datenpunkt aus, um Screenshots, Protokolle und Schrittberichte (sofern verfügbar) für diese fehlgeschlagene Ausführung anzuzeigen.

  Wenn ein Schrittbericht verfügbar ist, weil Schritte Teil des Skripts sind, überprüfen Sie, welcher Schritt fehlgeschlagen ist, und sehen Sie sich die zugehörigen Screenshots an, um das Problem anzuzeigen, das Ihren Kunden auftritt.

  Sie können auch die HAR-Dateien überprüfen, um festzustellen, ob eine oder mehrere Anforderungen fehlschlagen. Sie können tiefer graben, indem Sie Protokolle verwenden, um fehlgeschlagene Anforderungen und Fehler anzuzeigen. Schließlich können Sie diese Artefakte mit den Artefakten eines erfolgreichen Canary-Laufs vergleichen, um das Problem zu ermitteln.

  Standardmäßig erfasst CloudWatch Synthetics Screenshots für jeden Schritt in einem UI-Kanarium. Ihr Skript ist jedoch möglicherweise so konfiguriert, dass Screenshots deaktiviert werden. Während des Debuggings möchten Sie möglicherweise Screenshots erneut aktivieren. In ähnlicher Weise möchten Sie für API-Canarys möglicherweise HTTP-Anforderungs- und Antwort-Header und Texte während des Debuggings sehen. Informationen zum Einschließen dieser Daten in den Bericht finden Sie unter [executeHttpStep(stepName, RequestOptions, [Rückruf], [StepConfig])](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_executeHttpStep).
+ Wenn Sie eine kürzlich bereitgestellte Anwendung hatten, rollen Sie sie zurück und debuggen Sie sie später.
+ Stellen Sie manuell eine Verbindung zu Ihrem Endpunkt her, um zu sehen, ob Sie das gleiche Problem reproduzieren können.

**Topics**
+ [Canary schlägt nach dem Update der Lambda-Umgebung fehl](#Troubleshoot_upgradeLambda)
+ [Mein Canary ist blockiert von AWS WAF](#Canary_Blocked_WAF)
+ [Warten auf das Erscheinen eines Elements](#CloudWatch_Synthetics_Canaries_Troubleshoot_waiting)
+ [Der Knoten ist entweder nicht sichtbar oder nicht für page.click () geeignet HTMLElement](#CloudWatch_Synthetics_Canaries_Troubleshoot_notvisible)
+ [Artifacts können nicht in S3 hochgeladen werden, Ausnahme: S3-Bucket-Speicherort kann nicht abgerufen werden: Zugriff verweigert](#CloudWatch_Synthetics_Canaries_Troubleshoot_noupload)
+ [Fehler: Protokollfehler (Runtime). callFunctionOn): Ziel geschlossen.](#CloudWatch_Synthetics_Canaries_Troubleshoot_protocolError)
+ [Canary ist fehlgeschlagen. Fehler: Kein Datenpunkt – Canary zeigt Timeout-Fehler](#CloudWatch_Synthetics_Canaries_Troubleshoot_nodatapoint)
+ [Versuch, auf einen internen Endpunkt zuzugreifen](#CloudWatch_Synthetics_Canaries_Troubleshoot_internalendpoint)
+ [Probleme beim Upgrade und Downgrade der Canary-Laufzeitversion](#CloudWatch_Synthetics_Canaries_Troubleshoot_upgradeissues)
+ [Problem mit Cross-Origin Request Sharing (CORS)](#CloudWatch_Synthetics_Canaries_CORS)
+ [Probleme mit der Race-Bedingung des Canary](#CloudWatch_Synthetics_Canaries_RaceCondition)
+ [Fehlerbehebung für ein Canary in einer VPC](#CloudWatch_Synthetics_Canaries_VPC_troubleshoot)
+ [Fehlerbehebung bei Canary mit automatischer Wiederholung](#CloudWatch_Synthetics_Canaries_autoretry)

## Canary schlägt nach dem Update der Lambda-Umgebung fehl
<a name="Troubleshoot_upgradeLambda"></a>

CloudWatch Synthetics Canaries sind als Lambda-Funktionen in Ihrem Konto implementiert. Diese Lambda-Funktionen unterliegen regelmäßigen Lambda-Laufzeit-Updates, die Sicherheitsupdates, Fehlerbehebungen und andere Verbesserungen enthalten. Lambda ist bestrebt, Laufzeitaktualisierungen bereitzustellen, die mit vorhandenen Funktionen abwärtskompatibel sind. Wie beim Software-Patching gibt es jedoch seltene Fälle, in denen sich eine Laufzeitaktualisierung negativ auf eine vorhandene Funktion auswirken kann. Wenn Sie denken, dass Ihr Canary von einem Lambda-Laufzeit-Update betroffen ist, können Sie den manuellen Modus für Lambda-Laufzeitmanagement (in unterstützten Regionen) verwenden, um die Lambda-Laufzeitversion vorübergehend zurückzusetzen. Dadurch bleibt Ihre Canary-Funktion funktionsfähig und die Unterbrechung wird minimiert. Gleichzeitig wird Zeit bereitgestellt, um die Inkompatibilität zu beheben, bevor Sie zur neuesten Laufzeitversion zurückkehren.

Wenn Ihr Canary nach einem Lambda-Laufzeit-Update ausfällt, ist die beste Lösung ein Upgrade auf eine der neuesten Synthetics-Laufzeiten. Weitere Informationen zu den neuesten Laufzeiten finden Sie unter [Synthetics Laufzeitversionen](CloudWatch_Synthetics_Canaries_Library.md).

Als alternative Lösung können Sie in Regionen, in denen Lambda-Laufzeitverwaltungskontrollen verfügbar sind, einen Canary auf eine ältere von Lambda verwaltete Laufzeit zurücksetzen, indem Sie den manuellen Modus für die Laufzeitverwaltungskontrollen verwenden. Sie können den manuellen Modus entweder mithilfe der AWS CLI oder mithilfe der Lambda-Konsole einrichten, indem Sie die folgenden Schritte in den folgenden Abschnitten ausführen.

**Warnung**  
Wenn Sie die Laufzeiteinstellungen in den manuellen Modus ändern, erhält Ihre Lambda-Funktion keine automatischen Sicherheitsupdates, bis sie wieder in den automatischen Modus zurückversetzt wird. Während dieses Zeitraums kann Ihre Lambda-Funktion für Sicherheitslücken anfällig sein.

 **Voraussetzungen** 
+ Installieren Sie [jq](https://jqlang.github.io/jq/)
+ Installieren Sie die neueste Version der AWS CLI. Weitere Informationen finden Sie unter [Anweisungen zu AWS CLI installieren und aktualisieren](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions).

### Schritt 1: Die Lambda-Funktion ARN abrufen
<a name="UpgradeLambda_ObtainFunctionARN"></a>

Führen Sie den folgenden Befehl aus, um das `EngineArn`-Feld aus der Antwort abzurufen. Dieser `EngineArn` ist der ARN der Lambda-Funktion, die dem Canary zugeordnet ist. Sie verwenden diesen ARN in den folgenden Schritten.

```
aws synthetics get-canary --name my-canary | jq '.Canary.EngineArn'
```

Beispielausgabe für `EngingArn`:

```
"arn:aws:lambda:us-west-2:123456789012:function:cwsyn-my-canary-dc5015c2-db17-4cb5-afb1-EXAMPLE991:8"
```

### Schritt 2: Die letzte gute Lambda-Laufzeitversion ARN abrufen
<a name="UpgradeLambda_RuntimeARN"></a>

Um zu verstehen, ob Ihr Canary von einem Lambda-Laufzeit-Update betroffen war, überprüfen Sie, ob Datum und Uhrzeit der ARN-Änderungen der Lambda-Laufzeit-Version in Ihren Protokollen dem Datum und der Uhrzeit entsprechen, zu der Sie Auswirkungen auf Ihren Canary festgestellt haben. Wenn sie nicht übereinstimmen, verursacht Ihr Problem wahrscheinlich kein Lambda-Laufzeit-Update.

Wenn Ihr Canary von einem Lambda-Laufzeit-Update betroffen ist, müssen Sie den ARN der funktionierenden Lambda-Laufzeit-Version identifizieren, die Sie zuvor verwendet haben. Folgen Sie den Anweisungen unter [Identifizieren von Laufzeitversionsänderungen](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html#runtime-management-identify.html), um den ARN der vorherigen Laufzeit zu ermitteln. Notieren Sie den ARN der Laufzeitversion und fahren Sie mit Schritt 3 fort, um die Laufzeitverwaltungskonfiguration festzulegen.

Wenn Ihr Canary noch nicht von einem Lambda-Umgebungsupdate betroffen ist, können Sie den ARN der Lambda-Laufzeitversion finden, die Sie derzeit verwenden. Führen Sie den folgenden Befehl aus, um die `RuntimeVersionArn` der Lambda-Funktion aus der Antwort abzurufen. 

```
aws lambda get-function-configuration \
--function-name "arn:aws:lambda:us-west-2:123456789012:function:cwsyn-my-canary-dc5015c2-db17-4cb5-afb1-EXAMPLE991:8" | jq '.RuntimeVersionConfig.RuntimeVersionArn'
```

Beispielausgabe für `RuntimeVersionArn`:

```
"arn:aws:lambda:us-west-2::runtime:EXAMPLE647b82f490a45d7ddd96b557b916a30128d9dcab5f4972911ec0f"
```

### Schritt 3: Aktualisierung der Lambda-Laufzeitverwaltungskonfiguration
<a name="UpgradeLambda_Update"></a>

Sie können entweder die AWS CLI oder die Lambda-Konsole verwenden, um die Runtime-Management-Konfiguration zu aktualisieren.

 **So stellen Sie den manuellen Modus für die Konfiguration der Lambda-Laufzeitverwaltung mit dem AWS CLI ein** 

Geben Sie den folgenden Befehl ein, um die Laufzeitverwaltung der Lambda-Funktion in den manuellen Modus zu ändern. Achten Sie darauf, *function-name* und * qualifier* durch die Versionsnummer der Lambda-Funktion ARN bzw. Lambda-Funktion zu ersetzen, indem Sie die Werte verwenden, die Sie in Schritt 1 gefunden haben. Ersetzen Sie auch die * runtime-version-arn* durch die Version ARN, die Sie in Schritt 2 gefunden haben. 

```
aws lambda put-runtime-management-config \
    --function-name "arn:aws:lambda:us-west-2:123456789012:function:cwsyn-my-canary-dc5015c2-db17-4cb5-afb1-EXAMPLE991" \
    --qualifier 8 \
    --update-runtime-on "Manual" \
    --runtime-version-arn "arn:aws:lambda:us-west-2::runtime:a993d90ea43647b82f490a45d7ddd96b557b916a30128d9dcab5f4972911ec0f"
```

**So versetzen Sie einen Canary mithilfe der Lambda-Konsole in den manuellen Modus**

1. Öffnen Sie die AWS Lambda Konsole unter [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Wählen Sie die Registerkarte **Versionen**, wählen Sie den Link mit der Versionsnummer, der Ihrem ARN entspricht, und wählen Sie die Registerkarte **Code**.

1. Scrollen Sie nach unten zu **Laufzeit-Einstellungen**, erweitern Sie **Laufzeitverwaltungskonfiguration** und kopieren Sie den **ARN der Laufzeitversion**.  
![\[Zeigt den Abschnitt Laufzeit-Einstellungen auf dem Bildschirm an und zeigt, wo der ARN der Laufzeitversion in diesem Abschnitt angezeigt wird.\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/images/SyntheticsManual1.png)

1. Wählen Sie **Runtime Management-Konfiguration bearbeiten**, wählen Sie **Manuell** und fügen Sie den zuvor kopierten **Runtime-Versions-ARN in das Feld Runtime-Version** ein. Wählen Sie dann **Speichern**.  
![\[Zeigt den Bildschirm Laufzeitverwaltungskonfiguration an und zeigt, wo der zuvor kopierte Laufzeitversion-ARN eingefügt werden soll.\]](http://docs.aws.amazon.com/de_de/AmazonCloudWatch/latest/monitoring/images/SyntheticsManual2.png)

## Mein Canary ist blockiert von AWS WAF
<a name="Canary_Blocked_WAF"></a>

Um Canary-Verkehr durchzulassen AWS WAF, erstellen Sie eine Bedingung für die Übereinstimmung mit AWS WAF Zeichenketten, die eine von Ihnen angegebene benutzerdefinierte Zeichenfolge zulässt. Weitere Informationen finden Sie in der AWS WAF Dokumentation unter [Arbeiten mit Bedingungen für den Abgleich von Zeichenketten](https://docs.aws.amazon.com/waf/latest/developerguide/classic-web-acl-string-conditions.html).

Es wird dringend empfohlen, anstelle von Standardwerten Ihre eigene benutzerdefinierte Benutzeragent-Zeichenfolge zu verwenden. Das bietet eine bessere Kontrolle über das AWS WAF -Filtern und erhöht die Sicherheit.

Gehen Sie wie folgt vor, um eine benutzerdefinierte Benutzeragent-Zeichenfolge festzulegen:
+ Für Playwright-Laufzeiten können Sie Ihre AWS WAF genehmigte benutzerdefinierte User-Agent-Zeichenfolge mithilfe der Synthetics-Konfigurationsdatei anhängen. Weitere Informationen finden Sie unter [CloudWatch Synthetics Konfigurationen](Synthetics_WritingCanary_Nodejs_Playwright.md#Synthetics_canary_configure_Playwright_script).
+ Für Puppeteer- oder Selenium-Laufzeiten können Sie mithilfe der unterstützten Bibliotheksfunktionen Ihre benutzerdefinierte Benutzeragent-Zeichenfolge hinzufügen. Informationen zu Puppeteer-Laufzeiten finden Sie unter [asynchron addUserAgent (Seite,); userAgentString](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_addUserAgent). Informationen zu Selenium-Laufzeiten finden Sie unter [add\$1user\$1agent (user\$1agent\$1str)](CloudWatch_Synthetics_Canaries_Library_Python.md#CloudWatch_Synthetics_Library_add_user_agent).

## Warten auf das Erscheinen eines Elements
<a name="CloudWatch_Synthetics_Canaries_Troubleshoot_waiting"></a>

Wenn Sie nach der Analyse Ihrer Protokolle und Screenshots sehen, dass Ihr Skript darauf wartet, dass ein Element auf dem Bildschirm angezeigt wird und eine Zeitüberschreitung auftritt, überprüfen Sie den entsprechenden Screenshot, um zu sehen, ob das Element auf der Seite angezeigt wird. Überprüfen Sie Ihren `xpath`, um sicherzustellen, dass er richtig ist.

[Bei Problemen mit Puppetteer besuchen Sie die Seite von Puppeteer oder die Internetforen. GitHub ](https://github.com/puppeteer/puppeteer/issues)

## Der Knoten ist entweder nicht sichtbar oder nicht für page.click () geeignet HTMLElement
<a name="CloudWatch_Synthetics_Canaries_Troubleshoot_notvisible"></a>

Wenn ein Knoten nicht sichtbar ist oder kein `HTMLElement` für `page.click()` ist, überprüfen Sie zuerst den `xpath`, den Sie zum Klicken auf das Element verwenden. Wenn sich Ihr Element am unteren Bildschirmrand befindet, passen Sie außerdem Ihr Darstellungsfenster an. CloudWatch Synthetics verwendet standardmäßig einen Viewport von 1920 \$1 1080. Sie können beim Starten des Browsers oder mithilfe der Puppeteer-Funktion `page.setViewport` ein anderes Ansichtsfenster festlegen.

## Artifacts können nicht in S3 hochgeladen werden, Ausnahme: S3-Bucket-Speicherort kann nicht abgerufen werden: Zugriff verweigert
<a name="CloudWatch_Synthetics_Canaries_Troubleshoot_noupload"></a>

Wenn Ihr Canary aufgrund eines Amazon S3 S3-Fehlers ausfällt, konnte CloudWatch Synthetics aufgrund von Berechtigungsproblemen keine Screenshots, Protokolle oder Berichte hochladen, die für den Canary erstellt wurden. Überprüfen Sie, ob Folgendes der Fall ist:
+ Prüfen Sie, ob die IAM-Rolle des Canarys die `s3:ListAllMyBuckets`-Berechtigung, die `s3:GetBucketLocation`-Berechtigung für den richtigen Amazon-S3-Bucket und die `s3:PutObject`-Berechtigung für den Bucket besitzt, in dem der Canary seine Artefakte speichert. Wenn der Canary eine visuelle Überwachung durchführt, benötigt die Rolle auch die ` s3:GetObject`-Berechtigung für den Bucket. Dieselben Berechtigungen sind auch in der Endpunkt-Richtlinie von Amazon VPC S3 Gateway erforderlich, wenn der Canary in einer VPC mit einem VPC-Endpunkt bereitgestellt wird.
+  Wenn der Canary anstelle des standardmäßigen verwalteten Schlüssels (Standard) einen vom AWS KMS Kunden AWS verwalteten Schlüssel für die Verschlüsselung verwendet, ist die IAM-Rolle des Canary möglicherweise nicht berechtigt, mit diesem Schlüssel zu verschlüsseln oder zu entschlüsseln. Weitere Informationen finden Sie unter [Verschlüsseln von Canary-Artefakten](CloudWatch_Synthetics_artifact_encryption.md).
+ Ihre Bucket-Richtlinie lässt möglicherweise den Verschlüsselungsmechanismus nicht zu, den der Canary verwendet. Wenn Ihre Bucket-Richtlinie beispielsweise vorschreibt, einen bestimmten Verschlüsselungsmechanismus oder KMS-Schlüssel zu verwenden, müssen Sie denselben Verschlüsselungsmodus für Ihren Canary auswählen.

Führt der Canary eine visuelle Überwachung durch, finden Sie unter [Aktualisieren des Artefaktspeicherortes und der Verschlüsselung bei Verwendung der visuellen Überwachung](CloudWatch_Synthetics_artifact_encryption.md#CloudWatch_Synthetics_artifact_encryption_visual) weitere Informationen dazu.

## Fehler: Protokollfehler (Runtime). callFunctionOn): Ziel geschlossen.
<a name="CloudWatch_Synthetics_Canaries_Troubleshoot_protocolError"></a>

Dieser Fehler wird angezeigt, wenn nach dem Schließen der Seite oder des Browsers einige Netzwerkanforderungen vorhanden sind. Möglicherweise haben Sie vergessen, auf einen asynchronen Vorgang zu warten. Nach der Ausführung Ihres Skripts schließt CloudWatch Synthetics den Browser. Die Ausführung eines asynchronen Vorgangs nach dem Schließen des Browsers kann dazu führen, dass `target closed error`. 

## Canary ist fehlgeschlagen. Fehler: Kein Datenpunkt – Canary zeigt Timeout-Fehler
<a name="CloudWatch_Synthetics_Canaries_Troubleshoot_nodatapoint"></a>

Dies bedeutet, dass Ihr Canarylauf das Timeout überschritten hat. Die Canary-Ausführung wurde gestoppt, bevor CloudWatch Synthetics CloudWatch Erfolgsmetriken in Prozent veröffentlichen oder Artefakte wie HAR-Dateien, Logs und Screenshots aktualisieren konnte. Wenn Ihr Timeout zu niedrig ist, können Sie es erhöhen.

Standardmäßig ist ein Canary-Timeout-Wert gleich seiner Häufigkeit. Sie können den Timeout-Wert manuell so einstellen, dass er kleiner oder gleich der Canary-Frequenz ist. Wenn Ihre Canaryfrequenz niedrig ist, müssen Sie die Frequenz erhöhen, um das Timeout zu erhöhen. Sie können sowohl die Häufigkeit als auch den Timeout-Wert unter **Zeitplan** anpassen, wenn Sie einen Canary mithilfe der CloudWatch Synthetics-Konsole erstellen oder aktualisieren.

Stellen Sie sicher, dass Ihr canary-Timeout-Wert nicht kürzer als 15 Sekunden ist, um Lambda-Kaltstarts und die Zeit zu ermöglichen, die zum Hochfahren der canary-Instrumentierung benötigt wird.

Canary-Artefakte können in der CloudWatch Synthetics-Konsole nicht angezeigt werden, wenn dieser Fehler auftritt. Du kannst CloudWatch Logs verwenden, um die Logs von Canary einzusehen.

**Um CloudWatch Logs zu verwenden, um die Logs eines Kanarienvogels einzusehen**

1. Öffnen Sie die CloudWatch Konsole unter [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Wählen Sie im linken Navigationsbereich **Log groups (Protokollgruppen)** aus.

1. Suchen Sie die Protokollgruppe, indem Sie den Canary-Namen in das Filterfeld eingeben. Protokollgruppen für Kanaren haben den Namen**/aws/lambda/cwsyn- *canaryName* -RandomId**.

## Versuch, auf einen internen Endpunkt zuzugreifen
<a name="CloudWatch_Synthetics_Canaries_Troubleshoot_internalendpoint"></a>

Wenn du möchtest, dass dein Canary auf einen Endpunkt in deinem internen Netzwerk zugreift, empfehlen wir dir, CloudWatch Synthetics für die Verwendung von VPC einzurichten. Weitere Informationen finden Sie unter [Ausführen eines Canarys in einer VPC](CloudWatch_Synthetics_Canaries_VPC.md).

## Probleme beim Upgrade und Downgrade der Canary-Laufzeitversion
<a name="CloudWatch_Synthetics_Canaries_Troubleshoot_upgradeissues"></a>

Wenn Sie den Canary kürzlich von der Laufzeitversion `syn-1.0` auf eine neuere Version aktualisiert haben, liegt möglicherweise ein Problem mit der ursprungsübergreifenden Anforderungsfreigabe (CORS) vor. Weitere Informationen finden Sie unter [Problem mit Cross-Origin Request Sharing (CORS)](#CloudWatch_Synthetics_Canaries_CORS).

Wenn Sie den Canary kürzlich auf eine ältere Runtime-Version heruntergestuft haben, stellen Sie sicher, dass die CloudWatch Synthetics-Funktionen, die Sie verwenden, in der älteren Runtime-Version verfügbar sind, auf die Sie das Downgrade durchgeführt haben. Die Funktion `executeHttpStep` ist beispielsweise ab der Laufzeitversion `syn-nodejs-2.2` verfügbar. Informationen zur Verfügbarkeit von Funktionen finden Sie unter [Ein Canary-Skript schreiben](CloudWatch_Synthetics_Canaries_WritingCanary.md). 

**Anmerkung**  
Wenn Sie planen, die Laufzeitversion für einen Canary zu aktualisieren oder herunterzustufen, empfehlen wir, zuerst den Canary zu klonen und die Laufzeitversion im geklonten Canary zu aktualisieren. Nachdem Sie überprüft haben, dass der Klon mit der neuen Laufzeitversion funktioniert, können Sie die Laufzeitversion Ihres ursprünglichen Canary aktualisieren und den Klon löschen.

## Problem mit Cross-Origin Request Sharing (CORS)
<a name="CloudWatch_Synthetics_Canaries_CORS"></a>

Wenn in einem UI-Canary einige Netzwerkanforderungen mit `403` oder ` net::ERR_FAILED` fehlschlagen, prüfen Sie, ob für den Canary die aktive Ablaufverfolgung aktiviert ist, und verwendet auch die Puppeteer-Funktion `page.setExtraHTTPHeaders`, um Header hinzuzufügen. Wenn dies der Fall ist, können die fehlgeschlagenen Netzwerkanforderungen durch Cross-Origin Request Sharing (CORS) Einschränkungen verursacht werden. Sie können bestätigen, ob dies der Fall ist, indem Sie die aktive Ablaufverfolgung deaktivieren oder die zusätzlichen HTTP-Header entfernen.

 **Warum passiert das?** 

Wenn aktive Ablaufverfolgung verwendet wird, wird allen ausgehenden Anforderungen ein zusätzlicher Header hinzugefügt, um den Aufruf zu verfolgen. Das Ändern der Anforderungsheader durch Hinzufügen eines Trace-Headers oder Hinzufügen zusätzlicher Header mithilfe von Puppeteer's `page.setExtraHTTPHeaders` führt zu einer CORS-Prüfung auf Anfragen (XHR). XMLHttp

Wenn Sie das aktive Tracing nicht deaktivieren oder die zusätzlichen Header entfernen möchten, können Sie Ihre Webanwendung aktualisieren, um den ursprungsübergreifenden Zugriff zu ermöglichen, oder Sie können die Websicherheit deaktivieren, indem Sie das Flag `disable-web-security` beim Starten des Chrome-Browsers in Ihrem Skript verwenden.

Mit der Synthetics-Startfunktion können Sie die von CloudWatch Synthetics verwendeten Startparameter überschreiben und zusätzliche ` disable-web-security` CloudWatch Flag-Parameter übergeben. Weitere Informationen finden Sie unter [Für Node.js-Canary-Skripte verfügbare Bibliotheksfunktionen, die Puppeteer verwenden](CloudWatch_Synthetics_Canaries_Library_Nodejs.md).

**Anmerkung**  
Sie können die von CloudWatch Synthetics verwendeten Startparameter überschreiben, wenn Sie die Laufzeitversion `syn-nodejs-2.1` oder höher verwenden.

## Probleme mit der Race-Bedingung des Canary
<a name="CloudWatch_Synthetics_Canaries_RaceCondition"></a>

Um die beste Erfahrung mit CloudWatch Synthetics zu erzielen, stellen Sie sicher, dass der für die Kanaren geschriebene Code idempotent ist. Andernfalls kann es in seltenen Fällen bei Canary-Ausführungen zu Race-Bedingungen kommen, wenn der Canary bei verschiedenen Ausführungen mit derselben Ressource interagiert.

## Fehlerbehebung für ein Canary in einer VPC
<a name="CloudWatch_Synthetics_Canaries_VPC_troubleshoot"></a>

Wenn nach dem Erstellen oder Aktualisieren eines Canarys auf einem VPC Probleme auftreten, kann einer der folgenden Abschnitte Ihnen helfen, das Problem zu beheben.

### Neues Canary im Fehlerzustand oder Canary kann nicht aktualisiert werden
<a name="CloudWatch_Synthetics_Canaries_VPC_troubleshoot_errorstate"></a>

Wenn Sie ein Canary zur Ausführung in einer VPC erstellen und dieses sofort in einen Fehlerzustand geht oder Sie ein Canary nicht so aktualisieren können, dass es in einer VPC ausgeführt wird, verfügt die Rolle des Canarys möglicherweise nicht über die korrekten Berechtigungen. Um auf einer VPC ausgeführt werden zu können, muss ein Canary über die Berechtigungen ` ec2:CreateNetworkInterface`, `ec2:DescribeNetworkInterfaces` und ` ec2:DeleteNetworkInterface` verfügen. Diese Berechtigungen sind alle in der von ` AWSLambdaVPCAccessExecutionRole` verwalteten Richtlinie enthalten. Weitere Informationen finden Sie unter [Ausführungsrolle und Benutzerberechtigungen](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html#vpc-permissions).

Wenn dieses Problem beim Erstellen eines Canarys aufgetreten ist, müssen Sie das Canary löschen und ein neues erstellen. Wenn Sie die CloudWatch Konsole verwenden, um den neuen Canary zu erstellen, wählen Sie unter **Zugriffsberechtigungen** die Option Neue Rolle **erstellen** aus. Es wird eine neue Rolle erstellt, die alle für die Ausführung des Canary erforderlichen Berechtigungen enthält.

Wenn dieses Problem auftritt, wenn Sie ein Canary aktualisieren, können Sie das Canary erneut aktualisieren und eine neue Rolle bereitstellen, die über die erforderlichen Berechtigungen verfügt.

### Fehler „No test result returned“ (Kein Testergebnis zurückgegeben)
<a name="CloudWatch_Synthetics_Canaries_VPC_troubleshoot_noresult"></a>

Wenn ein Canary den Fehler „No test result returned (Kein Testergebnis zurückgegeben)“ anzeigt, kann eines der folgenden Probleme die Ursache sein: 
+ Wenn Ihre VPC keinen Internetzugang hat, müssen Sie VPC-Endpunkte verwenden, um dem Canary Zugriff auf Amazon S3 zu CloudWatch gewähren. Sie müssen die Optionen für die **DNS resolution (DNS-Auflösung)** und den **DNS hostname (DNS-Hostnamen)** in der VPC aktivieren, damit diese Endpunktadressen korrekt aufgelöst werden können. Weitere Informationen finden Sie unter [Verwenden von DNS mit Ihrer VPC CloudWatch ](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html) [und Verwenden von CloudWatch Synthetics mit Schnittstellen-VPC-Endpunkten](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-and-interface-VPC.html).
+ Canaries müssen in privaten Subnetzen innerhalb einer VPC ausgeführt werden. Um dies zu überprüfen, öffnen Sie die Seite **Subnetze** in der VPC-Konsole. Überprüfen Sie die Subnetze, die Sie bei der Konfiguration des Canarys ausgewählt haben. Wenn diese einen Pfad zu einem Internet-Gateway (**igw-**) haben, sind sie keine privaten Subnetze.

Informationen zur Behebung dieser Probleme finden Sie in den Protokollen für das Canary.

**So zeigen Sie die Protokollereignisse von einem Canary an:**

1. Öffnen Sie die CloudWatch Konsole unter. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)

1. Wählen Sie im Navigationsbereich **Protokollgruppen** aus.

1. Wählen Sie den Namen der Protokollgruppe des Canarys. Der Name der Protokollgruppe beginnt mit ` /aws/lambda/cwsyn-canary-name`.

## Fehlerbehebung bei Canary mit automatischer Wiederholung
<a name="CloudWatch_Synthetics_Canaries_autoretry"></a>

Um zu verstehen, warum Ihr Canary ausfällt, oder um bestimmte fehlgeschlagene Versuche zu analysieren, befolgen Sie diese Schritte zur Fehlerbehebung.

1. Öffnen Sie die CloudWatch Konsole unter [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Wählen Sie im Navigationsbereich **Application Signals**, **Synthetics-Canarys** aus.

1. Wählen Sie **Canary**.

1. Unter der Registerkarte **Verfügbarkeit** können Sie die Ausführungsdetails auf eine der folgenden Arten überprüfen:
   + Auswahl eines bestimmten Punkts im Diagramm von Canary-Ausführungen
   + Wählen Sie unter **Probleme** einen Datensatz aus. Beachten Sie, dass Wiederholungsversuche markiert sind und dieselben Zeitstempel wie die geplanten Ausführungen haben

   Zusätzliche Informationen finden Sie unter **Schritte**, **Screenshot**, **Protokolle**, **HAR-Datei** oder **Traces (sofern die aktive Ablaufverfolgung aktiviert ist)**.

1. Unter **Canary-Artefakte und Amazon-S3-Speicherort** können Sie auf das Artefakt zugreifen und über die verfügbaren Links zu den Amazon-S3-Ordnern oder -Buckets navigieren.

1. Das Diagramm **Canary-Ausführungen** verwendet verschiedenfarbige Punkte, um den jeweiligen Status anzuzeigen:
   + Blaue Punkte – Zeigen erfolgreiche geplante Ausführungen mit einem gleichbleibenden Wert von 100% an
   + Rote Punkte – Zeigen das Scheitern beider geplanter Ausführungen sowie aller Wiederholungsversuche an, wobei der Wert 0% angegeben ist
   + Orange Punkte – Zeigen entweder 0% oder 100% an. 0% bedeutet, dass der Versuch nach erfolglosen vorherigen Versuchen wiederholt wurde, und 100% bedeutet, dass nach einem erneuten Versuch ein Erfolg erzielt wurde

# Beispielcode für Canary-Skripte
<a name="CloudWatch_Synthetics_Canaries_Samples"></a>

Dieser Abschnitt enthält Codebeispiele, die einige mögliche Funktionen für Canary-Skripte von CloudWatch Synthetics veranschaulichen.

## Beispiele für Node.js und Playwright
<a name="Synthetics_Canaries_Samples_nodejs_playwright"></a>

### Playwright-Canary mit mehreren Schritten
<a name="Synthetics_canary_example_nodejs_playwright_multistep"></a>

Das folgende Skript ist ein Beispiel für einen Node.js-Playwright-Canary mit mehreren Schritten.

```
import { synthetics } from '@aws/synthetics-playwright';

export async function handler(event, context) {
  try {
    console.log('Running Synthetics Playwright canary');
    const browser = await synthetics.launch();
    const browserContext = await browser.newContext();
    const page = await synthetics.getPage(browserContext);
    

    // Add steps
    // Step 1
    await synthetics.executeStep("home-page", async () => {
      console.log("Verify home page loads")
      await page.goto('https://www.amazon.com', {waitUntil: "load"});
      await new Promise(r => setTimeout(r, 5000));
    });
    
    // Step 2
    await synthetics.executeStep("search", async () => {
      console.log("Searching for a product")
      const searchInput = page.getByPlaceholder("Search Amazon").first();
      await searchInput.click()
      await searchInput.fill('Amazon echo');
      const btn = page.getByRole('button', { name: 'Go' }).first()
      await btn.click({ timeout: 15000 })
      console.log("Clicked search button")
    });

    // Step 3
    await synthetics.executeStep("search-results", async () => {
      console.log("Verifying search results")
      const resultsHeading = page.getByText("Results", {exact: true}).first()
      await resultsHeading.highlight();
      await new Promise(r => setTimeout(r, 5000));
    });

  } finally {
    // Close all browser contexts and browser
    await synthetics.close();
  }
}
```

### Playwright-Canarys setzen Cookies
<a name="Synthetics_canaries_nodejs_playwright_cookies"></a>

Das folgende Skript ist ein Beispiel für ein Node.js-Playwright-Canary, das drei Cookies setzt.

```
import { synthetics } from '@aws/synthetics-playwright';

export const handler = async (event, context) => {
  try {
    let url = "http://smile.amazon.com/";
    const browser = await synthetics.launch();
    const page = await synthetics.getPage(browser);
    const cookies = [{
        'name': 'cookie1',
        'value': 'val1',
        'url': url
    },
    {
        'name': 'cookie2',
        'value': 'val2',
        'url': url
    },
    {
        'name': 'cookie3',
        'value': 'val3',
        'url': url
    }
   ];
   await page.context().addCookies(cookies);
   await page.goto(url, {waitUntil: 'load', timeout: 30000});
   await page.screenshot({ path: '/tmp/smile.png' });
    
  } finally {
    await synthetics.close();
  }
};
```

## Beispiele für Node.js und Puppeteer
<a name="CloudWatch_Synthetics_Canaries_Samples_nodejspup"></a>

### Festlegen von Cookies
<a name="CloudWatch_Synthetics_Canaries_Samples_cookies"></a>

Websites verlassen sich auf Cookies, um benutzerdefinierte Funktionen bereitzustellen oder Benutzer zu verfolgen. Durch das Setzen von Cookies in CloudWatch Synthetics-Skripten können Sie dieses benutzerdefinierte Verhalten nachahmen und validieren.

Beispielsweise kann eine Website für einen erneut besuchenden Benutzer anstelle eines **Registrierungs**links einen **Anmeldungs**-Link anzeigen.

```
var synthetics = require('@aws/synthetics-puppeteer');
const log = require('@aws/synthetics-logger');

const pageLoadBlueprint = async function () {

    let url = "http://smile.amazon.com/";

    let page = await synthetics.getPage();

    // Set cookies.  I found that name, value, and either url or domain are required fields.
    const cookies = [{
      'name': 'cookie1',
      'value': 'val1',
      'url': url
    },{
      'name': 'cookie2',
      'value': 'val2',
      'url': url
    },{
      'name': 'cookie3',
      'value': 'val3',
      'url': url
    }];
    
    await page.setCookie(...cookies);

    // Navigate to the url
    await synthetics.executeStep('pageLoaded_home', async function (timeoutInMillis = 30000) {
        
        var response = await page.goto(url, {waitUntil: ['load', 'networkidle0'], timeout: timeoutInMillis});

        // Log cookies for this page and this url
        const cookiesSet = await page.cookies(url);
        log.info("Cookies for url: " + url + " are set to: " + JSON.stringify(cookiesSet));
    });

};

exports.handler = async () => {
    return await pageLoadBlueprint();
};
```

### Emulation des Geräts
<a name="CloudWatch_Synthetics_Canaries_Samples_device"></a>

Sie können Skripte schreiben, die verschiedene Geräte emulieren, sodass Sie annähernd das Aussehen und das Verhalten einer Seite auf diesen Geräten ermitteln können.

Das folgende Beispiel emuliert ein iPhone 6-Gerät. Weitere Informationen zur Emulation finden Sie unter [page.emulate(options)](https://pptr.dev/#?product=Puppeteer&version=v5.3.1&show=api-pageemulateoptions) in der Puppeteer-Dokumentation.

```
var synthetics = require('@aws/synthetics-puppeteer');
const log = require('@aws/synthetics-logger');
const puppeteer = require('puppeteer-core');

const pageLoadBlueprint = async function () {
    
    const iPhone = puppeteer.devices['iPhone 6'];

    // INSERT URL here
    const URL = "https://amazon.com";

    let page = await synthetics.getPage();
    await page.emulate(iPhone);

    //You can customize the wait condition here. For instance,
    //using 'networkidle2' may be less restrictive.
    const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});
    if (!response) {
        throw "Failed to load page!";
    }
    
    await page.waitFor(15000);

    await synthetics.takeScreenshot('loaded', 'loaded');
    
    //If the response status code is not a 2xx success code
    if (response.status() < 200 || response.status() > 299) {
        throw "Failed to load page!";
    }
};

exports.handler = async () => {
    return await pageLoadBlueprint();
};
```

### Mehrstufiger API-Canary
<a name="CloudWatch_Synthetics_Canaries_Samples_APIsteps"></a>

Dieser Beispielcode veranschaulicht einen API-Canary mit zwei HTTP-Schritten: Testen der gleichen API für positive und negative Testfälle. Die Schrittkonfiguration wird übergeben, um die Berichterstattung über Header zu ermöglichen. request/response Darüber hinaus werden der Authorization-Header und X-Amz-Security-Token, da sie Benutzeranmeldeinformationen enthalten, ausgeblendet. 

Wenn dieses Skript als Canary verwendet wird, können Sie Details zu jedem Schritt und den zugehörigen HTTP-Anforderungen anzeigen, z. B. Schritt-Pass/Fail-Wert, Dauer und Performance-Metriken wie DNS-Nachschlagezeit und erste Byte-Zeit. Sie können die Anzahl der 2xx, 4xx und 5xx für Ihren Canarylauf anzeigen. 

```
var synthetics = require('@aws/synthetics-puppeteer');
const log = require('@aws/synthetics-logger');

const apiCanaryBlueprint = async function () {
    
    // Handle validation for positive scenario
    const validatePositiveCase = async function(res) {
        return new Promise((resolve, reject) => {
            if (res.statusCode < 200 || res.statusCode > 299) {
                throw res.statusCode + ' ' + res.statusMessage;
            }
     
            let responseBody = '';
            res.on('data', (d) => {
                responseBody += d;
            });
     
            res.on('end', () => {
                // Add validation on 'responseBody' here if required. For ex, your status code is 200 but data might be empty
                resolve();
            });
        });
    };
    
    // Handle validation for negative scenario
    const validateNegativeCase = async function(res) {
        return new Promise((resolve, reject) => {
            if (res.statusCode < 400) {
                throw res.statusCode + ' ' + res.statusMessage;
            }
            
            resolve();
        });
    };
    
    let requestOptionsStep1 = {
        'hostname': 'myproductsEndpoint.com',
        'method': 'GET',
        'path': '/test/product/validProductName',
        'port': 443,
        'protocol': 'https:'
    };
    
    let headers = {};
    headers['User-Agent'] = [synthetics.getCanaryUserAgentString(), headers['User-Agent']].join(' ');
    
    requestOptionsStep1['headers'] = headers;

    // By default headers, post data and response body are not included in the report for security reasons. 
    // Change the configuration at global level or add as step configuration for individual steps
    let stepConfig = {
        includeRequestHeaders: true, 
        includeResponseHeaders: true,
        restrictedHeaders: ['X-Amz-Security-Token', 'Authorization'], // Restricted header values do not appear in report generated.
        includeRequestBody: true,
        includeResponseBody: true
    };
       

    await synthetics.executeHttpStep('Verify GET products API with valid name', requestOptionsStep1, validatePositiveCase, stepConfig);
    
    let requestOptionsStep2 = {
        'hostname': 'myproductsEndpoint.com',
        'method': 'GET',
        'path': '/test/canary/InvalidName(',
        'port': 443,
        'protocol': 'https:'
    };
    
    headers = {};
    headers['User-Agent'] = [synthetics.getCanaryUserAgentString(), headers['User-Agent']].join(' ');
    
    requestOptionsStep2['headers'] = headers;

    // By default headers, post data and response body are not included in the report for security reasons. 
    // Change the configuration at global level or add as step configuration for individual steps
    stepConfig = {
        includeRequestHeaders: true, 
        includeResponseHeaders: true,
        restrictedHeaders: ['X-Amz-Security-Token', 'Authorization'], // Restricted header values do not appear in report generated.
        includeRequestBody: true,
        includeResponseBody: true
    };
    
    await synthetics.executeHttpStep('Verify GET products API with invalid name', requestOptionsStep2, validateNegativeCase, stepConfig);
    
};

exports.handler = async () => {
    return await apiCanaryBlueprint();
};
```

## Beispiele für Python und Selenium
<a name="CloudWatch_Synthetics_Canaries_Samples_pythonsel"></a>

Der folgende Selenium-Beispielcode ist ein Canary, der mit einer benutzerdefinierten Fehlermeldung fehlschlägt, wenn ein Zielelement nicht geladen wird.

```
from aws_synthetics.selenium import synthetics_webdriver as webdriver
from aws_synthetics.common import synthetics_logger as logger
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

def custom_selenium_script():
    # create a browser instance
    browser = webdriver.Chrome()
    browser.get('https://www.example.com/')
    logger.info('navigated to home page')
    # set cookie
    browser.add_cookie({'name': 'foo', 'value': 'bar'})
    browser.get('https://www.example.com/')
    # save screenshot
    browser.save_screenshot('signed.png')
    # expected status of an element
    button_condition = EC.element_to_be_clickable((By.CSS_SELECTOR, '.submit-button'))
    # add custom error message on failure
    WebDriverWait(browser, 5).until(button_condition, message='Submit button failed to load').click()
    logger.info('Submit button loaded successfully')
    # browser will be quit automatically at the end of canary run, 
    # quit action is not necessary in the canary script
    browser.quit()

# entry point for the canary
def handler(event, context):
    return custom_selenium_script()
```

# Canary- und X-Ray-Ablaufverfolgung
<a name="CloudWatch_Synthetics_Canaries_tracing"></a>

Sie können wählen, ob Sie die aktive AWS X-Ray Ablaufverfolgung auf Canaries aktivieren möchten, die Runtime ` syn-nodejs-2.0` oder eine spätere Version verwenden. Wenn Tracing aktiviert ist, werden Traces für alle Aufrufe des Canary gesendet, die den Browser, das AWS SDK oder HTTP- oder HTTPS-Module verwenden. Canarys mit aktiviertem Tracing werden auf der [X-Ray Trace Map](https://docs.aws.amazon.com/xray/latest/devguide/xray-console-servicemap.html) und in [Application Signals](CloudWatch-Application-Monitoring-Sections.md) angezeigt, nachdem Sie es für Ihre Anwendung aktiviert haben. 

**Anmerkung**  
Das Aktivieren der X-Ray-Verfolgung auf canaries wird in der Region Asien-Pazifik (Jakarta) noch nicht unterstützt.  
X-Ray-Nachverfolgung wird von Firefox-Browser-Canarys nicht unterstützt.

Wenn ein Canary auf der X-Ray Trace Map angezeigt wird, wird er als neuer Client-Knotentyp angezeigt. Sie können den Mauszeiger auf einen Canary-Knoten bewegen, um Daten über Latenz, Anforderungen und Fehler anzuzeigen. Sie können auch den Canary-Knoten auswählen, um weitere Daten unten auf der Seite zu sehen. In diesem Bereich der Seite kannst du „**In Synthetics anzeigen“ wählen, um zur Synthetics-Konsole** zu springen, um weitere Informationen über den CloudWatch Canary zu erhalten, oder „**Traces anzeigen**“ wählen, um mehr Details zu den Traces aus den Läufen dieses Canary zu sehen.

Ein Canary mit aktivierten **Ablaufverfolgungen** hat auf seiner Detailseite auch eine Registerkarte Tracing mit Details zu Ablaufverfolgungen und Segmenten aus den Läufen des Canarys.

Durch Aktivieren der Ablaufverfolgung wird die Canary-Laufzeit um 2,5 % auf 7 % erhöht.

Ein Canary mit aktivierter Ablaufverfolgung muss eine Rolle mit den folgenden Berechtigungen verwenden. Wenn Sie die Konsole verwenden, um die Rolle beim Erstellen des Canary zu erstellen, erhalten Sie diese Berechtigungen.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Sid230934",
            "Effect": "Allow",
            "Action": [
                "xray:PutTraceSegments"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Von Canarys erzeugte Spuren sind gebührenpflichtig. Weitere Informationen zu den Preisen für X-Ray finden Sie unter [AWS X-Ray – Preise](https://aws.amazon.com/xray/pricing/).

# Ausführen eines Canarys in einer VPC
<a name="CloudWatch_Synthetics_Canaries_VPC"></a>

Sie können Canarys auf Endpunkten in einer VPC und auf öffentlichen internen Endpunkten ausführen. Um ein Canary auf einer VPC auszuführen, müssen sowohl die Optionen **DNS Resolution (DNS-Auflösung)** als auch **DNS hostnames (DNS-Hostnamen)** auf der VPC aktiviert sein. Weitere Informationen finden Sie unter [Using DNS with Your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html).

Wenn Sie einen Canary auf einem VPC-Endpunkt ausführen, müssen Sie ihm eine Möglichkeit bieten, seine Metriken CloudWatch und seine Artefakte an Amazon S3 zu senden. Wenn die VPC bereits für den Internetzugang aktiviert ist, brauchen Sie nichts weiter zu tun. Das Canary wird in Ihrer VPC ausgeführt, kann aber auf das Internet zugreifen, um seine Metriken und Artefakte hochzuladen.

Wenn die VPC noch nicht für den Internetzugriff aktiviert ist, haben Sie zwei Möglichkeiten:
+ Aktivieren Sie den IPv4 Internetzugang, damit der Canary Messwerte an CloudWatch Amazon S3 senden kann. Weitere Informationen finden Sie im folgenden Abschnitt: [Mit einer VPC Internetzugriff auf Ihren Canary gewähren](#CloudWatch_Synthetics_VPC_Internet).
+ Wenn Sie Ihre VPC privat halten möchten, können Sie den Canary so konfigurieren, dass er seine Daten über private VPC-Endpunkte an CloudWatch und Amazon S3 sendet. Falls Sie dies noch nicht getan haben, müssen Sie einen VPC-Endpunkt für CloudWatch (com.amazonaws) erstellen. *region*.monitoring) und einen Gateway-Endpunkt für Amazon S3. Weitere Informationen finden Sie unter [Verwendung CloudWatch, CloudWatch Synthetics und CloudWatch Netzwerküberwachung mit VPC-Endpunkten mit Schnittstellen](cloudwatch-and-interface-VPC.md) und [Amazon VPC-Endpunkte für Amazon S3](https://docs.aws.amazon.com/glue/latest/dg/vpc-endpoints-s3.html). 

## Mit einer VPC Internetzugriff auf Ihren Canary gewähren
<a name="CloudWatch_Synthetics_VPC_Internet"></a>

Befolgen Sie diese Schritte, um Ihrem VPC-Canary Internetzugang zu gewähren oder Ihrem Canary eine statische IP-Adresse zuzuweisen

**Um einem Canary auf einer VPC Internetzugang (IPv4) zu gewähren**

1. Erstellen Sie ein NAT-Gateway in einem öffentlichen Subnetz auf der VPC. Detaillierte Anweisungen finden Sie unter [Create a NAT gateway](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-creating) (NAT-Gateway erstellen).

1. Fügen Sie der Routentabelle im privaten Subnetz, in dem der Canary gestartet wird, eine neue Route hinzu. Machen Sie folgende Angaben:
   + Geben Sie für **Destination** (Ziel) **0.0.0.0/0** ein.
   + Wählen Sie für **Ziel** **NAT Gateway** aus und wählen Sie dann die ID des NAT-Gateways, das Sie erstellt haben.
   + Wählen Sie **Save Rules (Routen speichern)** aus.

   Weitere Informationen über das Hinzufügen von Routen finden Sie unter [Add and remove routes form a route table](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes) (Hinzufügen und Entfernen von Routen aus einer Routing-Tabelle).

**Um einem Canary auf einer VPC Internetzugang (IPv6) zu gewähren**

1. Konfigurieren Sie Ihre VPC mit Dualstack-Subnetzen. Sie müssen der VPC ein Internet-Gateway nur für ausgehenden Verkehr hinzufügen, die Routing-Tabellen aktualisieren, um den Datenverkehr zum Internet-Gateway zuzulassen, und den ausgehenden Zugriff von den zugehörigen Sicherheitsgruppen aus zulassen. Weitere Informationen finden [Sie unter IPv6 Unterstützung für Ihre VPC hinzufügen](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html).

1. Stellen Sie das `Ipv6AllowedForDualstack ` in Ihrer Canary-VPC-Konfiguration mithilfe der `CreateCanary`- oder `UpdateCanary`-API ein. Weitere Informationen finden Sie unter [VpcConfigInput](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_VpcConfigInput.html).

   Um ausgehenden IPv6 Datenverkehr von Ihrem Canary zu aktivieren, müssen die mit dem Canary verbundenen VPC-Subnetze für Dualstack aktiviert sein.

**Anmerkung**  
Stellen Sie sicher, dass der Status der Routen zu Ihrem NAT-Gateway **aktiv** ist. Wenn das NAT-Gateway gelöscht wird und Sie die Routen nicht aktualisiert haben, haben sie einen Blackhole-Status. Weitere Informationen hierzu finden Sie unter [Work with NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#nat-gateway-working-with) (Arbeiten mit NAT-Gateways).

# Verschlüsseln von Canary-Artefakten
<a name="CloudWatch_Synthetics_artifact_encryption"></a>

CloudWatch Synthetics speichert kanarische Artefakte wie Screenshots, HAR-Dateien und Berichte in Ihrem Amazon S3 S3-Bucket. Standardmäßig werden diese Artefakte im Ruhezustand mit einem AWS verwalteten Schlüssel verschlüsselt. Weitere Informationen finden Sie unter [Kundenschlüssel und AWS Schlüssel](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt.html). 

Sie können wählen, ob Sie eine andere Verschlüsselungsoption verwenden möchten. CloudWatch Synthetics unterstützt Folgendes:
+ **SSE S3** – Serverseitige Verschlüsselung (SSE) mit einem von Amazon S3 verwalteten Schlüssel.
+ **SSE-KMS** – Serverseitige Verschlüsselung (SSE) mit einem vom Kunden verwalteten AWS KMS -Schlüssel.

Wenn Sie die Standardverschlüsselungsoption mit einem AWS verwalteten Schlüssel verwenden möchten, benötigen Sie keine zusätzlichen Berechtigungen. 

Um SSE-S3-Verschlüsselung zu verwenden, geben Sie **SSE\$1S3** als Verschlüsselungsmodus an, wenn Sie einen Canary erstellen oder aktualisieren. Um diesen Verschlüsselungsmodus zu verwenden, benötigen Sie keine zusätzlichen Berechtigungen. Weitere Informationen finden Sie unter [Protecting data using server-side encryption with Amazon S3-managed encryption keys (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) (Schutz von Daten mithilfe serverseitiger Verschlüsselung mit Amazon S3-verwalteten Verschlüsselungsschlüsseln (SSE-S3).

Um einen vom AWS KMS Kunden verwalteten Schlüssel zu verwenden, geben Sie **SSE-KMS** als Verschlüsselungsmodus an, wenn Sie Ihren Canary erstellen oder aktualisieren, und Sie geben auch den Amazon-Ressourcennamen (ARN) Ihres Schlüssels an. Sie können auch einen kontoübergreifenden KMS-Schlüssel verwenden.

Um einen vom Kunden verwalteten Schlüssel verwenden zu können, benötigen Sie folgende Einstellungen:
+ Die IAM-Rolle für den Canary muss die Berechtigung haben, Ihre Artefakte mit Ihrem Schlüssel zu verschlüsseln. Wenn Sie eine visuelle Überwachung verwenden, müssen Sie ihr auch die Berechtigung zum Entschlüsseln von Artefakten erteilen.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllowKMSKeyUsage",
              "Effect": "Allow",
              "Action": [
                  "kms:GenerateDataKey",
                  "kms:Decrypt"
              ],
              "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
          }
      ]
  }
  ```

------
+ Anstatt Ihrer IAM-Rolle Berechtigungen hinzuzufügen, können Sie Ihre IAM-Rolle zu Ihrer Schlüsselrichtlinie hinzufügen. Wenn Sie dieselbe Rolle für mehrere Canarys verwenden, sollten Sie diesen Ansatz in Betracht ziehen.

  ```
  {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
          "AWS": "Your synthetics IAM role ARN"
      },
      "Action": [
          "kms:GenerateDataKey",
          "kms:Decrypt"
      ],
      "Resource": "*"
  }
  ```
+ Wenn Sie einen kontoübergreifenden KMS-Schlüssel verwenden, lesen Sie den Abschnitt [Gestatten, dass Benutzer anderer Konten einen KMS-Schlüssel verwenden](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html).

 **Anzeigen verschlüsselter Canary-Artefakte bei Verwendung eines vom Kunden verwalteten Schlüssels** 

Um Canary-Artefakte anzuzeigen, aktualisieren Sie Ihren vom Kunden verwalteten Schlüssel, sodass der Benutzer, der sich AWS KMS die Artefakte ansieht, die Entschlüsselungsberechtigung erhält. Alternativ können Sie dem Benutzer oder der IAM-Rolle, die die Artefakte anzeigt, Entschlüsselungsberechtigungen hinzufügen.

Die AWS KMS Standardrichtlinie aktiviert IAM-Richtlinien im Konto, um den Zugriff auf die KMS-Schlüssel zu ermöglichen. Wenn Sie einen kontoübergreifenden KMS-Schlüssel verwenden, finden Sie weitere Informationen unter [Warum erhalten kontoübergreifende Benutzer die Fehlermeldung „Zugriff verweigert“, wenn sie versuchen, auf Amazon S3 S3-Objekte zuzugreifen, die mit einem benutzerdefinierten AWS KMS Schlüssel verschlüsselt wurden](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-denied-error-s3/)? . 

Weitere Informationen zum Beheben von Problemen mit Zugriffsverweigerung aufgrund eines KMS-Schlüssels finden Sie unter [Troubleshooting key access](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html) (Fehlerbehebung beim Zugriff mit einem Schlüssel). 

## Aktualisieren des Artefaktspeicherortes und der Verschlüsselung bei Verwendung der visuellen Überwachung
<a name="CloudWatch_Synthetics_artifact_encryption_visual"></a>

Um eine visuelle Überwachung durchzuführen, vergleicht CloudWatch Synthetics Ihre Screenshots mit Basis-Screenshots, die in dem als Baseline ausgewählten Lauf aufgenommen wurden. Wenn Sie Ihren Artefaktspeicherort oder Ihre Verschlüsselungsoption aktualisieren, müssen Sie einen der folgenden Schritte ausführen:
+ Stellen Sie sicher, dass Ihre IAM-Rolle sowohl für den vorherigen Amazon-S3-Standort als auch für den neuen Amazon-S3-Standort für Artefakte über ausreichende Berechtigungen verfügt. Stellen Sie außerdem sicher, dass sie sowohl für die vorherigen als auch für die neuen Verschlüsselungsmethoden und KMS-Schlüssel berechtigt ist.
+ Erstellen Sie eine neue Baseline, indem Sie die nächste Canary-Ausführung als neue Baseline auswählen. Wenn Sie diese Option verwenden, müssen Sie nur sicherstellen, dass Ihre IAM-Rolle über ausreichende Berechtigungen für den neuen Artefaktspeicherort und die Verschlüsselungsoption verfügt.

Wir empfehlen die zweite Möglichkeit, die nächste Ausführung als neue Baseline auszuwählen. Dies vermeidet eine Abhängigkeit von einem Artefaktspeicherort oder einer Verschlüsselungsoption, die Sie nicht mehr für den Canary verwenden.

Angenommen, Ihr Canary verwendet Artefaktposition A und KMS-Schlüssel K zum Hochladen von Artefakten. Wenn Sie Ihren Canary auf den Artefaktstandort B und KMS-Schlüssel L aktualisieren, können Sie sicherstellen, dass Ihre IAM-Rolle Berechtigungen sowohl für die Artefaktpositionen (A und B) als auch für beide KMS-Schlüssel (K und L) hat. Alternativ können Sie die nächste Ausführung als neue Baseline auswählen und sicherstellen, dass Ihre Canary-IAM-Rolle Berechtigungen für den Artefaktspeicherort B und KMS-Schlüssel L hat. 

# Anzeigen von Canary-Statistiken und -Details
<a name="CloudWatch_Synthetics_Canaries_Details"></a>

Sie können Details zu Ihren Canaries anzeigen und Statistiken über ihre Ausführungen einsehen.

Um alle Details zu Ihren Canary-Ausführungen sehen zu können, müssen Sie bei einem Konto angemeldet sein, das über ausreichende Berechtigungen verfügt. Weitere Informationen finden Sie unter [Erforderliche Rollen und Berechtigungen für CloudWatch Kanarienvögel](CloudWatch_Synthetics_Canaries_Roles.md).

**So zeigen Sie Canary-Statistiken und -Details an**

1. Öffnen Sie die CloudWatch Konsole unter. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)

1. Wählen Sie im Navigationsbereich **Application Signals**, **Synthetics-Canarys** aus.

   In den Details zu den von Ihnen erstellten Canarys:
   + **Status** zeigt visuell an, wie viele Ihrer Canarys ihre letzten Ausführungen bestanden haben.
   + **Groups** (Gruppen) zeigt die von Ihnen erstellten Gruppen an und zeigt an, wie viele von ihnen ausgefallene oder alarmierende Canarys haben.
   + **Slowest performers** (Langsamste Performer) zeigt die Gruppe und die Region mit den Canarys mit der langsamsten Leistung an. Diese werden berechnet, indem die durchschnittliche Dauer aller Canarys (über die ausgewählte Zeitspanne) innerhalb einer Gruppe oder Region addiert und durch die Anzahl der Canarys in der Gruppe oder Region dividiert wird. Wenn Sie die Metrik für Langsamste Gruppe auswählen, wird die Tabelle gefiltert, sodass nur die langsamsten Gruppen und ihre Canarys angezeigt werden. Die Tabelle ist nach Durchschnittsdauer sortiert.
   + Am Ende der Seite befindet sich eine Tabelle, die alle Canarys anzeigt. Sie können die Filterleiste verwenden, um die Tabelle so zu filtern, dass die Canarys nach bestimmten Canary-Namen, Ergebnissen der letzten Ausführung, Erfolgsquote, Alarmen, Ausführungsraten, Canary-Status, Laufzeiten und eindeutigen Tags angezeigt werden. 

     In der Alarmspalte werden nur Alarme angezeigt, die dem Benennungsstandard für Canary-Alarme entsprechen. Dieser Standard ist `Synthetics-Alarm-canaryName -index`. Canary-Alarme, die Sie im Bereich **Synthetics** der CloudWatch Konsole erstellen, verwenden automatisch diese Namenskonvention. Wenn Sie Canary-Alarme im Bereich **Alarme** der CloudWatch Konsole oder mithilfe AWS CloudFormation dieser Namenskonvention erstellen und diese Benennungskonvention nicht verwenden, funktionieren die Alarme, sie werden aber nicht in dieser Liste angezeigt.

1. Wenn Sie weitere Informationen zu einem einzelnen Kanarienvogel anzeigen möchten, wählen Sie in der Tabelle Kanarische Inseln den Namen des Kanarischen **Kanarienvogels** aus.

   In den Details über dieses Canary:
   + Auf der Registerkarte **Verfügbarkeit** werden Informationen zu den letzten Läufen dieses Canarys angezeigt.

     Unter **Canary runs (Canary-Ausführungen)** können Sie eine der Zeilen auswählen, um sich Details zu dieser Ausführung anzeigen zu lassen.

     Unter dem Diagramm kannst du „**Schritte**“, „**Screenshot**“, „**Protokolle**“ oder „**HAR-Datei**“ auswählen, um diese Art von Details anzuzeigen. Wenn auf dem Canary das aktive Tracing aktiviert ist, kannst du auch **Traces** wählen, um dir die Tracing-Informationen von den Läufen des Canary anzusehen.

     Die Logs für Canary-Läufe werden in S3-Buckets und in Logs gespeichert. CloudWatch 

     Screenshots zeigen, wie Ihren Kunden Ihre Webseiten angezeigt werden. Sie können die HAR-Dateien (HTTP-Archivdateien) verwenden, um sich detaillierte Leistungsdaten zu den Webseiten anzeigen zu lassen. Sie können die Liste der Web-Anforderungen analysieren und Performance-Probleme wie die Ladezeit für ein Element erfassen. Protokolldateien zeigen die Aufzeichnung der Interaktionen zwischen der Canary-Ausführung und der Webseite und können dazu verwendet werden, detaillierte Angaben zu Fehlern zu identifizieren.

     Wenn der Canary die Laufzeit `syn-nodejs-2.0-beta` oder höher verwendet, können Sie die HAR-Dateien nach Statuscode, Anforderungsgröße oder Dauer sortieren.

     Auf der Registerkarte **Steps** (Schritte) finden Sie eine Liste der Schritte des Canary, den Status jedes Schritts, den Fehlergrund, die URL nach der Ausführung des Schritts, Screenshots und die Dauer der Schrittausführung. Bei API-Canaries mit HTTP-Schritten können Sie Schritte und entsprechende HTTP-Anforderungen anzeigen, wenn Sie die Laufzeit `syn-nodejs-2.2` oder höher verwenden.

     Wählen Sie die Registerkarte **HTTP-Anforderungen**, um das Protokoll jeder HTTP-Anforderung anzuzeigen, die vom Canary gestellt wurde. Sie können request/response Header, Antworttext, Statuscode, Fehler- und Leistungszeiten (Gesamtdauer, TCP-Verbindungszeit, TLS-Handshake-Zeit, Zeit des ersten Bytes und Dauer der Inhaltsübertragung) einsehen. Alle HTTP-Anfragen, die das HTTP/HTTPS Modul unter der Haube verwenden, werden hier erfasst.

     Standardmäßig sind in API-Canarys der Anforderungsheader, der Antwort-Header, der Anforderungskörper und der Antworttext aus Sicherheitsgründen nicht im Bericht enthalten. Wenn Sie sie einbeziehen, werden die Daten nur in Ihrem S3 Bucket gespeichert. Informationen zum Einschließen dieser Daten in den Bericht finden Sie unter [executeHttpStep(stepName, RequestOptions, [Rückruf], [StepConfig])](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_executeHttpStep).

     Die Inhaltstypen des Antworttextkörpers Text, HTML und JSON werden unterstützt. Inhaltstypen wie text/HTML, text/plain, application/JSON and application/x -amz-json-1.0 werden unterstützt. Komprimierte Antworten werden nicht unterstützt. 
   + Auf der Registerkarte „**Überwachung**“ werden Grafiken der von diesem Canary veröffentlichten CloudWatch Metriken angezeigt. Weitere Informationen zu diesen Metriken finden Sie unter [CloudWatch von Canaries veröffentlichte Metriken](CloudWatch_Synthetics_Canaries_metrics.md).

     Unter den von The Canary veröffentlichten CloudWatch Grafiken befinden sich Diagramme mit Lambda-Metriken, die sich auf den Lambda-Code des Canary beziehen.
   + Auf der Registerkarte **Konfiguration** werden Konfigurations- und Zeitplaninformationen zum Canary angezeigt.
   + Das Tab **Groups** (Gruppen) zeigt die Gruppen an, denen dieser Canary zugeordnet ist, falls vorhanden.
   + Auf der Registerkarte **Tags** werden die Tags angezeigt, die dem Canary zugeordnet sind.

# CloudWatch von Canaries veröffentlichte Metriken
<a name="CloudWatch_Synthetics_Canaries_metrics"></a>

Canaries veröffentlichen die folgenden Metriken CloudWatch im Namespace. `CloudWatchSynthetics` Weitere Informationen zum Anzeigen von CloudWatch Metriken finden Sie unter. [Anzeigen der verfügbaren Metriken](viewing_metrics_with_cloudwatch.md)

**Anmerkung**  
Bei Canarys mit mehreren Browsern sind Metriken zur Browserdimension standardmäßig aktiviert, um einen Überblick über die Leistung von Browsern wie u. a. Chrome und Firefox zu geben. Um Browser-Metriken zu deaktivieren, stellen Sie `browserDimension` auf `false` ein.  
Bei Canarys mit nur einem Browser sind Metriken der Browserdimension standardmäßig deaktiviert, um Redundanz zu vermeiden. Um die Metriken nach Browsern aufgeschlüsselt zu sehen, stellen Sie `browserDimension` auf ` true` ein.


| Metrik | Description | 
| --- | --- | 
|   `2xx`   |  Die Anzahl der vom Canary ausgeführten Netzwerkanforderungen, die OK-Antworten zurückgegeben haben, mit Antwortcodes zwischen 200 und 299. Diese Metrik wird für UI-Canaries gemeldet, die Laufzeitversion ` syn-nodejs-2.0` oder höher verwenden und wird für API-Canaries gemeldet, die Laufzeitversion `syn-nodejs-2.2` oder höher verwenden. Gültige Dimensionen: CanaryName, Browser Gültige Statistiken: Summe Einheiten: Anzahl  | 
|   `4xx`   |  Die Anzahl der von Canarys ausgeführten Netzwerkanforderungen, die Fehlerantworten zurückgegeben haben, mit Antwortcodes zwischen 400 und 499. Diese Metrik wird für UI-Canaries gemeldet, die Laufzeitversion ` syn-nodejs-2.0` oder höher verwenden und wird für API-Canaries gemeldet, die Laufzeitversion `syn-nodejs-2.2` oder höher verwenden. Gültige Abmessungen: CanaryName, Browser Gültige Statistiken: Summe Einheiten: Anzahl  | 
|   `5xx`   |  Die Anzahl der vom Canary ausgeführten Netzwerkanforderungen, die Fehlerantworten zurückgegeben haben, mit Antwortcodes zwischen 500 und 599. Diese Metrik wird für UI-Canaries gemeldet, die Laufzeitversion ` syn-nodejs-2.0` oder höher verwenden und wird für API-Canaries gemeldet, die Laufzeitversion `syn-nodejs-2.2` oder höher verwenden. Gültige Abmessungen: CanaryName, Browser Gültige Statistiken: Summe Einheiten: Anzahl  | 
|   `Duration`   |  Die Dauer des Canary-Laufs in Millisekunden. Gültige Abmessungen: CanaryName, Browser Gültige Statistik: Durchschnitt Einheiten: Millisekunden  | 
|   `DurationDryRun`   |  Die Dauer der DryRun Hinrichtungen.  Gültige Abmessungen: CanaryName, Browser Gültige Statistik: Durchschnitt Einheiten: Millisekunden  | 
|   `EphemeralStorageUsagePercent`   |  Der maximale Prozentsatz des verwendeten flüchtigen Speichers im Vergleich zum gesamten konfigurierten flüchtigen Speicher. Diese Metrik wird in Intervallen von 10 Sekunden erfasst.  | 
|   `Failed`   |  Die Anzahl der Canary-Läufe, die nicht ausgeführt werden konnten. Diese Fehler hängen mit dem Canary selbst zusammen. Gültige Abmessungen: CanaryName, Browser Gültige Statistiken: Summe Einheiten: Anzahl  | 
|   `Failed requests`   |  Die Anzahl der HTTP-Anforderungen, die vom Canary auf der Zielwebsite ausgeführt werden, die ohne Antwort fehlgeschlagen sind. Gültige Abmessungen: CanaryName, Browser Gültige Statistiken: Summe Einheiten: Anzahl  | 
|   `RetryCount`   |  De Anzahl der Fälle, wie oft Ihr Canary es erneut versucht hat. Diese Metrik wird nur angezeigt, wenn es Wiederholungen gibt. Gültige Abmessungen: CanaryName, Browser Gültige Statistiken: Summe Einheiten: Anzahl  | 
|   `SuccessPercent`   |  Der Prozentsatz der Abläufe dieses Canarys, die erfolgreich sind und keine Fehler finden. Gültige Abmessungen: CanaryName, Browser Gültige Statistik: Durchschnitt Einheiten: Prozent  | 
|   `SuccessPercentDryRun`   |  Der Prozentsatz der erfolgreichen DryRun Ausführungen. Gültige Abmessungen: CanaryName, Browser Gültige Statistik: Durchschnitt Einheiten: Prozent  | 
|   `SuccessPercentWithRetries`   |  Der Prozentsatz der Ausführungen dieses Canarys, die nach allen Versuchen erfolgreich sind. Gültige Abmessungen: CanaryName, Browser Gültige Statistik: Durchschnitt Einheiten: Prozent  | 
|   `VisualMonitoringSuccessPercent`   |  Der Prozentsatz der visuellen Vergleiche, die während eines Canarylaufs erfolgreich mit den Grundlinien-Screenshots übereinstimmten. Gültige Abmessungen: CanaryName, Browser Gültige Statistik: Durchschnitt Einheiten: Prozent  | 
|   `VisualMonitoringTotalComparisons`   |  Die Gesamtzahl der visuellen Vergleiche, die während eines Canarylaufs aufgetreten sind. Gültige Abmessungen: CanaryName, Browser Einheiten: Anzahl  | 

**Anmerkung**  
Canaries, die entweder die `executeStep()`- oder die `executeHttpStep()`-Methode aus der Synthetics-Bibliothek verwenden, veröffentlichen auch `SuccessPercent`- und ` Duration`-Metriken mit den Dimensionen `CanaryName` und `StepName` für jeden Schritt.

 

# Einen Canary bearbeiten oder löschen
<a name="synthetics_canaries_deletion"></a>

Sie können einen vorhandenen Canary bearbeiten oder löschen.

 **Canary bearbeiten** 

Wenn Sie einen Canary bearbeiten, wird der Zeitplan entsprechend zurückgesetzt, wenn Sie den Canary bearbeiten. Wenn Sie beispielsweise einen Canary haben, der jede Stunde läuft, und Sie diesen Canary bearbeiten, wird der Canary sofort nach Abschluss der Bearbeitung und dann jede Stunde danach ausgeführt.

**So bearbeiten oder aktualisieren Sie einen Canary**

1. Öffnen Sie die CloudWatch Konsole unter [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Wählen Sie im Navigationsbereich **Application Signals**, **Synthetics-Canarys** aus.

1. Klicken Sie auf die Schaltfläche neben dem Canary-Namen und wählen Sie **Aktionen**, **Bearbeiten**.

1. (Optional) Wenn dieser Canary eine visuelle Überwachung von Screenshots durchführt und Sie den nächsten Lauf des Canary als Basislinie festlegen möchten, wählen Sie **Nächsten Lauf als neue Basislinie festlegen** aus.

1. (Optional) Wenn dieser Canary eine visuelle Überwachung von Screenshots durchführt und Sie einen Screenshot aus der visuellen Überwachung entfernen oder Teile des Screenshots festlegen möchten, die bei visuellen Vergleichen ignoriert werden sollen, wählen Sie unter **Visuelle Überwachung** die Option **Basislinie bearbeiten**.

   Der Screenshot wird angezeigt, und Sie können einen der folgenden Schritte ausführen:
   + Um die Verwendung des Screenshots für die visuelle Überwachung zu entfernen, wählen Sie **Screenshot von der visuellen Testbasislinie entfernen**.
   + Um Teile des Screenshots festzulegen, die bei visuellen Vergleichen ignoriert werden sollen, klicken und ziehen, um Bereiche des Bildschirms zu zeichnen, die ignoriert werden sollen. Wenn Sie dies für alle Bereiche getan haben, die Sie bei Vergleichen ignorieren möchten, wählen Sie **Speichern**.

1. Wählen Sie unter **Skripteditor**, **Laufzeitversion** eine Synthetics-Laufzeitversion aus, um den Canary auszuführen. Informationen zu Synthetics-Laufzeitversionen finden Sie unter [Synthetics-Laufzeitversionen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library.html).

   Unter **Browserkonfiguration** können Sie den Browser zum Testen des Canary aktivieren. Sie müssen mindestens einen Browser auswählen.

1. Nehmen Sie alle anderen gewünschten Änderungen am Canary vor und wählen Sie **Speichern**.

 **Canary löschen** 

Wenn Sie ein Canary löschen, können Sie wählen, ob Sie auch andere Ressourcen löschen möchten, die vom Canary verwendet und erstellt wurden. Wenn das `ProvisionedResourceCleanup` Feld des Canary auf ` AUTOMATIC` oder so eingestellt `DeleteLambda` ist, wie `true` Sie den Canary löschen, löscht CloudWatch Synthetics automatisch die Lambda-Funktionen und -Layer, die vom Canary verwendet werden.

Wenn Sie ein Canary löschen, sollten Sie auch die folgenden Elemente löschen:
+ Lambda-Funktionen und -Ebenen, die von diesem Canary verwendet wurden. Ihr Präfix ist `cwsyn- MyCanaryName`.
+ CloudWatch Alarme, die für diesen Canary erstellt wurden. Diese Alarme haben einen Namen, der mit ` Synthetics-Alarm-MyCanaryName` beginnt. Weitere Informationen zum Löschen von Alarmen finden Sie unter [Einen CloudWatch Alarm bearbeiten oder löschen](Edit-CloudWatch-Alarm.md).
+ Amazon-S3-Objekte und -Buckets, z. B. den Speicherort der Ergebnisse und Artefakte des Canarys
+ IAM-Rollen, die für das Canary erstellt wurden. Diese haben den Namen ` role/service-role/CloudWatchSyntheticsRole-MyCanaryName`. 
+ Gruppen in CloudWatch Logs protokollieren, die für den Canary erstellt wurden. Diese Protokollgruppen haben die folgenden Namen:`/aws/lambda/cwsyn-MyCanaryName-randomId`. 

Bevor Sie ein Canary löschen, empfiehlt es sich, sich die Details zum Canary anzeigen zu lassen und diese Informationen zu notieren. Auf diese Weise können Sie die richtigen Ressourcen löschen, nachdem Sie Canary gelöscht haben.

**So löschen Sie Canarys**

1. Öffnen Sie die CloudWatch Konsole unter [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Wählen Sie im Navigationsbereich **Application Signals**, **Synthetics-Canarys** aus.

1. Wenn der Canary sich derzeit im Status `RUNNING` befindet, müssen Sie ihn anhalten. Canarys können nur in folgenden Status gelöscht werden: `STOPPED`, `READY(NOT_STARTED)` oder `ERROR`.

   Um den Canary zu beenden, klicken Sie auf die Schaltfläche neben dem Canary-Namen und wählen Sie **Aktionen**, **Stopp**.

1. Klicke auf die Schaltfläche neben dem Canary-Namen und wähle „**Aktionen**“, „**Löschen“**.

1. Wählen Sie aus, ob Sie auch die anderen Ressourcen löschen möchten, die für den Canary erstellt und verwendet werden. Lambda-Funktionen und -Schichten werden zusammen mit dem Canary gelöscht. Sie können jedoch auch die IAM-Rolle und die IAM-Richtlinie des Canarys löschen.

   Geben Sie **Delete** in das Feld ein und wählen Sie **Löschen**.

1. Löschen Sie die anderen Ressourcen, die von dem Canary verwendet und für ihn erstellt wurden, wie oben in diesem Abschnitt aufgeführt.

# Laufzeit für mehrere Canary starten, stoppen, löschen oder aktualisieren
<a name="synthetics_canaries_multi-action"></a>

Sie können die Laufzeit von bis zu fünf Canary mit einer Aktion stoppen, starten, löschen oder aktualisieren. Wenn Sie die Laufzeit eines Canary aktualisieren, wird diese auf die neueste Laufzeit aktualisiert, die für die Sprache und das Framework verfügbar ist, die der Canary verwendet.

Wenn Sie mehrere Canary auswählen und sich nur einige von ihnen in einem Zustand befinden, der für die von Ihnen gewählte Aktion gültig ist, wird die Aktion nur auf den Canary ausgeführt, für die diese Aktion gültig ist. Wenn Sie beispielsweise einige Canary auswählen, die gerade laufen, und einige, die nicht laufen, und Sie wählen, dass die Canary gestartet werden, werden die Canary, die noch nicht laufen, gestartet, und die Canary, die bereits laufen, sind davon nicht betroffen.

Wenn keiner der ausgewählten Canary für eine Aktion gültig ist, ist diese Aktion nicht im Menü verfügbar.

1. Öffnen Sie die CloudWatch Konsole unter. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)

1. Wählen Sie im Navigationsbereich **Application Signals**, **Synthetics-Canarys** aus.

1. Aktivieren Sie die Kontrollkästchen neben den Canary, die Sie anhalten, starten oder löschen möchten.

1. Wählen Sie **Aktionen** und dann entweder **Start**, **Stopp**, **Löschen**, **Testlauf starten** oder **Laufzeit aktualisieren**.

   Wenn Sie **Laufzeit aktualisieren** wählen, können Sie außerdem festlegen, dass das Laufzeit-Update zunächst probeweise ausgeführt wird, bevor Sie die Änderung übernehmen.

# Überwachung kanarischer Ereignisse mit Amazon EventBridge
<a name="monitoring-events-eventbridge"></a>

Die EventBridge Amazon-Veranstaltungsregeln können Sie benachrichtigen, wenn sich der Status der Kanaren ändert oder Läufe abgeschlossen werden. EventBridgeliefert eine Reihe near-real-time von Systemereignissen, die Änderungen an AWS Ressourcen beschreiben. CloudWatch Synthetics sendet diese Ereignisse nach EventBridge *bestem Wissen und Gewissen an*. Lieferung nach bestem Wissen bedeutet, dass CloudWatch Synthetics versucht, alle Ereignisse an zu senden EventBridge, aber in einigen seltenen Fällen kann es vorkommen, dass eine Veranstaltung nicht zugestellt wird. EventBridge verarbeitet alle empfangenen Ereignisse mindestens einmal. Außerdem empfangen Ihre Ereignis-Listener die Ereignisse möglicherweise nicht in der Reihenfolge, in der die Ereignisse aufgetreten sind.

**Anmerkung**  
Amazon EventBridge ist ein Event-Bus-Service, mit dem Sie Ihre Anwendungen mit Daten aus einer Vielzahl von Quellen verbinden können. Weitere Informationen finden Sie unter [Was ist Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) im * EventBridge Amazon-Benutzerhandbuch*.

CloudWatch Synthetics gibt ein Ereignis aus, wenn ein Canary seinen Status ändert oder einen Lauf abschließt. Sie können eine EventBridge Regel erstellen, die ein Ereignismuster enthält, das allen von CloudWatch Synthetics gesendeten Ereignistypen entspricht, oder die nur bestimmten Ereignistypen entspricht. Wenn ein Canary eine Regel auslöst, EventBridge ruft er die in der Regel definierten Zielaktionen auf. Auf diese Weise können Sie als Reaktion auf eine Canary-Statusänderung oder den Abschluss eines Canary-Laufs Benachrichtigungen senden, Ereignisinformationen erfassen und Korrekturmaßnahmen ergreifen. Sie können beispielsweise Regeln für die folgenden Anwendungsfälle erstellen:
+ Untersuchen, wenn ein Canary-Lauf fehlschlägt
+ Untersuchen, wann ein Canary in den `ERROR`-Zustand gegangen ist
+ Den Lebenszyklus eines Canarys verfolgen
+ Überwachen des Erfolgs oder Misserfolgs von Canary-Läufen als Teil eines Workflows

## Beispielereignisse von CloudWatch Synthetics
<a name="synthetics-event-examples"></a>

In diesem Abschnitt sind Beispielereignisse von CloudWatch Synthetics aufgeführt. Weitere Informationen zum Ereignisformat finden Sie unter [Ereignisse und Ereignismuster in EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html). 

 **Canary-Statusänderung** 

Bei diesem Ereignistyp können die Werte von `current-state` und `previous-state` die folgenden sein:

`CREATING` \$1 `READY` \$1 `STARTING` \$1 `RUNNING` \$1 `UPDATING` \$1 `STOPPING` \$1 `STOPPED` \$1 `ERROR`

```
{
                "version": "0",
                "id": "8a99ca10-1e97-2302-2d64-316c5dedfd61",
                "detail-type": "Synthetics Canary Status Change",
                "source": "aws.synthetics",
                "account": "123456789012",
                "time": "2021-02-09T22:19:43Z",
                "region": "us-east-1",
                "resources": [],
                "detail": {
                                "account-id": "123456789012",
                                "canary-id": "EXAMPLE-dc5a-4f5f-96d1-989b75a94226",
                                "canary-name": "events-bb-1",
                                "current-state": "STOPPED",
                                "previous-state": "UPDATING",
                                "source-location": "NULL",
                                "updated-on": 1612909161.767,
                                "changed-config": {
                                                "executionArn": {
                                                                "previous-value": "arn:aws:lambda:us-east-1:123456789012:function:cwsyn-events-bb-1-af3e3a05-dc5a-4f5f-96d1-989EXAMPLE:1",
                                                                "current-value": "arn:aws:lambda:us-east-1:123456789012:function:cwsyn-events-bb-1-af3e3a05-dc5a-4f5f-96d1-989EXAMPLE:2"
                                                },
                                                "vpcId": {
                                                                "current-value": "NULL"
                                                },
                                                "testCodeLayerVersionArn": {
                                                                "previous-value": "arn:aws:lambda:us-east-1:123456789012:layer:cwsyn-events-bb-1-af3e3a05-dc5a-4f5f-96d1-989EXAMPLE:1",
                                                                "current-value": "arn:aws:lambda:us-east-1:123456789012:layer:cwsyn-events-bb-1-af3e3a05-dc5a-4f5f-96d1-989EXAMPLE:2"
                                                }
                                },
                                "message": "Canary status has changed"
                }
}
```

 **Erfolgreiche Canary-Ausführung abgeschlossen** 

```
{
                "version": "0",
                "id": "989EXAMPLE-f4a5-57a7-1a8f-d9cc768a1375",
                "detail-type": "Synthetics Canary TestRun Successful",
                "source": "aws.synthetics",
                "account": "123456789012",
                "time": "2021-02-09T22:24:01Z",
                "region": "us-east-1",
                "resources": [],
                "detail": {
                                "account-id": "123456789012",
                                "canary-id": "989EXAMPLE-dc5a-4f5f-96d1-989b75a94226",
                                "canary-name": "events-bb-1",
                                "canary-run-id": "c6c39152-8f4a-471c-9810-989EXAMPLE",
                                "artifact-location": "cw-syn-results-123456789012-us-east-1/canary/us-east-1/events-bb-1-ec3-28ddbe266797/2021/02/09/22/23-41-200",
                                "test-run-status": "PASSED",
                                "state-reason": "null",
                                "canary-run-timeline": {
                                                "started": 1612909421,
                                                "completed": 1612909441
                                },
                                "message": "Test run result is generated successfully"
                }
}
```

 **Fehlerhafte Canary-Ausführung abgeschlossen** 

```
{
                "version": "0",
                "id": "2644b18f-3e67-5ebf-cdfd-bf9f91392f41",
                "detail-type": "Synthetics Canary TestRun Failure",
                "source": "aws.synthetics",
                "account": "123456789012",
                "time": "2021-02-09T22:24:27Z",
                "region": "us-east-1",
                "resources": [],
                "detail": {
                                "account-id": "123456789012",
                                "canary-id": "af3e3a05-dc5a-4f5f-96d1-9989EXAMPLE",
                                "canary-name": "events-bb-1",
                                "canary-run-id": "0df3823e-7e33-4da1-8194-b04e4d4a2bf6",
                                "artifact-location": "cw-syn-results-123456789012-us-east-1/canary/us-east-1/events-bb-1-ec3-989EXAMPLE/2021/02/09/22/24-21-275",
                                "test-run-status": "FAILED",
                                "state-reason": "\"Error: net::ERR_NAME_NOT_RESOLVED \""
                                "canary-run-timeline": {
                                                "started": 1612909461,
                                                "completed": 1612909467
                                },
                                "message": "Test run result is generated successfully"
                }
}
```

Es ist möglich, dass Ereignisse doppelt sind oder nicht in der richtigen Reihenfolge werden. Um die Reihenfolge der Ereignisse zu bestimmen, verwenden Sie die `time`-Eigenschaft.

## Voraussetzungen für die Erstellung von EventBridge Regeln
<a name="create-events-rule-prereqs"></a>

Bevor Sie eine EventBridge Regel für CloudWatch Synthetics erstellen, sollten Sie Folgendes tun:
+ Machen Sie sich mit Ereignissen, Regeln und Zielen in EventBridge vertraut.
+ Erstellen und konfigurieren Sie die Ziele, die durch Ihre EventBridge Regeln aufgerufen werden. Regeln können viele Arten von Zielen aufrufen, einschließlich:
  + Amazon-SNS-Themen
  + AWS Lambda Funktionen
  + Kinesis-Streams
  + Amazon-SQS-Warteschlangen

Weitere Informationen finden Sie unter [Was ist Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) und [Erste Schritte mit Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-getting-set-up.html) im * EventBridge Amazon-Benutzerhandbuch*.

## EventBridge Regel erstellen (CLI)
<a name="create-events-rule-cli"></a>

Mit den Schritten im folgenden Beispiel wird eine EventBridge Regel erstellt, die ein Amazon SNS SNS-Thema veröffentlicht, wenn der angegebene `my-canary-name` Canary eine Ausführung `us-east-1` abschließt oder seinen Status ändert.

1. Erstellen Sie die Regel.

   ```
   aws events put-rule \
     --name TestRule \
     --region us-east-1 \ 
     --event-pattern "{\"source\": [\"aws.synthetics\"], \"detail\": {\"canary-name\": [\"my-canary-name\"]}}"
   ```

   Alle Eigenschaften, die Sie im Muster auslassen, werden ignoriert.

1. Fügen Sie das Thema als Regelziel hinzu.
   + *topic-arn*Ersetzen Sie es durch den Amazon-Ressourcennamen (ARN) Ihres Amazon SNS-Themas.

   ```
   aws events put-targets \
     --rule TestRule \
     --targets "Id"="1","Arn"="topic-arn"
   ```
**Anmerkung**  
Damit Amazon EventBridge Ihr Zielthema aufrufen kann, müssen Sie Ihrem Thema eine ressourcenbasierte Richtlinie hinzufügen. Weitere Informationen finden Sie unter [Amazon SNS SNS-Berechtigungen](https://docs.aws.amazon.com/eventbridge/latest/userguide/resource-based-policies-eventbridge.html#sns-permissions) im * EventBridge Amazon-Benutzerhandbuch*.

Weitere Informationen finden Sie unter [Ereignisse und Ereignismuster EventBridge im EventBridge ](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html) *Amazon-Benutzerhandbuch*.

# Durchführen sicherer Canary-Updates
<a name="performing-safe-canary-upgrades"></a>

CloudWatch Synthetics Safe Canary Updates ermöglicht es Ihnen, die Updates auf Ihren vorhandenen Canaries zu testen, bevor Sie die Änderungen anwenden. Mit diesem Feature können Sie die Kompatibilität von Canary mit neuen Laufzeiten und anderen Konfigurationsänderungen wie Code- oder Speicheränderungen überprüfen. Auf diese Weise können potenzielle Unterbrechungen der Überwachung, die durch fehlerhafte Updates verursacht werden, minimiert werden.

Indem Sie Canary-Safe-Updates für Updates von Laufzeitversionen, Konfigurationsänderungen und Codeskriptänderungen verwenden, können Sie Risiken minimieren, eine unterbrechungsfreie Überwachung aufrechterhalten, die Änderungen vor der Übernahme überprüfen, aktualisieren und Ausfallzeiten reduzieren.

**Topics**
+ [Voraussetzungen](#performing-safe-canary-upgrades-prereq)
+ [Best Practices](#performing-safe-canary-upgrades-best-practices)
+ [Testen von Canary mit Testlauf](#performing-safe-canary-upgrades-getting-started)
+ [Einschränkungen](#performing-safe-canary-upgrades-limitations)

## Voraussetzungen
<a name="performing-safe-canary-upgrades-prereq"></a>

Stellen Sie sicher, dass die Voraussetzungen erfüllt sind.
+ AWS Konto mit Synthetics-Berechtigungen CloudWatch 
+ Bestehender Canary auf den unterstützten Laufzeitversionen (Informationen zu kompatiblen Laufzeiten unter [Einschränkungen](#performing-safe-canary-upgrades-limitations))
+ Schließe kompatible Laufzeiten ein, wenn du einen Probelauf durchführst (Informationen zu kompatiblen Laufzeiten findest du unter [Einschränkungen](#performing-safe-canary-upgrades-limitations))

## Best Practices
<a name="performing-safe-canary-upgrades-best-practices"></a>

Im Folgenden finden Sie einige bewährte Methoden für die Durchführung eines Canarys.
+ Führen Sie einen Probelauf aus, um ein Laufzeit-Update zu validieren
+ Führen Sie Probeläufe durch, bevor Sie Produktions-Updates auf Canary durchführen
+ Überprüfen Sie Canary-Protokolle und Artefakte nach einem Testlauf
+ Verwenden Sie Testläufe, um Abhängigkeiten und Bibliothekskompatibilität zu überprüfen

## Testen von Canary mit Testlauf
<a name="performing-safe-canary-upgrades-getting-started"></a>

Sie können das Canary-Update mit den folgenden Optionen testen:

 **Verwenden des Workflows „ AWS-Managementkonsole's Edit“** 

1. Gehen Sie zur CloudWatch Synthetics-Konsole.

1. Wählen Sie den Canary aus, den Sie aktualisieren möchten.

1. Wählen Sie im Dropdown-Menü **Aktionen** die Option **Bearbeiten** aus.

   Aktualisieren Sie den Canary mit den Änderungen, die Sie testen möchten. Zum Beispiel die Änderung der Laufzeitversion oder die Bearbeitung des Codes des Skripts.

1. Wählen Sie unter **Canary-Skript** die Option **Testlauf starten**, um den Test sofort auszuführen und die Ergebnisse anzusehen, oder wählen Sie unten auf der Seite die Option **Validieren und später speichern**, um den Test zu starten und die Ergebnisse später auf Ihrer **Canary-Detailseite** anzusehen.

1. Wenn der Testlauf erfolgreich war, wählen Sie **Senden** aus, um Ihre Canary-Updates zu übernehmen.

 **Verwenden Sie das, AWS-Managementkonsole um die Kanaren stapelweise zu aktualisieren** 

1. Gehe zur CloudWatch Synthetics-Konsole.

1. Wählen Sie die Listenseite **Synthetics** aus.

1. Wählen Sie bis zu fünf Canarys aus, für die Sie die Laufzeit aktualisieren möchten.

1. Wählen Sie im Dropdown-Menü **Aktionen** die Option **Laufzeit aktualisieren** aus.

1. Wählen Sie **Testlauf für neue Laufzeit starten**, um den Testlauf zu starten und Ihre Änderungen vor einem Update zu testen.

1. Auf der **Synthetics-Listenseite** siehst du neben der **Runtime-Version** für den Canary einen Text, der den Fortschritt des Testlaufs anzeigt (dieser wird nur bei Testläufen angezeigt, die ein Runtime-Update beinhalten).

   Sobald der Testlauf erfolgreich war, wird der Text **Update initiieren** angezeigt.

1. Wählen Sie **Update initiieren**, um das Laufzeit-Update zu übernehmen.

1. Wenn der Testlauf fehlschlägt, wird der Text **Aktualisieren-Testlauf fehlgeschlagen** angezeigt. Wählen Sie den Text aus, um den Debug-Link zur Canary-Detailseite anzuzeigen.

 **Verwenden der AWS CLI oder des SDK** 

Die API startet den Testlauf für den angegebenen Canary-Namen `MyCanary` und aktualisiert die Laufzeit-Version auf `syn-nodejs-puppeteer-10.0`.

```
aws synthetics start-canary-dry-run \
    --name MyCanary \
    --runtime-version syn-nodejs-puppeteer-10.0
      
      // Or if you wanted to update other configurations:

aws synthetics start-canary-dry-run \
    --name MyCanary \
    --execution-role-arn arn:aws:iam::123456789012:role/NewRole
```

Die API gibt das `DryRunId` Innere von zurück`DryRunConfigOutput`.

Rufen Sie `GetCanary` mit der angegebenen `DryRunId` auf, um die Testlaufkonfigurationen des Canary sowie ein zusätzliches Feld `DryRunConfig` zu erhalten, das den Status des Testlaufs enthält, der als `LastDryRunExecutionStatus` aufgeführt ist.

```
aws synthetics get-canary \
    --name MyCanary \
    --dry-run-id XXXX-XXXX-XXXX-XXXX
```

Nutzen Sie für weitere Informationen `GetCanaryRuns` mit der bereitgestellten `DryRunId`, um die Ausführung und weitere Informationen abzurufen.

```
aws synthetics get-canary-runs \
    --name MyCanary \
    --dry-run-id XXXX-XXXX-XXXX-XXXX
```

Nach einem erfolgreichen Testlauf können Sie dann über `UpdateCanary` mit der bereitgestellten ` DryRunId` Ihre Änderungen übernehmen.

```
aws synthetics update-canary \
    --name MyCanary \
    --dry-run-id XXXX-XXXX-XXXX-XXXX
```

Wenn es aus irgendeinem Grund fehlschlägt (das Ergebnis von GetCanaryRuns enthält die Details), `GetCanaryRuns` hat das Ergebnis von einen Artefaktspeicherort, der Protokolle zum Debuggen enthält. Wenn keine Protokolle vorhanden sind, konnte der Testlauf nicht erstellt werden. Sie können dies über ` GetCanary` überprüfen.

```
aws synthetics get-canary \
    --name MyCanary \
    --dry-run-id XXXX-XXXX-XXXX-XXXX
```

Der *Status *StateReason**, und * StateReasonCode*zeigt den Status des Probelaufs an.

 **Verwenden CloudFormation** 

Geben Sie in Ihrer Vorlage für einen Synthetics Canary das Feld `DryRunAndUpdate` an, das den booleschen Wert `true` oder `false` akzeptiert.

wenn der Wert `true` ist, führt jedes Update einen Testlauf durch, um die Änderungen zu validieren, bevor der Canary automatisch aktualisiert wird. Wenn der Probelauf fehlschlägt, führt der Canary kein Update durch und schlägt die Bereitstellung und CloudFormation Bereitstellung mit einem triftigen Grund fehl. Um dieses Problem zu beheben, verwenden Sie die [AWS -Synthetics-Konsole](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Troubleshoot.html). Falls Sie eine API verwenden, rufen Sie die `ArtifactS3Location` über `GetCanaryRuns` ab und laden Sie die `*-log.txt`-Dateien herunter, um die Canary-Protokoll-Ausführungen auf Fehler zu überprüfen. Ändern Sie nach der Validierung die CloudFormation Vorlage und wiederholen Sie die Bereitstellung oder verwenden Sie die obige API zur Validierung.

Wenn der Wert `false` ist, führt Synthetics keinen Testlauf durch, um die Änderungen zu validieren, sondern überträgt Ihre Updates direkt.

Weitere Informationen zur Fehlerbehebung eines fehlgeschlagenen Canary finden Sie unter [Problembehandlung bei fehlgeschlagenem Canary](CloudWatch_Synthetics_Canaries_Troubleshoot.md).

Eine Beispielvorlage.

```
SyntheticsCanary:
    Type: 'AWS::Synthetics::Canary'
    Properties:
      Name: MyCanary
      RuntimeVersion: syn-nodejs-puppeteer-10.0
      Schedule: {Expression: 'rate(5 minutes)', DurationInSeconds: 3600}
      ...
      DryRunAndUpdate: true
```

## Einschränkungen
<a name="performing-safe-canary-upgrades-limitations"></a>
+ Unterstützt Runtime-Versionen — syn-nodejs-puppeteer -10.0\$1, syn-nodejs-playwright -2.0\$1, -5.1\$1 und syn-nodejs-3.0\$1 syn-python-selenium
+ Sie können jeweils nur einen Testlauf pro Canary ausführen
+ Wenn ein Testlauf fehlschlägt, können Sie den Canary nicht aktualisieren
+ Bei einem Testlauf können keine Änderungen im Feld **Zeitplan** getestet werden

**Anmerkung**  
Wenn Sie einen Testlauf mit Codeänderungen für einen Playwright-Canary starten und den Canary aktualisieren möchten, ohne die zugehörige `DryRunId` bereitzustellen, müssen Sie die Codeparameter explizit angeben.