

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.

# Benutzerdefinierter Domainname für öffentliches REST APIs in API Gateway
<a name="how-to-custom-domains"></a>

*Benutzerdefinierte Domainnamen* sind einfacher und intuitiver URLs und können Ihren API-Benutzern zur Verfügung gestellt werden.

Nach der Bereitstellung der API können Sie (und Ihre Kunden) die API mit der Standardstamm-URL im folgenden Format aufrufen: 

```
https://api-id.execute-api.region.amazonaws.com/stage
```

wobei von API Gateway generiert *api-id* wird, die AWS Region *region* *stage* ist und von Ihnen bei der Bereitstellung der API angegeben wird.

Der Hostname-Teil der URL (also `api-id.execute-api.region.amazonaws.com`) verweist auf einen API-Endpunkt. Der Standardname des API-Endpunkts wird zufällig generiert, ist schwer zu merken und nicht besonders benutzerfreundlich.

Mit benutzerdefinierten Domainnamen können Sie den Hostnamen Ihrer API einrichten und einen Basispfad (z. B. `myservice`) auswählen, um die alternative URL Ihrer API zuzuweisen. Eine benutzerfreundlichere API-Basis-URL kann dann folgendermaßen aussehen:

```
https://api.example.com/myservice
```

**Anmerkung**  
Informationen zu benutzerdefinierten Domainnamen für private APIs Benutzer finden Sie unter[Benutzerdefinierte Domainnamen für private Zwecke APIs in API Gateway](apigateway-private-custom-domains.md).

## Überlegungen
<a name="custom-domain-considerations"></a>

Die folgenden Überlegungen können sich auf Ihre Verwendung eines benutzerdefinierten Domainnamens auswirken:
+ Sie können den Standardendpunkt Ihrer API deaktivieren. Clients können weiterhin eine Verbindung mit Ihrem Standardendpunkt herstellen, erhalten jedoch einen `403 Forbidden`-Statuscode.
+ Ein regionaler benutzerdefinierter Domainname kann mit REST APIs und HTTP verknüpft werden APIs. Sie können [API Gateway Version 2](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/api-reference.html) verwenden APIs, um regionale benutzerdefinierte Domainnamen für REST zu erstellen und zu verwalten APIs. 
+ Ein benutzerdefinierter Domainname muss innerhalb einer Region für alle AWS Konten eindeutig sein. 
+ Sie können Ihren benutzerdefinierten Domainnamen zwischen Edge-optimierten und regionalen Endpunkten migrieren, jedoch kann eine öffentliche benutzerdefinierte Domain nicht zu einem privaten benutzerdefinierten Domainnamen migriert werden.
+ Sie müssen den Ressourceneintrag Ihres DNS-Anbieters erstellen oder aktualisieren, bevor Sie ihn dem API-Endpunkt zuweisen können. Ohne diese Zuweisung können API-Anfragen, die an den benutzerdefinierten Domainnamen gerichtet sind, API Gateway nicht erreichen.
+ Mit einem Wildcard-Zertifikat können Sie eine nahezu unendliche Anzahl von Domainnamen unterstützen, ohne das Standardkontingent zu überschreiten. Weitere Informationen finden Sie unter [Benutzerdefinierte Domainnamen mit Platzhalter](#wildcard-custom-domain-names).
+ Sie können eine Sicherheitsrichtlinie für Ihren benutzerdefinierten Domainnamen auswählen. Weitere Informationen finden Sie unter [Wählen Sie eine Sicherheitsrichtlinie für Ihre benutzerdefinierte Domain in API Gateway](apigateway-custom-domain-tls-version.md).
+ Sie müssen einen regionalen benutzerdefinierten Domainnamen verwenden und die Sicherheitsrichtlinie TLS 1.2 anwenden, um API-Zuweisungen mit mehreren Ebenen zu konfigurieren.

## Voraussetzungen für benutzerdefinierte Domainnamen
<a name="how-to-custom-domains-prerequisites"></a>

Die folgenden Voraussetzungen gelten für die Erstellung eines öffentlichen oder privaten benutzerdefinierten Domainnamens. Informationen zu benutzerdefinierten Domainnamen für private APIs Zwecke finden Sie unter[Benutzerdefinierte Domainnamen für private Zwecke APIs in API Gateway](apigateway-private-custom-domains.md).

### Registrieren eines Domainnamens
<a name="custom-domain-names-register"></a>

Sie müssen über einen registrierten Internet-Domainnamen verfügen, um benutzerdefinierte Domainnamen für Ihre einrichten zu können APIs. Sie können Ihren Internet-Domainnamen über [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/) oder über einen Domain-Registrar Ihrer Wahl registrieren. Ihr benutzerdefinierter Domainname kann der Name einer Subdomain oder Root-Domain (Zonen-Apex) einer registrierten Internetdomain sein.

Ihr Domainname muss der [RFC 1035](https://tools.ietf.org/html/rfc1035#section-2.3.4)-Spezifikation entsprechen und darf maximal 63 Oktette pro Label und insgesamt 255 Oktette umfassen.

### Angeben des Zertifikats für benutzerdefinierte Domainnamen
<a name="custom-domain-names-certificates"></a>

Bevor Sie einen benutzerdefinierten Domainnamen für eine API einrichten, müssen Sie ein SSL/TLS Zertifikat in ACM bereithalten. Wenn ACM in der AWS Region, in der Sie Ihren benutzerdefinierten Domainnamen erstellen, nicht verfügbar ist, müssen Sie in dieser Region ein Zertifikat in API Gateway importieren.

Um ein SSL/TLS Zertifikat zu importieren, müssen Sie die Zertifizierungsstelle im PEM-Format SSL/TLS , ihren privaten Schlüssel und die Zertifikatskette für den benutzerdefinierten Domainnamen angeben.

Ein in ACM gespeichertes Zertifikat wird durch seinen ARN identifiziert. Mit von ACM ausgestellten Zertifikaten müssen Sie sich keine Sorgen machen, dass vertrauliche Zertifikatsdaten wie der private Schlüssel offengelegt werden. Um ein AWS verwaltetes Zertifikat für einen Domainnamen zu verwenden, verweisen Sie einfach auf dessen ARN. 

Wenn Ihre Anwendung Zertifikat-Pinning, manchmal auch SSL-Pinning genannt, verwendet, um ein ACM-Zertifikat anzuheften, kann die Anwendung nach der AWS Verlängerung des Zertifikats möglicherweise keine Verbindung zu Ihrer Domain herstellen. Weitere Informationen finden Sie unter [Probleme beim Zertifikats-Pinning](https://docs.aws.amazon.com/acm/latest/userguide/troubleshooting-pinning.html) im *AWS Certificate Manager -Benutzerhandbuch*.

## Benutzerdefinierte Domainnamen mit Platzhalter
<a name="wildcard-custom-domain-names"></a>

Mit benutzerdefinierten Platzhalter-Domainnamen können Sie eine nahezu unendliche Anzahl von Domainnamen unterstützen, ohne das [Standardkontingent](limits.md)zu überschreiten. Zum Beispiel könnten Sie jedem Ihrer Kunden einen eigenen Domainnamen geben, `customername.example.com`.

Um einen benutzerdefinierten Platzhalter-Domainnamen zu erstellen, geben Sie einen Platzhalter (`*`) als erste Subdomain eines benutzerdefinierten Domainnamen an, der alle möglichen Subdomains einer Root-Domain darstellt.

Der benutzerdefinierte Platzhalter-Domainname `*.example.com` erzeugt beispielsweise Subdomains wie `a.example.com`, `b.example.com` und `c.example.com`. Wenn Sie den benutzerdefinierten Platzhalter-Domainnamen erstellen, werden alle seine Subdomains entsprechend dem Routing-Modus des Platzhalter-Domainnamens weitergeleitet. Um Subdomains an andere weiterzuleiten APIs, können Sie einen der folgenden Schritte ausführen:
+ Verwenden Sie Routing-Regeln, um eingehende Anfragen APIs mithilfe des `Host` Headers `*.example.com` an ein anderes REST-Ziel weiterzuleiten. Weitere Informationen finden Sie unter [Beispiel 4: Routing-Regeln für Platzhalter-Domainnamen](rest-api-routing-rules-examples.md#rest-api-routing-rules-examples-rule-for-wildcard-domains). 
+ Einen eigenen Domainnamen für Subdomains erstellen, die zu einem anderen Endpunkt geleitet werden sollen. In einem einzigen AWS Konto können Sie `*.example.com` sowohl als auch haben`a.example.com`.

Sie können die Kontextvariablen `$context.domainName` und `$context.domainPrefix` verwenden, um den Domainnamen zu bestimmen, den ein Client für den Aufruf Ihrer API genutzt hat. Weitere Informationen zu Kontextvariablen finden Sie unter [Variablen für Datentransformationen für API Gateway](api-gateway-mapping-template-reference.md).

Um einen benutzerdefinierten Platzhalter-Domainnamen zu erstellen, müssen Sie ein von ACM ausgestelltes Zertifikat vorlegen, das entweder über die DNS- oder die E-Mail-Validierungsmethode validiert wurde.

**Anmerkung**  
Sie können keinen benutzerdefinierten Platzhalter-Domänennamen erstellen, wenn ein anderes AWS Konto einen benutzerdefinierten Domänennamen erstellt hat, der mit dem benutzerdefinierten Platzhalterdomänennamen in Konflikt steht. Wenn Konto A beispielsweise `a.example.com` erstellt hat, kann Konto B den Platzhalter-Domainnamen `*.example.com` nicht erstellen.  
Wenn Konto A und Konto B den gleichen Besitzer haben, können Sie sich an das [AWS -Support-Center](https://console.aws.amazon.com/support/home#/) wenden, um eine Ausnahme zu beantragen.

## Nächste Schritte für benutzerdefinierte Domainnamen
<a name="how-to-custom-domains-next-steps"></a>

Die folgenden Schritte können Sie als Nächstes für benutzerdefinierte Domainnamen ausführen:

**Nächste Schritte**
+ Informationen zum Einrichten Ihres SSL/TLS Zertifikats finden Sie unter. [Bereiten Sie Zertifikate vor in AWS Certificate Manager](how-to-specify-certificate-for-custom-domain-name.md)
+ Informationen zum Erstellen eines regionalen benutzerdefinierten Domainnamens finden Sie unter [Einrichten eines regionalen benutzerdefinierten Domainnamens in API Gateway](apigateway-regional-api-custom-domain-create.md).
+ Informationen zum Erstellen eines Edge-optimierten benutzerdefinierten Domainnamens finden Sie unter [Einrichten eines Edge-optimierten benutzerdefinierten Domainnamens in API Gateway](how-to-edge-optimized-custom-domain-name.md).
+ Informationen zur Migration zwischen regionalen und Edge-optimierten benutzerdefinierten Domainnamen finden Sie unter [Migrieren eines benutzerdefinierten Domainnamens in einen anderen API-Endpunkt in API Gateway](apigateway-regional-api-custom-domain-migrate.md).
+ Informationen zum Verbinden von API-Stufen mit einem benutzerdefinierten Domainnamen finden Sie unter [Senden Sie Traffic APIs über Ihren benutzerdefinierten Domainnamen in API Gateway an Sie](rest-api-routing-mode.md).
+ Informationen zur Auswahl einer Sicherheitsrichtlinie für Ihren benutzerdefinierten Domainnamen finden Sie unter [Wählen Sie eine Sicherheitsrichtlinie für Ihre benutzerdefinierte Domain in API Gateway](apigateway-custom-domain-tls-version.md).
+ Informationen zum Deaktivieren des Standardendpunkts für Ihren benutzerdefinierten Domainnamen finden Sie unter [Deaktivieren Sie den Standardendpunkt für REST APIs](rest-api-disable-default-endpoint.md).
+ Informationen zum Verwenden von Route-53-Zustandsprüfungen zur Steuerung des DNS-Failovers von einer API in API Gateway finden Sie unter [Konfigurieren benutzerdefinierter Zustandsprüfungen für das DNS-Failover einer API-Gateway-API](dns-failover.md).

Wenn Sie zum ersten Mal einen benutzerdefinierten Domainnamen erstellen, beginnen Sie am besten mit [Bereiten Sie Zertifikate vor in AWS Certificate Manager](how-to-specify-certificate-for-custom-domain-name.md), um Ihr Zertifikat anzugeben und fahren dann mit [Einrichten eines regionalen benutzerdefinierten Domainnamens in API Gateway](apigateway-regional-api-custom-domain-create.md) fort, um einen regionalen benutzerdefinierten Domainnamen zu erstellen. 

# Bereiten Sie Zertifikate vor in AWS Certificate Manager
<a name="how-to-specify-certificate-for-custom-domain-name"></a>

Bevor Sie einen benutzerdefinierten Domainnamen für eine API einrichten, muss in AWS Certificate Manager ein SSL/TLS-Zertifikat vorhanden sein. Weitere Informationen finden Sie im [AWS Certificate Manager -Benutzerhandbuch](https://docs.aws.amazon.com/acm/latest/userguide/).

## Überlegungen
<a name="how-to-specify-certificate-for-custom-domain-name-considerations"></a>

Im Folgenden finden Sie Hinweise zu Ihrem SSL/TLS Zertifikat.
+ Wenn Sie einen Edge-optimierten benutzerdefinierten Domainnamen erstellen, unterstützt API Gateway Zertifikate CloudFront für benutzerdefinierte Domainnamen. Daher werden die Anforderungen und Einschränkungen eines benutzerdefinierten SSL/TLS Domainnamenzertifikats von bestimmt. [CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html) Beispielsweise beträgt die maximale Länge des öffentlichen Schlüssels 2048 und die Länge des privaten Schlüssels 1024, 2048 und 4096. Die Länge des öffentlichen Schlüssels wird von der ausgewählten Zertifizierungsstelle bestimmt. Wenden Sie sich an Ihre Zertifizierungsstelle, um Schlüssel zurückzugeben, deren Länge vom Standard abweicht. Weitere Informationen finden Sie unter [Sicherer Zugriff auf Ihre Objekte](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html) und [Erstellen von signierten URLs und signierten Cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-trusted-signers.html).
+ Wenn Sie einen benutzerdefinierten regionalen Domainnamen erstellen, beträgt die maximale Größe des öffentlichen Schlüssels 2048.
+ Wenn Sie ein ACM-Zertifikat im Zusammenhang mit einem regionalen benutzerdefinierten Domainnamen verwenden möchten, müssen Sie das Zertifikat in der Region Ihrer API anfordern oder importieren. Das Zertifikat muss den benutzerdefinierten Domainnamen abdecken.
+  Wenn Sie ein ACM-Zertifikat im Zusammenhang mit einem Edge-optimierten benutzerdefinierten Domainnamen verwenden möchten, müssen Sie das Zertifikat in der `us-east-1`-Region (USA Ost (Nord-Virginia)) anfordern oder importieren.
+  Sie müssen einen registrierten Domainnamen haben, z. B. `example.com`. Sie können entweder [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/) oder einen anderen akkreditierten Domain-Registrar Ihrer Wahl verwenden. Eine Liste dieser Registrare finden Sie unter [Accredited Registrar Directory](https://www.icann.org/en/accredited-registrars) (Verzeichnis autorisierter Vergabestellen) auf der ICANN-Website. 

## Um ein SSL/TLS Zertifikat zu erstellen oder in ACM zu importieren
<a name="how-to-specify-certificate-for-custom-domain-name-setup"></a>

Die folgenden Verfahren zeigen, wie Sie ein SSL/TLS Zertifikat für einen Domainnamen erstellen oder importieren.

------
#### [ To request a certificate provided by ACM for a domain name ]

1. Melden Sie sich bei der [AWS Certificate Manager -Konsole](https://console.aws.amazon.com/acm) an.

1. Wählen Sie **Ein privates Zertifikat anfordern** aus.

1. Klicken Sie unter **Zertifikatstyp** auf **Ein öffentliches Zertifikat anfordern**.

1. Wählen Sie **Weiter** aus.

1. Geben Sie unter **Vollständig qualifizierter Domänenname** einen benutzerdefinierten Domainnamen für Ihre API ein, z. B. `api.example.com`.

1. Wählen Sie optional **Fügen Sie diesem Zertifikat einen weiteren Namen hinzu**.

1. Wählen Sie unter **Validierungsmethode** eine Methode zur Überprüfung des Domaineigentümers aus.

1. Wählen Sie unter **Schlüsselalgorithmus** einen Verschlüsselungsalgorithmus aus.

1. Wählen Sie **Anfrage** aus.

1. Damit eine Anforderung gültig ist, muss der registrierte Besitzer einer Internet-Domain der Anforderung vor der Ausstellung des Zertifikats durch ACM zustimmen. Wenn Sie Route 53 verwenden, um Ihre öffentlichen DNS-Einträge zu verwalten, können Sie Ihre Datensätze direkt über die ACM-Konsole aktualisieren.

------
#### [ To import into ACM a certificate for a domain name ]

1.  Holen Sie sich von einer Zertifizierungsstelle ein PEM-codiertes SSL/TLS Zertifikat für Ihren benutzerdefinierten Domainnamen. Eine unvollständige Liste dieser CAs Zertifikate finden Sie in der Liste der von [Mozilla mitgelieferten Zertifizierungsstellen.](https://ccadb.my.salesforce-sites.com/mozilla/IncludedCACertificateReport) 

   1. Erstellen Sie einen privaten Schlüssel für das Zertifikat und speichern Sie die Ausgabe in einer Datei. Verwenden Sie dazu das [OpenSSL](https://www.openssl.org)-Toolkit auf der OpenSSL-Website:

      ```
      openssl genrsa -out private-key-file 2048
      ```

   1. Erstellen Sie mithilfe von OpenSSL eine Zertifikatssignierungsanforderung (Certificate Signing Request, CSR) mit dem zuvor erstellten privaten Schlüssel:

      ```
      openssl req -new -sha256 -key private-key-file -out CSR-file
      ```

   1. Senden Sie die Zertifikatssignierungsanforderung an die Zertifizierungsstelle und speichern Sie das Zertifikat.

   1. Laden Sie die Zertifikatkette bei der Zertifizierungsstelle herunter.
**Anmerkung**  
 Wenn Ihnen der private Schlüssel auf andere Art bereitgestellt wird und er verschlüsselt ist, können Sie ihn mit dem folgenden Befehl entschlüsseln, bevor Sie ihn zur Einrichtung eines benutzerdefinierten Domainnamens an API Gateway senden.   

   ```
   openssl pkcs8 -topk8 -inform pem -in MyEncryptedKey.pem -outform pem -nocrypt -out MyDecryptedKey.pem
   ```

1. Laden Sie das Zertifikat hoch auf AWS Certificate Manager:

   1. Melden Sie sich an der [AWS Certificate Manager -Konsole](https://console.aws.amazon.com/acm) an.

   1. Wählen Sie **Ein Zertifikat importieren** aus.

   1. Geben Sie unter **Zertifikatstext** den Text des PEM-formatierten Serverzertifikats von Ihrer Zertifizierungsstelle ein. Im Folgenden sehen Sie ein verkürztes Beispiel eines solchen Zertifikats.

      ```
      -----BEGIN CERTIFICATE-----
      EXAMPLECA+KgAwIBAgIQJ1XxJ8Pl++gOfQtj0IBoqDANBgkqhkiG9w0BAQUFADBB
      ...
      az8Cg1aicxLBQ7EaWIhhgEXAMPLE
      -----END CERTIFICATE-----
      ```

   1. Geben Sie unter **Privater Schlüssel des Zertifikats** den privaten Schlüssel Ihres PEM-formatierten Zertifikats ein. Im Folgenden sehen Sie ein verkürztes Beispiel eines solchen Schlüssels. 

      ```
      -----BEGIN RSA PRIVATE KEY-----
      EXAMPLEBAAKCAQEA2Qb3LDHD7StY7Wj6U2/opV6Xu37qUCCkeDWhwpZMYJ9/nETO
      ...
      1qGvJ3u04vdnzaYN5WoyN5LFckrlA71+CszD1CGSqbVDWEXAMPLE
      -----END RSA PRIVATE KEY-----
      ```

   1. Geben Sie unter **Zertifikatkette** nacheinander und ohne Leerzeilen die PEM-formatierten Zwischenzertifikate und optional das Root-Zertifikat ein. Wenn Sie das Stammzertifikat eingeben, muss die Zertifikatkette mit Zwischenzertifikaten beginnen und mit dem Stammzertifikat enden. Verwenden Sie die von der Zertifizierungsstelle bereitgestellten Zwischenzertifikate. Verwenden Sie keine Zwischenzertifikate außerhalb der Vertrauenskette. Das folgende Beispiel zeigt ein verkürztes Beispiel. 

      ```
      -----BEGIN CERTIFICATE-----
      EXAMPLECA4ugAwIBAgIQWrYdrB5NogYUx1U9Pamy3DANBgkqhkiG9w0BAQUFADCB
      ...
      8/ifBlIK3se2e4/hEfcEejX/arxbx1BJCHBvlEPNnsdw8EXAMPLE
      -----END CERTIFICATE-----
      ```

      Im Folgenden ein weiteres Beispiel.

      ```
      -----BEGIN CERTIFICATE-----
      Intermediate certificate 2
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      Intermediate certificate 1
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      Optional: Root certificate
      -----END CERTIFICATE-----
      ```

   1. Klicken Sie auf **Weiter** und dann erneut auf **Weiter**.

------

Wenn das Zertifikat erfolgreich erstellt oder importiert wurde, notieren Sie seinen ARN. Diesen benötigen Sie für die Einrichtung des benutzerdefinierten Domainnamens.

# Einrichten eines regionalen benutzerdefinierten Domainnamens in API Gateway
<a name="apigateway-regional-api-custom-domain-create"></a>

Verwenden Sie einen benutzerdefinierten Domainnamen, um eine benutzerfreundliche API-Basis-URL zu erstellen. Mit einem regionalen benutzerdefinierten Domainnamen können Sie HTTP- und REST-API-Stufen demselben benutzerdefinierten Domainnamen zuweisen und gegenseitige TLS-Authentifizierung verwenden. 

## Überlegungen
<a name="regional-custom-domain-names"></a>

Im Folgenden finden Sie einige Überlegungen zu Ihrem regionalen benutzerdefinierten Domainnamen:
+ Die Bereitstellung eines regionenspezifischen ACM-Zertifikats ist erforderlich. Deses Zertifikat muss sich in derselben Region wie Ihre API befinden. Weitere Informationen zum Erstellen oder Hochladen eines benutzerdefinierten Domainnamen-Zertifikats finden Sie unter [Bereiten Sie Zertifikate vor in AWS Certificate Manager](how-to-specify-certificate-for-custom-domain-name.md).
+ Wenn Sie einen regionalen benutzerdefinierten Domainnamen mit einem ACM-Zertifikat erstellen, generiert API Gateway eine serviceverknüpfte Rolle in Ihrem Konto. Die serviceverknüpfte Rolle ist erforderlich, um Ihr ACM-Zertifikat Ihrem regionalen Endpunkt anzuhängen. Die Rolle wird benannt **AWSServiceRoleForAPIGateway**und die **APIGatewayServiceRolePolicy** verwaltete Richtlinie wird an sie angehängt. Weitere Informationen zur Verwendung von serviceverknüpften Rollen finden Sie unter [Verwenden von serviceverknüpften Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html).
+ Nachdem Sie Ihren regionalen benutzerdefinierten Domainnamen erstellt haben, müssen Sie einen DNS-Datensatz erstellen, der den benutzerdefinierten Domainnamen auf die regionale Domain verweist. Dadurch wird der Datenverkehr, der an den benutzerdefinierten Domainnamen gebunden ist, an den regionalen Hostnamen der API weitergeleitet.

  Der DNS-Datensatz kann entweder ein CNAME- oder ein A-Alias-Datensatz sein. Wenn Sie Route 53 als DNS-Anbieter verwenden, erstellen Sie einen A-Alias-Datensatz. Wenn Sie einen Drittanbieter-DNS-Dienst nutzen, verwenden Sie einen CNAME-Datensatz. Wenn Sie einen CNAME-Datensatz nutzen und einen Schnittstellen-VPC-Endpunkt für API Gateway mit aktiviertem privatem DNS für eine private API erstellen, können Sie den benutzerdefinierten Domainnamen innerhalb der VPC, die Ihre private API hostet, nicht auflösen. 

## Erstellen eines regionalen benutzerdefinierten Domainnamens
<a name="apigateway-regional-api-custom-domain-create-procedure"></a>

Im folgenden Verfahren wird das Erstellen eines regionalen benutzerdefinierten Domainnamens erläutert. Nach Abschluss des Verfahrens erstellen Sie eine Routing-Regel, um die Stufen Ihrer API Ihrem benutzerdefinierten Domainnamen zuzuordnen.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie **Benutzerdefinierte Domainnamen** im Hauptnavigationsbereich aus. 

1. Wählen Sie **Erstellen** aus.

1. Geben Sie für **Domänenname** einen Domainnamen ein.

1. Wählen Sie unter **Routing-Modus** die Option **Nur Routing-Regeln** aus.

   In diesem Routing-Modus können Sie nur mithilfe von Routing-Regeln Traffic von Ihrem benutzerdefinierten Domainnamen an Ihren APIs senden. Weitere Informationen finden Sie unter [Senden Sie Traffic APIs über Ihren benutzerdefinierten Domainnamen in API Gateway an Sie](rest-api-routing-mode.md).

1. Wählen Sie unter **Minimale TLS-Version** eine Version aus.

1. Wählen Sie unter **Endpunktkonfiguration** für **API-Endpunkttyp** die Option **Regional** aus.

1. Wählen Sie ein ACM-Zertifikat aus. Das Zertifikat muss sich in derselben Region wie die API befinden.

1. Wählen Sie **Erstellen** aus.

------
#### [ AWS CLI ]

Der folgende [create-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-domain-name.html)Befehl erstellt einen benutzerdefinierten Domainnamen:

```
aws apigatewayv2 create-domain-name \ 
    --domain-name 'regional.example.com' \
    --domain-name-configurations CertificateArn=arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678 \
    --routing-mode ROUTING_RULE_ONLY
```

Die Ausgabe sieht wie folgt aus:

```
{
    "ApiMappingSelectionExpression": "$request.basepath",
    "DomainName": "regional.example.com",
    "DomainNameConfigurations": [
        {
            "ApiGatewayDomainName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com",
            "CertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678",
            "DomainNameStatus": "AVAILABLE",
            "EndpointType": "REGIONAL",
            "HostedZoneId": "Z2OJLYMUO9EFXC",
            "SecurityPolicy": "TLS_1_2"
        }
        "RoutingMode": "ROUTING_RULE_ONLY"
    ]
}
```

Der Eigenschaftswert `DomainNameConfigurations` gibt den Hostnamen der regionalen API zurück. Sie müssen einen DNS-Datensatz erstellen, der Ihren benutzerdefinierten Domainnamen auf diesen regionalen Domainnamen verweist. Dadurch wird der an den benutzerdefinierten Domainnamen gebundene Datenverkehr an den Hostnamen dieser regionalen API weitergeleitet.

------

## Erstellen einer Routing-Regel für Ihren regionalen benutzerdefinierten Domainnamen
<a name="apigateway-regional-api-custom-domain-base-path-mapping"></a>

Nachdem Sie Ihren benutzerdefinierten Domainnamen erstellt haben, konfigurieren Sie, wie der Traffic von Ihrem benutzerdefinierten Domainnamen zu Ihrem APIs weitergeleitet wird. Da Sie den Routing-Modus auf eingestellt haben`ROUTING_RULE_ONLY`, verwenden Sie Routing-Regeln, um eingehende Anfragen an Ihren benutzerdefinierten Domainnamen an Ihren APIs weiterzuleiten.

In diesem Beispiel erstellen Sie eine Catch-All-Regel, die alle eingehenden Anfragen an Ihren benutzerdefinierten Domainnamen an eine Stufe Ihrer API weiterleitet. Sie können auch Routing-Regeln konfigurieren, die auf unterschiedlichen Header- und Pfadbedingungen basieren. Weitere Informationen finden Sie unter [Routing-Regeln zum Verbinden von API-Stufen mit einem benutzerdefinierten Domainnamen für REST APIs](rest-api-routing-rules.md).

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie einen benutzerdefinierten Domainnamen aus.

1. Wählen Sie auf der Registerkarte **Routing-Details** die Option **Routing-Regel hinzufügen** aus.

1. Wählen Sie **Neue Bedingung hinzufügen** aus, um eine neue Bedingung hinzuzufügen.

1. Belassen Sie diese Regel ohne Bedingungen. Dadurch werden alle Anfragen an Ihren benutzerdefinierten Domainnamen an Ihre Ziel-API und Zielstufe weitergeleitet.

1. Verwenden Sie für **Aktion** das Dropdown-Menü, um Ihre Ziel-API und Ihre Zielstufe auszuwählen.

1. Wählen Sie **Weiter** aus.

1. Geben Sie im Prioritätsfeld **100** ein.

   API Gateway wertet Regeln in der Reihenfolge der Priorität aus, ausgehend vom niedrigsten Wert bis hin zum höchsten Wert. Da es sich um eine Catch-All-Regel handelt, verwenden Sie eine hohe Priorität, damit API Gateway alle zusätzlichen Regeln, die Sie erstellen, zuerst abgleichen kann.

1. Wählen Sie **Routing-Regel erstellen** aus.

------
#### [ AWS CLI ]

Der folgende `create-routing-rule`-Befehl erstellt eine Auffang-Routing-Regel:

```
aws apigatewayv2 create-routing-rule \
  --domain-name 'regional.example.com' \
  --priority 100 \
  --conditions  \
  --actions '[{
    "InvokeApi": {
      "ApiId": "a1b2c3",
      "Stage": "prod"
    }
  }]'
```

------

Sie können den Routing-Modus jederzeit ändern und neue Regeln erstellen. Weitere Informationen finden Sie unter [Senden Sie Traffic APIs über Ihren benutzerdefinierten Domainnamen in API Gateway an Sie](rest-api-routing-mode.md).

## Erstellen eines DNS-Datensatzes für Ihren regionalen benutzerdefinierten Domainnamen
<a name="apigateway-regional-api-custom-domain-dns-record"></a>

Nachdem Sie den benutzerdefinierten Domainnamen und die Basispfadzuweisungen festgelegt haben, erstellen Sie einen DNS-Datensatz, der Ihren benutzerdefinierten Domainnamen auf den neu erstellten regionalen Domainnamen verweist.

------
#### [ AWS-Managementkonsole ]

Um das zu verwenden AWS-Managementkonsole, folgen Sie der Route 53-Dokumentation zur [Konfiguration von Route 53 für die Weiterleitung von Datenverkehr an API Gateway](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html).

------
#### [ AWS CLI ]

Wenn Sie Ihre DNS-Datensätze so konfigurieren möchten, dass der regionale benutzerdefinierte Domainname seinem Hostnamen in der ID der vorgegebenen gehosteten Zone zugewiesen wird, erstellen Sie zunächst eine JSON-Datei, die die Konfiguration für die Einrichtung eines DNS-Datensatzes für den regionalen Domainnamen enthält. 

Die folgende Datei `setup-dns-record.json` zeigt, wie Sie einen DNS-`A`-Datensatz erstellen, um einen regionalen benutzerdefinierten Domainnamen (`regional.example.com`) seinem regionalen Hostnamen (`d-numh1z56v6.execute-api.us-west-2.amazonaws.com`) zuweisen, der im Rahmen der benutzerdefinierten Domainnamenerstellung bereitgestellt wurde. Die Eigenschaften `DNSName` und `HostedZoneId` von `AliasTarget` können die Werte `regionalDomainName` und `regionalHostedZoneId` des benutzerdefinierten Domainnamens entsprechend annehmen. Sie können die Regional Route 53 Hosted Zone auch IDs in [Amazon API Gateway Endpoints and Quotas](https://docs.aws.amazon.com/general/latest/gr/apigateway.html) abrufen.

```
{
  "Changes": [
    {
      "Action": "CREATE",
      "ResourceRecordSet": {
        "Name": "regional.example.com",
        "Type": "A",
        "AliasTarget": {
          "DNSName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com",
          "HostedZoneId": "Z2OJLYMUO9EFXC",
          "EvaluateTargetHealth": false
        }
      }
    }
  ]
}
```

Im Folgenden [change-resource-record-sets](https://docs.aws.amazon.com/cli/latest/reference/route53/change-resource-record-sets.html)wird ein DNS-Eintrag für Ihren regionalen benutzerdefinierten Domainnamen erstellt:

```
aws route53 change-resource-record-sets \
    --hosted-zone-id Z2OJLYMUO9EFXC \
    --change-batch file://path/to/your/setup-dns-record.json
```

Ersetzen Sie die `hosted-zone-id` durch die Route-53-Hosted-Zone-ID des DNS-Datensatzes, die in Ihrem Konto eingerichtet wurde. Der `change-batch`-Parameterwert zeigt auf eine JSON-Datei (*setup-dns-record.json*) in einem Ordner (*path/to/your*).

------

# Einrichten eines Edge-optimierten benutzerdefinierten Domainnamens in API Gateway
<a name="how-to-edge-optimized-custom-domain-name"></a>

Wenn Sie einen benutzerdefinierten Domainnamen für eine Edge-optimierte API erstellen, richtet API Gateway eine CloudFront Verteilung und einen DNS-Eintrag ein, um den API-Domainnamen dem CloudFront Distributionsdomänennamen zuzuordnen. Anfragen für die API werden dann über die zugeordnete CloudFront Verteilung an API Gateway weitergeleitet. Diese Zuordnung ist für API-Anfragen vorgesehen, die daran gebunden sind, dass der benutzerdefinierte Domainname über die zugeordnete CloudFront Distribution an API Gateway weitergeleitet wird.

## Überlegungen
<a name="how-to-edge-optimized-custom-domain-name-considerations"></a>

Die folgenden Punkte sind für Ihren Edge-optimierten benutzerdefinierten Domainnamen zu beachten:
+  Um einen Edge-optimierten benutzerdefinierten Domainnamen einzurichten oder sein Zertifikat zu aktualisieren, benötigen Sie die Berechtigung, Distributionen zu aktualisieren. CloudFront 

  Die folgenden Berechtigungen sind erforderlich, um Distributionen zu aktualisieren: CloudFront 

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
           {
              "Sid": "AllowCloudFrontUpdateDistribution",
              "Effect": "Allow",
              "Action": [
                  "cloudfront:updateDistribution"
              ],
              "Resource": [
                  "*"
              ]
          }
      ]
  }
  ```

------
+ Sie müssen ein Zertifikat für Ihren Edge-optimierten benutzerdefinierten Domainnamen in der `us-east-1`-Region (USA Ost (Nord-Virginia)) anfordern oder importieren.
+ Die von API Gateway erstellte CloudFront Distribution gehört einem regionsspezifischen Konto, das mit API Gateway verbunden ist. Bei der Ablaufverfolgung von Vorgängen zur Erstellung und Aktualisierung einer solchen CloudFront Verteilung müssen Sie diese API Gateway Gateway-Konto-ID verwenden. CloudTrail Weitere Informationen finden Sie unter [Protokollieren Sie die Erstellung eines benutzerdefinierten Domainnamens CloudTrail](#how-to-custom-domain-log-cloudfront-distribution-update-in-cloudtrail).
+  API Gateway unterstützt Edge-optimierte benutzerdefinierte Domainnamen, indem es Server Name Indication (SNI) für die Verteilung nutzt. CloudFront Weitere Informationen zur Verwendung benutzerdefinierter Domainnamen in einer CloudFront Distribution, einschließlich des erforderlichen Zertifikatsformats und der maximalen Länge eines Zertifikatsschlüssels, finden Sie [unter Verwenden alternativer Domainnamen und HTTPS](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-alternate-domain-names.html) im *Amazon CloudFront Developer Guide*
+ Die Fertigstellung eines Edge-optimierten benutzerdefinierte Domainnamens dauert etwa 40 Minuten.
+ Nachdem Sie Ihren Edge-optimierten benutzerdefinierten Domainnamen erstellt haben, müssen Sie einen DNS-Eintrag erstellen, um den benutzerdefinierten Domainnamen dem CloudFront Distributionsnamen zuzuordnen.

## Erstellen eines Edge-optimierten benutzerdefinierten Domainnamens
<a name="how-to-custom-domains-console"></a>

Im folgenden Verfahren wird beschrieben, wie Sie einen benutzerdefinierten Domainnamen für eine API erstellen.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie **Benutzerdefinierte Domainnamen** im Hauptnavigationsbereich aus. 

1. Wählen Sie **Domainnamen hinzufügen** aus.

1. Geben Sie unter **Domänenname** einen Domainnamen ein.

1. **Wählen Sie für den **Routing-Modus \$1ONLY**. API\$1MAPPING**

1. Wählen Sie unter **API-Endpunkttyp** die Option **Edge-optimiert** aus.

1. Wählen Sie eine minimale TLS-Version aus.

1. Wählen Sie ein ACM-Zertifikat aus.

1. Klicken Sie auf **Domainnamen hinzufügen**.

------
#### [ REST API ]

1. Rufen Sie [domainname:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateDomainName.html) auf und geben Sie den benutzerdefinierten Domainnamen und den ARN eines in AWS Certificate Manager gespeicherten Zertifikats an.

    Der erfolgreiche API-Aufruf gibt eine `201 Created` Antwort zurück, die den Zertifikat-ARN sowie den zugehörigen CloudFront Distributionsnamen in der Nutzlast enthält.

1. Notieren Sie sich den Namen der CloudFront Distributionsdomäne, der in der Ausgabe angezeigt wird. Diesen benötigen Sie im nächsten Schritt, um das A-Datensatz-Aliasziel der benutzerdefinierten Domain in Ihrem DNS festzulegen.

Code-Beispiele für diesen REST-API-Aufruf finden Sie unter [domainname:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateDomainName.html).

------

Es dauert etwa 40 Minuten, bis ein Edge-optimierter benutzerdefinierter Domainname fertig ist. In der Konsole wird jedoch sofort der zugehörige CloudFront Distributionsdomänenname in der Form von `distribution-id.cloudfront.net` zusammen mit dem Zertifikat-ARN angezeigt. In der Zwischenzeit können Sie eine Basispfadzuweisung oder eine Routingregel erstellen und dann den DNS-Eintragsalias so konfigurieren, dass der benutzerdefinierte Domainname dem zugehörigen CloudFront Distributionsdomänennamen zugeordnet wird.

## Konfigurieren einer Basispfadzuweisung einer API mit einem benutzerdefinierten Domainnamen als Hostname
<a name="how-to-custom-domains-mapping-console"></a>

Da Sie den Routingmodus auf eingestellt haben`API_MAPPING_ONLY`, können Sie die Basispfadzuordnung verwenden, um einen einzelnen benutzerdefinierten Domainnamen als Hostnamen von mehreren APIs zu verwenden. So wird eine API mithilfe der Kombination aus benutzerdefiniertem Domainnamen und dem zugehörigen Basispfad zugänglich gemacht.

Wenn Sie beispielsweise eine API mit dem Namen `PetStore` und eine weitere mit dem Namen `Dogs` in API Gateway erstellt haben und dann einen benutzerdefinierten Domainnamen `api.example.com` einrichten, können Sie die URL der `PetStore`-API als `https://api.example.com` festlegen.

Dadurch wird die `PetStore`-API mit dem Basispfad einer leeren Zeichenfolge verknüpft. Wenn Sie die URL der `PetStore`-API auf `https://api.example.com/PetStore` festlegen, verknüpft dies die `PetStore`-API mit dem Basispfad von `PetStore`. Sie können einen Basispfad `MyDogList` für die `Dogs`-API zuweisen. Die URL `https://api.example.com/MyDogList` ist dann die Stamm-URL der `Dogs`-API.

Es kann nur ein regionaler benutzerdefinierter Domainname für das Konfigurieren von API-Zuweisungen auf mehreren Ebenen verwendet werden. Edge-optimierte benutzerdefinierte Domainnamen werden nicht unterstützt. Weitere Informationen finden Sie unter [Verwenden Sie API-Zuordnungen, um API-Stufen mit einem benutzerdefinierten Domainnamen für REST zu verbinden APIs](rest-api-mappings.md).

Das folgende Verfahren richtet API-Zuweisungen ein, um Pfade von Ihrem benutzerdefinierten Domainnamen zu Ihren API-Stufen zuzuordnen.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie **Benutzerdefinierte Domainnamen** im Hauptnavigationsbereich der API Gateway-Konsole aus.

1. Wählen Sie einen benutzerdefinierten Domainnamen aus.

1. Wählen Sie **API-Zuweisungen konfigurieren** aus.

1. Wählen Sie **Neue Zuweisung hinzufügen** aus.

1. Geben Sie die **API**, die **Stufe** und den **Pfad** (optional) für die Zuweisung an.

1. Wählen Sie **Speichern** aus.

------
#### [ REST API ]

 Rufen Sie [basepathmapping:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateBasePathMapping.html) für einen bestimmten benutzerdefinierten Domainnamen auf und geben Sie in den Nutzdaten der Anfrage die Eigenschaften `basePath` und `restApiId` sowie eine Bereitstellungs-`stage` an.

 Ein erfolgreicher API-Aufruf gibt die Antwort `201 Created` zurück.

Codebeispiele des REST-API-Aufrufs finden Sie unter [basepathmapping:create](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateBasePathMapping.html).

------

Wenn Sie mehr Flexibilität bei der Weiterleitung von Datenverkehr zu Ihrem wünschen APIs, können Sie den Routing-Modus auf `ROUTING_RULE_ONLY` oder ändern `ROUTING_RULE_THEN_API_MAPPING` und eine Routing-Regel erstellen. Weitere Informationen finden Sie unter [Senden Sie Traffic APIs über Ihren benutzerdefinierten Domainnamen in API Gateway an Sie](rest-api-routing-mode.md).

## Erstellen eines DNS-Eintrags für Ihren Edge-optimierten benutzerdefinierten Domainnamen
<a name="how-to-edge-optimized-custom-domain-name-dns-record"></a>

Richten Sie den Alias für den DNS-Datensatz ein, nachdem Sie mit die Erstellung Ihres Edge-optimierten benutzerdefinierten Domainnamens angestoßen haben.

Wir empfehlen Ihnen, Route 53 zu verwenden, um einen A-Record-Alias für Ihren benutzerdefinierten Domainnamen zu erstellen und den Namen der CloudFront Distributionsdomäne als Aliasziel anzugeben. Das bedeutet, dass Route 53 den benutzerdefinierten Domänennamen auch dann weiterleiten kann, wenn es sich um einen Zone Apex handelt. Weitere Informationen finden Sie im *Amazon Route 53-Entwicklerhandbuch* unter [Wählen zwischen Alias- und Nicht-Alias-Ressourcendatensätzen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html).

 Anweisungen für Amazon Route 53 finden Sie unter [Weiterleiten des Datenverkehrs an eine Amazon API Gateway API unter Verwendung Ihres Domain-Namens](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html) im *Amazon Route 53-Entwicklerhandbuch*.

## Protokollieren Sie die Erstellung eines benutzerdefinierten Domainnamens CloudTrail
<a name="how-to-custom-domain-log-cloudfront-distribution-update-in-cloudtrail"></a>

Wenn für die Protokollierung von API-Gateway-Aufrufen, die von Ihrem Konto getätigt wurden, aktiviert CloudTrail ist, protokolliert API Gateway die zugehörigen CloudFront Distributionsupdates, wenn ein benutzerdefinierter Domainname für eine API erstellt oder aktualisiert wird. Diese Protokolle sind in `us-east-1` verfügbar. Da diese CloudFront Distributionen Eigentum von API Gateway sind, wird jede dieser gemeldeten CloudFront Distributionen durch eines der folgenden regionsspezifischen API Gateway Gateway-Konten und nicht durch die IDs Konto-ID des API-Besitzers identifiziert. 


| **Region** | **Konto-ID** | 
| --- | --- | 
| us-east-1 | 392220576650 | 
| us-east-2 | 718770453195 | 
| us-west-1 | 968246515281 | 
| us-west-2 | 109351309407 | 
| ca-central-1 | 796887884028 | 
| eu-west-1 | 631144002099 | 
| eu-west-2 | 544388816663 | 
| eu-west-3 | 061510835048 | 
| eu-central-1 | 474240146802 | 
| eu-central-2 | 166639821150 | 
| eu-north-1 | 394634713161 | 
| eu-south-1 | 753362059629 | 
| eu-south-2 | 359345898052 | 
| ap-northeast-1 | 969236854626 | 
| ap-northeast-2 | 020402002396 | 
| ap-northeast-3 | 360671645888 | 
| ap-southeast-1 | 195145609632 | 
| ap-southeast-2 | 798376113853 | 
| ap-southeast-3 | 652364314486 | 
| ap-southeast-4 | 849137399833 | 
| ap-south-1 | 507069717855 | 
| ap-south-2 | 644042651268 | 
| ap-east-1 | 174803364771 | 
| sa-east-1 | 287228555773 | 
| me-south-1 | 855739686837 | 
| me-central-1 | 614065512851 | 

## Wechseln eines in ACM importierten Zertifikats
<a name="how-to-rotate-custom-domain-certificate"></a>

 ACM übernimmt automatisch die Verlängerung eigener ausgestellter Zertifikate. Sie müssen keine von ACM ausgestellten Zertifikate für Ihre benutzerdefinierten Domainnamen rotieren. CloudFront kümmert sich in Ihrem Namen darum. 

 Wenn Sie jedoch ein Zertifikat in ACM importieren und für einen benutzerdefinierten Domänennamen verwenden, müssen Sie das Zertifikat vor seinem Ablauf auswechseln. Dies umfasst das Importieren eines neuen Drittanbieter-Zertifikats für den Domänennamen und das Auswechseln des vorhandenen durch ein neues Zertifikat. Diesen Vorgang müssen Sie wiederholen, wenn das neu importierten Zertifikat abläuft. Alternativ können Sie in ACM die Ausstellung eines neuen Zertifikats für den Domänennamen beauftragen und das vorhandene durch das neue auswechseln. Danach können Sie ACM verlassen und CloudFront die Zertifikatsrotation automatisch für Sie übernehmen. Führen Sie die Schritte unter [Um ein SSL/TLS Zertifikat zu erstellen oder in ACM zu importieren](how-to-specify-certificate-for-custom-domain-name.md#how-to-specify-certificate-for-custom-domain-name-setup) aus, um ein neues ACM-Zertifikat zu erstellen oder zu importieren.

Im folgenden Verfahren wird beschrieben, wie ein Zertifikat für einen Domainnamen rotiert wird.

**Anmerkung**  
Das Rotieren eines in ACM importierten Zertifikats dauert etwa 40 Minuten.

------
#### [ AWS-Managementkonsole ]

1. Fordern Sie ein Zertifikat in ACM an oder importieren Sie es.

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie **Benutzerdefinierte Domainnamen** im Hauptnavigationsbereich der API Gateway-Konsole aus.

1. Wählen Sie einen Edge-optimierten benutzerdefinierten Domainnamen aus.

1. Klicken Sie unter **Endpunktkonfiguration** auf **Bearbeiten**.

1. Wählen Sie unter **ACM-Zertifikat** ein Zertifikat aus der Dropdown-Liste aus.

1. Klicken Sie auf **Änderungen speichern**, um mit dem Rotieren des Zertifikats für den benutzerdefinierten Domainnamen zu beginnen. 

------
#### [ REST API ]

 Rufen Sie die Aktion [domainname:update](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateDomainName.html) unter Angabe des ARN des neuen ACM-Zertifikats für den jeweiligen Domänennamen auf. 

------
#### [ AWS CLI ]

 Im Folgenden wird das ACM-Zertifikat für einen Edge-optimierten Domainnamen [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)aktualisiert.

```
aws apigateway update-domain-name \
    --domain-name edge.example.com \
    --patch-operations "op='replace',path='/certificateArn',value='arn:aws:acm:us-east-2:111122223333:certificate/CERTEXAMPLE123EXAMPLE'"
```

 Im Folgenden wird das ACM-Zertifikat für einen regionalen Domainnamen [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)aktualisiert.

```
aws apigateway update-domain-name \
    --domain-name regional.example.com \
    --patch-operations "op='replace',path='/regionalCertificateArn',value='arn:aws:acm:us-east-2:111122223333:certificate/CERTEXAMPLE123EXAMPLE'"
```

------

## Aufrufen einer API mit benutzerdefinierten Domainnamen bei Verwendung einer Basispfadzuweisung
<a name="how-to-custom-domains-call-api-with-sni"></a>

Sofern die korrekte URL verwendet wird, macht es keinen Unterschied, ob eine API mit einem benutzerdefinierten oder dem standardmäßigen Domänennamen aufgerufen wird.

In den folgenden Beispielen werden ein Satz von Standard URLs - und entsprechenden benutzerdefinierten Werten URLs aus zwei APIs (`udxjef`und`qf3duz`) in einer bestimmten Region (`us-east-1`) und einem bestimmten benutzerdefinierten Domainnamen (`api.example.com`) verglichen und gegenübergestellt.


| API-ID | Stufe | Standard-URL | Basispfad | Custom URL | 
| --- | --- | --- | --- | --- | 
| udxjef | Prod | https://udxjef.execute-api.us-east-1.amazonaws.com/prod | /petstore | https://api.example.com/Tierhandlung | 
| udxjef | tst | https://udxjef.execute-api.us-east-1.amazonaws.com/test | /petdepot | https://api.example.com/tierdepot | 
| qf3duz | dev | https://qf3duz.execute-api.us-east-1.amazonaws.com/dev | /bookstore | https://api.example.com/buchhandlung | 
| qf3duz | tst | https://qf3duz.execute-api.us-east-1.amazonaws.com/tst | /bookstand | https://api.example.com/buchständer | 

Für mehr Flexibilität bei der Weiterleitung von Datenverkehr zu Ihrem APIs können Sie eine Routing-Regel erstellen. Weitere Informationen finden Sie unter [Senden Sie Traffic APIs über Ihren benutzerdefinierten Domainnamen in API Gateway an Sie](rest-api-routing-mode.md).

 API Gateway unterstützt benutzerdefinierte Domainnamen für eine API über die [Server Name Indication (SNI)](https://en.wikipedia.org/wiki/Server_Name_Indication). Sie können die API mit einem benutzerdefinierten Domänennamen über einen Browser oder eine Client-Bibliothek aufrufen, die SNI unterstützt. 

 API Gateway erzwingt SNI bei der CloudFront Distribution. Informationen zur CloudFront Verwendung benutzerdefinierter Domainnamen finden Sie unter [Amazon CloudFront Custom SSL](https://aws.amazon.com/cloudfront/custom-ssl-domains/). 

# Migrieren eines benutzerdefinierten Domainnamens in einen anderen API-Endpunkt in API Gateway
<a name="apigateway-regional-api-custom-domain-migrate"></a>

 Sie können Ihren benutzerdefinierten Domänennamen zwischen Edge-optimierten und regionalen Endpunkten migrieren. Sie können einen öffentlichen benutzerdefinierten Domainnamen nicht zu einem privaten benutzerdefinierten Domainnamen migrieren. Zunächst fügen Sie den neuen Endpunktkonfigurationstyp zur bestehenden Liste `endpointConfiguration.types` für den benutzerdefinierten Domänennamen hinzu. Danach richten Sie einen DNS-Datensatz so ein, dass der benutzerdefinierte Domänenname auf den neu bereitgestellten Endpunkt verweist. Zum Schluss entfernen Sie den veralteten Endpunkt des benutzerdefinierten Domainnamens.

## Überlegungen
<a name="apigateway-regional-api-custom-domain-migration-considerations"></a>

Im Folgenden finden Sie Überlegungen für die Migration Ihrer benutzerdefinierten Domain von einem regionalen API-Endpunkt zu einem Edge-optimierten API-Endpunkt:
+ Ein Edge-optimierter benutzerdefinierter Domainname erfordert ein von ACM bereitgestelltes Zertifikat aus der `us-east-1`-Region (USA Ost (Nord-Virginia)). Dieses Zertifikat wird auf alle geografischen Standorte verteilt.
+ Für einen regionalen benutzerdefinierten Domainnamen ist ein Zertifikat erforderlich, das von ACM in derselben Region bereitgestellt wird, in der die API gehostet wird. Sie können einen Edge-optimierten benutzerdefinierten Domainnamen, der sich außerhalb der `us-east-1`-Region befindet, zu einem regionalen benutzerdefinierten Domainnamen migrieren, indem Sie zunächst ein neues ACM-Zertifikat aus der aktuellen Region der API anfordern.
+ Die Migration von einem Edge-optimierten zu einem regionalen benutzerdefinierten Domainnamen kann bis zu 60 Sekunden dauern. Die Migrationszeit hängt auch davon ab, wann Sie Ihre DNS-Datensätze aktualisieren.
+ Sie können eine zusätzliche Endpunktkonfiguration nur hinzufügen, wenn der Endpunktzugriffsmodus auf eingestellt ist`BASIC`. Sobald Sie zwei Endpunktkonfigurationen haben, können Sie den Endpunktzugriffsmodus nicht mehr ändern. Weitere Informationen finden Sie unter [Endpunktzugriffsmodus](apigateway-security-policies.md#apigateway-security-policies-endpoint-access-mode).
+ Wenn Ihr benutzerdefinierter Domainname eine Sicherheitsrichtlinie verwendet, die damit beginnt`SecurityPolicy_`, dass, wenn Sie einen neuen Endpunktkonfigurationstyp hinzufügen, der Endpunktzugriffsmodus für beide Endpunkttypen identisch ist, und Sie müssen eine Sicherheitsrichtlinie auswählen, die mit `SecurityPolicy_` für den neuen Endpunktkonfigurationstyp beginnt.

## Migrieren von benutzerdefinierten Domainnamen
<a name="apigateway-api-custom-domain-names-migrate-procedure"></a>

**Anmerkung**  
Um die Migration abzuschließen, stellen Sie sicher, dass Sie den veralteten Endpunkt aus Ihrem benutzerdefinierten Domainnamen entfernen.

Gehen Sie wie folgt vor, um einen regionalen benutzerdefinierten Domainnamen zu einem Edge-optimierten benutzerdefinierten Domainnamen zu migrieren.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie **Benutzerdefinierte Domainnamen** im Hauptnavigationsbereich aus. 

1. Wählen Sie einen Edge-optimierten benutzerdefinierten Domainnamen aus.

1. Klicken Sie unter **Endpunktkonfiguration** auf **Bearbeiten**.

1. Wählen Sie **Regionalen Endpunkt hinzufügen** aus.

1. Wählen Sie unter **ACM-Zertifikat** ein Zertifikat aus.

   Das regionale Zertifikat muss sich in derselben Region befinden wie die regionale API.

1. Wählen Sie **Änderungen speichern ** aus.

1. Richten Sie einen DNS-Datensatz so ein, dass der regionale benutzerdefinierte Domainname auf diesen regionalen Hostnamen verweist. Weitere Informationen finden Sie unter [Konfiguration von Route 53 zur Weiterleitung von Datenverkehr an API Gateway](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html).

1. Nachdem Sie bestätigt haben, dass Ihre DNS-Konfiguration den richtigen Endpunkt verwendet, löschen Sie die Edge-optimierte Endpunktkonfiguration. Wählen Sie Ihren benutzerdefinierten Domainnamen aus und klicken Sie dann unter **Edge-optimierte Endpunktkonfiguration** auf **Löschen**.

1. Bestätigen Sie Ihre Auswahl und löschen Sie den Endpunkt.

------
#### [ AWS CLI ]

Der folgende [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Befehl migriert einen Edge-optimierten benutzerdefinierten Domainnamen zu einem regionalen benutzerdefinierten Domainnamen:

```
aws apigateway update-domain-name \
    --domain-name 'api.example.com' \
    --patch-operations  '[ 
        { "op":"add", "path": "/endpointConfiguration/types","value": "REGIONAL" },
        { "op":"add", "path": "/regionalCertificateArn", "value": "arn:aws:acm:us-west-2:123456789012:certificate/cd833b28-58d2-407e-83e9-dce3fd852149" }
      ]'
```

Das regionale Zertifikat muss sich in derselben Region befinden wie die regionale API. 

Die Ausgabe sieht wie folgt aus:

```
{
    "certificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a",
    "certificateName": "edge-cert",
    "certificateUploadDate": "2017-10-16T23:22:57Z",
    "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net",
    "domainName": "api.example.com",
    "endpointConfiguration": {
        "types": [
            "EDGE",
            "REGIONAL"
        ]
    },
    "regionalCertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/cd833b28-58d2-407e-83e9-dce3fd852149",
    "regionalDomainName": "d-fdisjghyn6.execute-api.us-west-2.amazonaws.com"
}
```

Für den migrierten regionalen benutzerdefinierten Domänennamen gibt die resultierende Eigenschaft `regionalDomainName` den regionalen API-Hostnamen zurück. Sie müssen einen DNS-Datensatz so einrichten, dass der regionale benutzerdefinierte Domänenname auf diesen regionalen Hostnamen verweist. Auf diese Weise kann der Datenverkehr, der an den benutzerdefinierten Domänennamen gebunden ist, an den regionalen Host weitergeleitet werden. 

Nachdem Sie den DNS-Datensatz eingerichtet haben, können Sie den Edge-optimierten benutzerdefinierten Domainnamen entfernen. Der folgende [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Befehl entfernt den Edge-optimierten benutzerdefinierten Domänennamen:

```
aws apigateway update-domain-name \
    --domain-name api.example.com \
    --patch-operations '[
            {"op":"remove", "path":"/endpointConfiguration/types", "value":"EDGE"},
            {"op":"remove", "path":"certificateName"},
            {"op":"remove", "path":"certificateArn"}
        ]'
```

------

Das folgende Verfahren zeigt, wie Sie einen Edge-optimierten benutzerdefinierten Domänennamen, der eine erweiterte Sicherheitsrichtlinie verwendet, zu einem regionalen benutzerdefinierten Domänennamen migrieren, der ebenfalls eine erweiterte Sicherheitsrichtlinie verwendet.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie **Benutzerdefinierte Domainnamen** im Hauptnavigationsbereich aus. 

1. Wählen Sie einen Edge-optimierten benutzerdefinierten Domainnamen aus.

1. Klicken Sie unter **Endpunktkonfiguration** auf **Bearbeiten**.

1. Wählen Sie **Regionalen Endpunkt hinzufügen** aus.

1. Wählen Sie unter **ACM-Zertifikat** ein Zertifikat aus.

   Das regionale Zertifikat muss sich in derselben Region befinden wie die regionale API.

1. Wählen Sie für **Sicherheitsrichtlinie** eine Sicherheitsrichtlinie aus, die mit beginnt. `SecurityPolicy_`

1. Wählen Sie für **den Endpunktzugriffsmodus** die Option **Basic**.

1. Wählen Sie **Änderungen speichern ** aus.

1. Richten Sie einen DNS-Datensatz so ein, dass der regionale benutzerdefinierte Domainname auf diesen regionalen Hostnamen verweist. Weitere Informationen finden Sie unter [Konfiguration von Route 53 zur Weiterleitung von Datenverkehr an API Gateway](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html).

1. Nachdem Sie bestätigt haben, dass Ihre DNS-Konfiguration den richtigen Endpunkt verwendet, löschen Sie die Edge-optimierte Endpunktkonfiguration. Wählen Sie Ihren benutzerdefinierten Domainnamen aus und klicken Sie dann unter **Edge-optimierte Endpunktkonfiguration** auf **Löschen**.

1. Bestätigen Sie Ihre Auswahl und löschen Sie den Endpunkt.

------
#### [ AWS CLI ]

Der folgende [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Befehl migriert einen Edge-optimierten benutzerdefinierten Domainnamen zu einem regionalen benutzerdefinierten Domainnamen:

```
aws apigateway update-domain-name \
    --domain-name 'api.example.com' \
    --patch-operations  '[ 
        { "op":"add", "path": "/endpointConfiguration/types","value": "REGIONAL" },
        { "op":"replace", "path": "/securityPolicy", "value":"SecurityPolicy_TLS13_1_3_2025_09"},
        { "op":"add", "path": "/regionalCertificateArn", "value": "arn:aws:acm:us-west-2:123456789012:certificate/cd833b28-58d2-407e-83e9-dce3fd852149" }
      ]'
```

Das regionale Zertifikat muss sich in derselben Region befinden wie die regionale API. 

Die Ausgabe sieht wie folgt aus:

```
{
    "certificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a",
    "certificateName": "edge-cert",
    "certificateUploadDate": "2017-10-16T23:22:57Z",
    "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net",
    "domainName": "api.example.com",
    "endpointConfiguration": {
        "types": [
            "EDGE",
            "REGIONAL"
        ]
    },
    "securityPolicy": "SecurityPolicy_TLS13_1_3_2025_09",
    "endpointAccessMode": "BASIC",
    "regionalCertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/cd833b28-58d2-407e-83e9-dce3fd852149",
    "regionalDomainName": "d-fdisjghyn6.execute-api.us-west-2.amazonaws.com"
}
```

Für den migrierten regionalen benutzerdefinierten Domänennamen gibt die resultierende Eigenschaft `regionalDomainName` den regionalen API-Hostnamen zurück. Sie müssen einen DNS-Datensatz so einrichten, dass der regionale benutzerdefinierte Domänenname auf diesen regionalen Hostnamen verweist. Auf diese Weise kann der Datenverkehr, der an den benutzerdefinierten Domänennamen gebunden ist, an den regionalen Host weitergeleitet werden. 

Nachdem Sie den DNS-Datensatz eingerichtet haben, können Sie den Edge-optimierten benutzerdefinierten Domainnamen entfernen. Der folgende [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Befehl entfernt den Edge-optimierten benutzerdefinierten Domänennamen:

```
aws apigateway update-domain-name \
    --domain-name api.example.com \
    --patch-operations '[
            {"op":"remove", "path":"/endpointConfiguration/types", "value":"EDGE"},
            {"op":"remove", "path":"certificateName"},
            {"op":"remove", "path":"certificateArn"}
        ]'
```

------

Gehen Sie wie folgt vor, um einen regionalen benutzerdefinierten Domainnamen zu einem Edge-optimierten benutzerdefinierten Domainnamen zu migrieren.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Klicken Sie im Hauptnavigationsbereich auf **Benutzerdefinierte Domainnamen**.

1. Wählen Sie einen benutzerdefinierten Domainnamen aus.

1. Klicken Sie unter **Endpunktkonfiguration** auf **Bearbeiten**.

1. Klicken Sie auf **Edge-optimierten Endpoint hinzufügen**.

1. Wählen Sie unter **ACM-Zertifikat** ein Zertifikat aus.

    Das Zertifikat der Edge-optimierten Domäne muss in der Region `us-east-1` erstellt werden. 

1. Wählen Sie **Speichern**.

1. Richten Sie einen DNS-Datensatz so ein, dass der Edge-optimierte benutzerdefinierte Domainname auf diesen Edge-optimierten Hostnamen verweist. Weitere Informationen finden Sie unter [Konfiguration von Route 53 zur Weiterleitung von Datenverkehr an API Gateway](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-api-gateway.html).

1. Nachdem Sie bestätigt haben, dass Ihre DNS-Konfiguration den richtigen Endpunkt verwendet, löschen Sie die regionale Endpunktkonfiguration. Wählen Sie Ihren benutzerdefinierten Domainnamen aus und klicken Sie dann unter **Konfiguration des regionalen Endpunkts** auf **Löschen**.

1. Bestätigen Sie Ihre Auswahl und löschen Sie den Endpunkt.

------
#### [ AWS CLI ]

Der folgende [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Befehl migriert Ihren regionalen benutzerdefinierten Domainnamen zu einem Edge-optimierten benutzerdefinierten Domainnamen:

```
aws apigateway update-domain-name \
    --domain-name 'api.example.com' \
    --patch-operations  '[ 
        { "op":"add", "path": "/endpointConfiguration/types","value": "EDGE" },
        { "op":"add", "path": "/certificateName", "value": "edge-cert" },
	{"op":"add", "path": "/certificateArn", "value": "arn:aws:acm:us-east-1:738575810317:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a"}
      ]'
```

Das Zertifikat der Edge-optimierten Domäne muss in der Region `us-east-1` erstellt werden. 

Die Ausgabe sieht wie folgt aus:

```
{
    "certificateArn": "arn:aws:acm:us-east-1:738575810317:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a",
    "certificateName": "edge-cert",
    "certificateUploadDate": "2017-10-16T23:22:57Z",
    "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net",
    "domainName": "api.example.com",
    "endpointConfiguration": {
        "types": [
            "EDGE",
            "REGIONAL"
        ]
    },
    "regionalCertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/3d881b54-851a-478a-a887-f6502760461d",
    "regionalDomainName": "d-cgkq2qwgzf.execute-api.us-east-1.amazonaws.com"
}
```

Für den angegebenen benutzerdefinierten Domänennamen gibt API Gateway den Edge-optimierten API-Hostnamen als Wert der Eigenschaft `distributionDomainName` zurück. Sie müssen einen DNS-Datensatz so einrichten, dass der Edge-optimierte benutzerdefinierte Domänenname auf diesen Verteilungsdomänennamen verweist. Auf diese Weise kann der Datenverkehr, der an den Edge-optimierten benutzerdefinierten Domänennamen gebunden ist, an den Edge-optimierten Hostnamen der API weitergeleitet werden. 

Nachdem Sie den DNS-Datensatz eingerichtet haben, können Sie den Endpunkttyp `REGION` des benutzerdefinierten Domainnamens löschen. Mit dem folgenden [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Befehl wird der Endpunkttyp Regional entfernt:

```
aws apigateway update-domain-name \
    --domain-name api.example.com \
    --patch-operations '[
        {"op":"remove", "path":"/endpointConfiguration/types", value:"REGIONAL"},
        {"op":"remove", "path":"regionalCertificateArn"}
      ]'
```

Die Ausgabe sollte wie folgt aussehen:

```
{
    "certificateArn": "arn:aws:acm:us-east-1:738575810317:certificate/34a95aa1-77fa-427c-aa07-3a88bd9f3c0a",
    "certificateName": "edge-cert",
    "certificateUploadDate": "2017-10-16T23:22:57Z",
    "distributionDomainName": "d1frvgze7vy1bf.cloudfront.net",
    "domainName": "api.example.com",
    "endpointConfiguration": {
        "types": "EDGE"
    }
}
```

------

# Senden Sie Traffic APIs über Ihren benutzerdefinierten Domainnamen in API Gateway an Sie
<a name="rest-api-routing-mode"></a>

Wenn Sie den Routing-Modus für Ihren benutzerdefinierten Domainnamen konfigurieren, legen Sie fest, wie eingehender Datenverkehr an Ihren weitergeleitet wird APIs. Sie senden Traffic APIs mithilfe von Routing-Regeln, API-Zuordnungen oder Routing-Regeln und API-Zuordnungen an Sie. Im folgenden Abschnitt wird erläutert, wann Sie Routing-Regeln verwenden sollten, wann API-Zuweisungen sinnvoll sind und wie Sie den Routing-Modus für Ihren benutzerdefinierten Domainnamen festlegen.

## Wann ist die Verwendung von Routing-Regeln sinnvoll?
<a name="when-to-use-routing-rules"></a>

Wenn Sie Routing-Regeln verwenden, leiten Sie eingehende Anfragen, die bestimmte Bedingungen erfüllen, an bestimmte REST-Phasen weiter. APIs Beispielsweise kann eine Regel eine Anfrage an die `production`-Stufe Ihrer `users` REST-API weiterleiten, wenn sie den Header `version:v1` und den Basispfad `/users` enthält. Verwenden Sie Routing-Regeln, um erweiterte dynamische Routing-Topologien zu erstellen, die Anwendungsfälle wie das A/B Testen oder die zunehmende Nutzung neuer Versionen von Ihrem APIs unterstützen.

Wir empfehlen, beim Weiterleiten von Datenverkehr zu einer REST-API Routing-Regeln für den benutzerdefinierten Domainnamen zu verwenden. Sie können API-Zuweisungen mithilfe von Routing-Regeln neu erstellen. Weitere Informationen finden Sie unter [API-Zuweisung mithilfe von Routing-Regeln neu erstellen](rest-api-routing-rules-recreate-api-mapping.md).

Für REST APIs können Sie Routing-Regeln und API-Zuordnungen auch zusammen verwenden. Wenn Sie Routing-Regeln und API-Zuweisungen gemeinsam einsetzen, wertet API Gateway immer zuerst die Routing-Regeln aus, bevor es die API-Zuweisungen berücksichtigt. Verwenden Sie Routing-Regeln und API-Zuweisungen zusammen, um aktuelle benutzerdefinierte Domainnamen zu migrieren oder um Routing-Regeln auszuprobieren.

### Überlegungen zu Routing-Regeln
<a name="considerations-for-private-preview"></a>

Die folgenden Überlegungen können sich auf die Verwendung von Routing-Regeln auswirken:
+ WebSocket oder HTTP APIs werden nicht als Ziel APIs für Routing-Regeln unterstützt.
+ Wenn Ihr benutzerdefinierter Domainname API-Zuordnungen sowohl zu REST als auch zu HTTP enthält APIs, werden Routing-Regeln nicht unterstützt.
+ Sie können eine Routing-Regel für eine private benutzerdefinierte Domain zu einer privaten REST-API erstellen. Ebenso können Sie eine Routing-Regel für eine öffentliche benutzerdefinierte Domain zu einer regionalen oder Edge-optimierten API erstellen. 
+ Sie können keine Routing-Regel für eine öffentliche benutzerdefinierte Domain zu einer privaten API erstellen. Ebenso können Sie keine Routing-Regel für eine private benutzerdefinierte Domain zu einer öffentlichen API erstellen.

## Auswahl zwischen Routing-Regeln und API-Zuweisungen
<a name="choose-between-routing-rules-and-api-mappings"></a>

Wir empfehlen, nach Möglichkeit Routing-Regeln zu verwenden. Verwenden Sie API-Zuordnungen nur, um Traffic an ein HTTP oder eine API zu senden. WebSocket 

# Festlegen des Routing-Modus für Ihren benutzerdefinierten Domainnamen
<a name="set-routing-mode"></a>

Sie können wählen, welchen Routing-Modus API Gateway verwendet, um den Datenverkehr an Ihren weiterzuleiten APIs. Weitere Informationen finden Sie unter [Senden Sie Traffic APIs über Ihren benutzerdefinierten Domainnamen in API Gateway an Sie](rest-api-routing-mode.md). In diesem Abschnitt werden Routing-Modi für benutzerdefinierte Domainnamen beschrieben. Sie müssen einen Routing-Modus für Ihren benutzerdefinierten Domainnamen festlegen, um den Datenverkehr an Ihren weiterzuleiten APIs. Folgende Routing-Modi werden unterstützt:
+ **ROUTING\$1RULE\$1THEN\$1 API\$1MAPPING** — Verwenden Sie diesen Modus, um Traffic APIs mit Routing-Regeln und API-Zuordnungen an Ihren zu senden. In diesem Modus haben alle Routing-Regeln Vorrang vor API-Zuweisungen. Ein Beispiel für diesen Modus finden Sie unter [Beispiel 2: Routing-Regeln und API-Zuweisungen](rest-api-routing-rules-examples.md#rest-api-routing-rules-examples-rule-and-mappings). 
+ **ROUTING\$1RULE\$1ONLY — Verwenden Sie diesen Modus, um nur** zu erlauben, dass Routing-Regeln Traffic an Ihren senden. APIs Wenn Ihr benutzerdefinierter Domainname diesen Modus verwendet, können Sie keine API-Zuordnung erstellen, aber Sie können den Befehl verwenden, um sie anzuzeigen. [get-api-mappings](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/get-api-mappings.html) API-Aufrufer können mit diesem Domainnamen keine API-Zuweisungen verwenden.
+ **API\$1MAPPING\$1ONLY** — Verwenden Sie diesen Modus, um nur API-Zuordnungen zuzulassen, um Traffic an Ihren zu senden. APIs Wenn Ihr benutzerdefinierter Domainname diesen Modus verwendet, können Sie keine Routing-Regel erstellen, aber Sie können den Befehl `list-routing-rules` nutzen, um sie anzuzeigen. API-Aufrufer können mit diesem Domainnamen keine Routing-Regeln verwenden.

  Dies ist der Standard-Routing-Modus für all vorhandenen Domainnamen und alle neuen Domainnamen, die Sie erstellen.

Wenn Sie einen benutzerdefinierten Domainnamen mit `apigateway` erstellen, wird `API_MAPPING_ONLY` als `BASE_PATH_MAPPING_ONLY` und `ROUTING_RULE_THEN_API_MAPPING` als `ROUTING_RULE_THEN_BASE_PATH_MAPPING` bezeichnet. Dieses Verhalten ist nur für, oder für alle vorhanden AWS CLI CloudFormation SDKs, nicht für. AWS-Managementkonsole

Das folgende Verfahren zeigt, wie Sie den Routing-Modus für einen vorhandenen benutzerdefinierten Domainnamen ändern. Wenn Sie den Routing-Modus ändern, können API-Aufrufer nicht über nicht unterstützte Routing-Modi auf Ihren Domainnamen zugreifen.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie **Benutzerdefinierte Domainnamen** im Hauptnavigationsbereich aus.

1. Wählen Sie einen benutzerdefinierten Domainnamen aus.

1. Wählen Sie unter **Domänendetails** die Option **Bearbeiten** aus.

1. **Wählen Sie für den **Routing-Modus ROUTING\$1RULE\$1THEN\$1**. API\$1MAPPING**

1. Wählen Sie **Speichern**.

Wenn Sie den Routing-Modus in `ROUTING_RULE_ONLY` oder `API_MAPPING_ONLY` ändern, werden alle erstellten API-Zuweisungen oder Routing-Regeln von der Detailseite des Domainnamens in der Konsole entfernt. Wenn Sie den Routing-Modus so ändern, dass er entweder Routing-Regeln oder API-Zuweisungen unterstützt, werden diese Ressourcen wieder angezeigt.

------
#### [ AWS CLI - apigatewayv2 ]

Mit dem folgenden [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-domain-name.html)Befehl wird ein Domainname aktualisiert, sodass er den Routing-Modus verwendet: `ROUTING_RULE_THEN_API_MAPPING`

```
aws apigatewayv2 update-domain-name \
  --domain-name 'api.example.com' \
  --routing-mode "ROUTING_RULE_THEN_API_MAPPING"
```

Die Ausgabe sieht wie folgt aus:

```
{
"ApiMappingSelectionExpression": "$request.basepath",
"DomainName": "api.example.com",
"DomainNameArn": "arn:aws:apigateway:us-west-2::/domainnames/api.example.com",
"DomainNameConfigurations": [
  {
      "ApiGatewayDomainName": "d-abcdefg.execute-api.us-west-2.amazonaws.com",
      "CertificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/abcdefg-123456-abcdefg",
      "DomainNameStatus": "AVAILABLE",
      "EndpointType": "REGIONAL",
      "HostedZoneId": "Z2OJLYMUO9EFXC",
      "SecurityPolicy": "TLS_1_2"
   }
 ],
"RoutingMode": "ROUTING_RULE_THEN_API_MAPPING",
"Tags": {}
}
```

------
#### [ AWS CLI - apigateway ]

Mit dem folgenden [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Befehl wird ein privater benutzerdefinierter Domainname aktualisiert, sodass er den Routing-Modus verwendet`ROUTING_RULE_THEN_BASE_PATH_MAPPING`:

```
aws apigateway update-domain-name \
  --domain-name 'private.example.com' \
  --patch-operations "op='replace',path='/routingMode',value='ROUTING_RULE_THEN_BASE_PATH_MAPPING'"
```

Die Ausgabe sieht wie folgt aus:

```
{
"domainName": "private.example.com",
"domainNameId": "abcd1234",
"domainNameArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234",
"certificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/a1b2c3d4-5678-90ab-cdef",
"certificateUploadDate": "2024-09-10T10:31:20-07:00",
"endpointConfiguration": {
  "types": [
    "PRIVATE"
   ],
  "ipAddressType": "dualstack"
  },
"domainNameStatus": "AVAILABLE",
"securityPolicy": "TLS_1_2",
"policy": "...",
"routingMode" : "ROUTING_RULE_THEN_BASE_PATH_MAPPING"
}
```

------

# Routing-Regeln zum Verbinden von API-Stufen mit einem benutzerdefinierten Domainnamen für REST APIs
<a name="rest-api-routing-rules"></a>

Eine Routing-Regel besteht aus einer Reihe von Bedingungen, bei deren Erfüllung eine Aktion ausgelöst wird. Eine Regel kann beispielsweise jede eingehende Anfrage, die an einen benutzerdefinierten Domainnamen gerichtet ist und den Header `Hello:World` sowie den Basispfad `users` enthält, an die `production`-Stufe einer REST-API weiterleiten.

Regeln werden in der Reihenfolge ihrer Priorität ausgewertet. Wenn Sie den Routing-Modus `ROUTING_RULE_THEN_API_MAPPING` verwenden, wertet API Gateway stets zuerst alle Routing-Regeln aus, bevor API-Zuweisungen geprüft werden. Die folgende Liste beschreibt, wie eine Routing-Regel Bedingungen, Aktionen und Prioritäten verwendet. 

**Bedingungen**  
Wenn die Bedingungen für eine Regel erfüllt sind, wird die dazugehörige Aktion durchgeführt. API Gateway unterstützt bis zu zwei Header-Bedingungen und eine Pfadbedingung. API Gateway wertet Header-Bedingungen und Basispfadbedingungen zusammen aus.  
Sie können eine Regel auch ohne Bedingungen erstellen. Wenn API Gateway diese Regel auswertet, wird die Aktion immer ausgeführt. Eine Regel ohne Bedingungen kann als Catch-all-Regel verwendet werden.  
Weitere Informationen über Header-Bedingungen finden Sie unter [Abgleichen der Header-Bedingungen](#rest-api-routing-rules-condition-headers). Weitere Informationen über Pfadbedingungen finden Sie unter [Basispfadbedingungen anpassen](#rest-api-routing-rules-condition-path). 

**Aktionen**  
Aktionen sind das Ergebnis der Übereinstimmung von Bedingungen mit einer Routing-Regel. Derzeit wird nur das Aufrufen einer Stufe einer REST-API unterstützt.  
Jede Regel kann eine Aktion haben.

**Priorität**  
Die Priorität bestimmt die Reihenfolge, in der Regeln ausgewertet werden, ausgehend vom niedrigsten Wert hin zum höchsten Wert. Zwei Regeln können nicht dieselbe Priorität haben.  
Sie können die Priorität im Bereich 1–1.000.000 festlegen. Eine Regel mit der Priorität 1 wird von API Gateway zuerst ausgewertet. Wir empfehlen, beim Erstellen einer Regel Lücken zwischen den Prioritäten zu lassen. So können Sie die Reihenfolge später leichter ändern oder neue Regeln hinzufügen. Weitere Informationen finden Sie unter [Ändern der Priorität einer Routing-Regel](apigateway-routing-rules-use.md#rest-api-routing-rules-change-priority).

Beispiele dafür, wie API Gateway Routing-Regeln auswertet, finden Sie unter [Beispiele dafür, wie API Gateway Routing-Regeln auswertet](rest-api-routing-rules-examples.md).

## Bedingungstypen für Routing-Regeln in API Gateway
<a name="rest-api-routing-rules-condition-types"></a>

Im Folgenden werden die Bedingungstypen für Routing-Regeln beschrieben. API Gateway wendet eine Regel nur dann an, wenn alle Bedingungen erfüllt sind.

### Abgleichen der Header-Bedingungen
<a name="rest-api-routing-rules-condition-headers"></a>

Wenn Sie eine Header-Bedingung erstellen, können Sie den Header-Namen und den Header-Glob-Wert abgleichen, z. B. `Hello:World`. API Gateway verwendet für den Abgleich von Header-Bedingungen eine exakte Übereinstimmung. Ihre Bedingung kann bis zu zwei Header mit `AND` zwischen ihnen verwenden. Eine Bedingung kann also z. B. dann übereinstimmen, wenn eine eingehende Anfrage sowohl `Hello:World` als auch `x-version:beta` enthält.

Bei der Übereinstimmung des Header-Namens wird die Groß-/Kleinschreibung nicht berücksichtigt, beim Header-Glob-Wert hingegen schon. `Hello:World` stimmt mit `hello:World` überein, jedoch nicht mit `Hello:world`.

Eine Liste der eingeschränkten Header-Werte finden Sie unter [Einschränkungen](#rest-api-routing-rules-restrictions).

#### Verwenden von Platzhaltern mit Header-Bedingungen
<a name="rest-api-routing-rules-condition-headers-wildcards"></a>

Platzhalter dürfen nur im Header-Glob-Wert verwendet werden. Zulässig sind dabei: `*prefix-match`, `suffix-match*` oder `*contains*`. Die folgende Tabelle zeigt Beispiele, wie Platzhalter für die Übereinstimmung mit Header-Bedingungen verwendet werden können. 


|  Header-Bedingungen  |  Anfragen, die der Routing-Regel entsprechen  |  Anfragen, die nicht der Routing-Regel entsprechen  | 
| --- | --- | --- | 
|  `x-version: a*`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  | 
|  `x-version: *a`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  | 
|  `x-version: *a*`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  | 
|  `x-version: *a*` und `x-version: *b*`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  | 
|  `x-version: b*` und `x-version: *a`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  | 
|  `x-version: *`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  Keine  | 

Wenn Sie Bedingungen für mehrere Header-Werte erstellen, wie z. B. `Accept:application/json,text/xml`, empfehlen wir, `*contains*` für Ihre Header-Bedingungen zu verwenden und keine Bedingungen mit dem Kommazeichen (`,`) zu erstellen.

Da API Gateway Header-Bedingungen wörtlich prüft, können semantisch gleiche Anfragen unterschiedlich weitergeleitet werden. Die folgende Tabelle zeigt die unterschiedlichen Ergebnisse der Routing-Regeln.


|  Header-Bedingungen  |  Anfragen, die der Routing-Regel entsprechen  |  Anfragen, die nicht der Routing-Regel entsprechen  | 
| --- | --- | --- | 
|  `Accept: *json`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  | 
|  `Accept: *json*`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/rest-api-routing-rules.html)  |  Keine  | 

### Basispfadbedingungen anpassen
<a name="rest-api-routing-rules-condition-path"></a>

Wenn Sie eine Basispfadbedingung erstellen und die eingehende Anfrage den von Ihnen angegebenen Pfad enthält, wird die Regel angewendet. Bei der Übereinstimmung wird die Groß- und Kleinschreibung berücksichtigt, daher stimmt der Pfad `New/Users` nicht mit `new/users` überein.

Sie können eine Basispfadbedingung nur für einen Basispfad erstellen.

Eine Liste der eingeschränkten Basispfadbedingungen finden Sie unter [Einschränkungen](#rest-api-routing-rules-restrictions).

#### Entfernen des Basispfads mit Basispfadbedingungen
<a name="rest-api-routing-rules-condition-path-split"></a>

Wenn Sie eine Basispfadbedingung erstellen, können Sie wählen, ob der Basispfad entfernt werden soll. Wenn Sie den Basispfad entfernen, löscht API Gateway den eingehenden übereinstimmenden Basispfad, wenn es die Ziel-API aufruft. Dieses Verhalten entspricht dem einer API-Zuweisung. Wenn Sie den Basispfad nicht entfernen, leitet API Gateway den gesamten Basispfad an die Ziel-API weiter. Wir empfehlen, den Basispfad nur dann zu entfernen, wenn Sie eine API-Zuweisung neu erstellen.

Die folgende Tabelle zeigt Beispiele dafür, wie API Gateway die Bedingung zum Entfernen des Basispfads auswertet.


|  Bedingung  | Leerzeichen des Basispfads entfernen |  Eingehende Anfragen  |  Ergebnis  | 
| --- | --- | --- | --- | 
|  Wenn der Basispfad `PetStoreShopper/dogs` enthält  |  Wahr  |  `GET https://example.com/PetStoreShopper/dogs`  |  API Gateway ruft die `GET`-Methode der `/`-Ressource auf.  | 
|  Wenn der Basispfad `PetStoreShopper/dogs` enthält  |  Falsch  |  `GET https://example.com/PetStoreShopper/dogs`  |  API Gateway ruft die `GET`-Methode der `PetStoreShopper/dogs`-Ressource auf.  | 
|  Wenn der Basispfad `PetStoreShopper` enthält  |  Wahr  |  `GET https://example.com/PetStoreShopper/dogs`  |  API Gateway ruft die `GET`-Methode der `dogs`-Ressource auf.  | 
|  Wenn der Basispfad `PetStoreShopper` enthält  |  Falsch  |  `GET https://example.com/PetStoreShopper/dogs`  |  API Gateway ruft die `GET`-Methode der `PetStoreShopper/dogs`-Ressource auf.  | 
|  Wenn der Basispfad `PetStoreShopper` enthält  |  Wahr  |  `GET https://example.com/PetStoreShopper?birds=available`  |  API Gateway ruft die `GET`-Methode der `/`-Ressource mit dem Abfragezeichenfolgenparameter `birds=available` auf.  | 
|  Wenn der Basispfad `PetStoreShopper` enthält  |  Falsch  |  `GET https://example.com/PetStoreShopper?birds=available`  |  API Gateway ruft die `GET`-Methode der `/PetStoreShopper`-Ressource mit dem Abfragezeichenfolgenparameter `birds=available` auf.  | 

## Einschränkungen
<a name="rest-api-routing-rules-restrictions"></a>
+ Die Ziel-API und der benutzerdefinierte Domainname müssen sich im selben AWS Konto befinden.
+ Jede Regel kann eine Ziel-API haben. 
+ Sie können eine Routing-Regel nur für einen privaten benutzerdefinierten Domainnamen an eine private API und für einen öffentlichen benutzerdefinierten Domainnamen an eine öffentliche API erstellen. Sie können öffentliche und private Ressourcen nicht mischen.
+ Wenn Ihr benutzerdefinierter Domainname API-Zuordnungen sowohl zu REST als auch zu HTTP enthält APIs, werden Routing-Regeln nicht unterstützt.
+ Die maximal zulässige Priorität beträgt 1 000 000.
+ Header-Einschränkungen:
  + Jede `anyOf` Bedingung darf nur einen Header-Wert enthalten.
  + Die einzigen zulässigen Zeichen für Header-Namen und Header-Glob-Werte sind in [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230) festgelegt. Dabei handelt es sich um `a-z`, `A-Z`, `0-9` und die folgenden Sonderzeichen: `*?-!#$%&'.^_`|~`.
  + Sie können einen Platzhalter im Header-Glob-Wert verwenden, jedoch muss der Platzhalter `*prefix-match`, `suffix-match*` oder `*contains*` sein. Sie können `*` nicht in der Mitte eines Header-Glob-Werts verwenden.
  + Platzhalter-Header-Namen werden nicht unterstützt.
  + Der Header-Name darf maximal 40 Zeichen lang sein.
  + Der Header-Glob-Wert darf maximal 128 Zeichen lang sein.
  + Der Header-Glob-Wert für eine Infix-Übereinstimmung darf maximal 40 Zeichen lang sein.
  + Die folgenden Header werden nicht als Bedingungen unterstützt:
    + `access-control-*`
    + `apigw-*`
    + `Authorization`
    + `Connection`
    + `Content-Encoding`
    + `Content-Length`
    + `Content-Location`
    + `Forwarded`
    + `Keep-Alive`
    + `Origin`
    + `Proxy-Authenticate`
    + `Proxy-Authorization`
    + `TE`
    + `Trailers`
    + `Transfer-Encoding`
    + `Upgrade`
    + `x-amz-*`
    + `x-amzn-*`
    + `x-apigw-api-id`
    + `X-Forwarded-For`
    + `X-Forwarded-Host`
    + `X-Forwarded-Proto`
    + `x-restAPI`
    + `Via`
+ Basispfadeinschränkungen:
  + Die Länge des Basispfads darf maximal 128 Zeichen betragen.
  + Der Basispfad darf nur Buchstaben, Zahlen und die folgenden Zeichen enthalten: `$-_.+!*'()/`.

    Diese Zeichen werden für reguläre Ausdrücke (Regex) nicht unterstützt. 
  + Der Basispfad darf nicht mit einem umgekehrten Schrägstrich (`\`) beginnen oder enden.

# Beispiele dafür, wie API Gateway Routing-Regeln auswertet
<a name="rest-api-routing-rules-examples"></a>

Der folgende Abschnitt zeigt 4 Beispiele dafür, wie API Gateway Routing-Regeln und API-Zuweisungen auswertet.

## Beispiel 1: Nur Routing-Regeln
<a name="rest-api-routing-rules-examples-rule-only"></a>

In diesem Beispiel ist für den benutzerdefinierten Domainnamen `https://petstore.example.com` der Routing-Modus auf `ROUTING_RULE_ONLY` eingestellt und es gelten die folgenden Routing-Regeln und Prioritäten.


|  Regel-ID  |  Priorität  |  Bedingungen  |  Action  | 
| --- | --- | --- | --- | 
|  `abc123`  |   10   |   Wenn die Anfrage einen Header enthält: `Hello:World`   |   Ziel-API 1   | 
|  `zzz000`  |   50   |   Wenn die Anfrage die folgenden Header enthält: `Accept:image/webp` und `Pet:Dog-*` und wenn der Basispfad `PetStoreShopper` enthält  |   Ziel-API 2   | 
|  `efg456`  |   100   |  Keine  |   Ziel-API 3   | 

Die folgende Tabelle zeigt, wie API Gateway die vorherigen Routing-Regeln auf Beispielanfragen anwendet.


| Anfrage | Ausgewählte API | Erklärung | 
| --- | --- | --- | 
|  `https://petstore.example.com -h "Hello:World"`  |  Ziel-API 1  |  Die Anfrage entspricht der Routing-Regel `abc123`.  | 
|  `https://petstore.example.com/PetStoreShopper -h "Hello:World", "Pet:Dog-Bella", "Accept:image/webp"`  |  Ziel-API 1  |  API Gateway wertet alle Routing-Regeln in der Reihenfolge ihrer Priorität aus. Die Routing-Regel `abc123` hat die höchste Priorität und die Bedingungen stimmen überein, daher ruft API Gateway die Ziel-API 1 auf. Obwohl die Bedingungen der Anfrage auch der Routing-Regel `zzz000` übereinstimmen, wertet API Gateway nach einer Übereinstimmung keine weiteren Routing-Regeln aus.  | 
|  `https://petstore.example.com/PetStoreShopper -h "Pet:Dog-Bella", "Accept:image/webp"`  |  Ziel-API 2  |  Die Anfrage entspricht der Routing-Regel `zzz000`. Dies war eine Übereinstimmung, da `Pet:Dog-Bella` eine Zeichenfolgenübereinstimmung mit `Pet:Dog-*` war.  | 
|  `https://petstore.example.com/PetStoreShopper -h "Pet:Dog-Bella"`  |  Ziel-API 3  |  Die Anfrage entspricht nicht der Routing-Regel `abc123`. Die Anfrage entspricht nicht der Routing-Regel `zzz000`, da nicht alle erforderlichen Header vorhanden sind. Die nächste Prioritätsregel entspricht allen eingehenden Anfragen, daher ruft API Gateway die Ziel-API 3 auf.  | 

## Beispiel 2: Routing-Regeln und API-Zuweisungen
<a name="rest-api-routing-rules-examples-rule-and-mappings"></a>

In diesem Beispiel ist für den benutzerdefinierten Domainnamen `https://petstore.diagram.example.com` der Routing-Modus auf `ROUTING_RULE_THEN_API_MAPPING` festgelegt und es gelten die folgenden Routing-Regeln und API-Zuweisungen.


|  Regel-ID  |  Priorität  |  Bedingungen  |  Action  | 
| --- | --- | --- | --- | 
|  `abc123`  |   1   |   Falls die Anfrage `pets` beinhaltet   |   Rufen Sie die `Prod`-Stufe der `PetStore`-API auf.   | 
|  `000zzz`  |   5   |   Wenn die Anfrage die folgenden Header enthält: `Cookie`:`*ux=beta*` und wenn der Basispfad `/refunds` enthält  |   Rufen Sie die `Beta`-Stufe der `Refunds`-API auf.   | 

Die folgende Tabelle zeigt die API-Zuweisungen für `https://petstore.backup.example.com`.


|  API-Zuweisungen  |  Ausgewählte API  | 
| --- | --- | 
|   `/refunds`   |   Rufen Sie die `Prod`-Stufe der `Refunds`-API auf.   | 
|   `(none)`   |   Rufen Sie die `Prod`-Stufe der `Search`-API auf.   | 

Das folgende Diagramm veranschaulicht, wie API Gateway die zuvor genannten Routing-Regeln und API-Zuweisungen auf Beispielanfragen anwendet. Die Beispielanfragen sind in der Tabelle nach diesem Diagramm zusammengefasst.

![\[Diagramm, wie API Gateway die vorherigen Routing-Regeln und API-Zuweisungen anwendet.\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/rr-diagram.png)


Die folgende Tabelle zeigt, wie API Gateway die vorherigen Routing-Regeln und API-Zuweisungen auf Beispielanfragen anwendet.


| Anfrage | Ausgewählte API | Erklärung | 
| --- | --- | --- | 
|  `https://petstore.diagram.com/pets`  |  Die `Prod`-Stufe der `PetStore`-API.  |  Die Anfrage entspricht der Routing-Regel `abc123`.  | 
|  `https://petstore.diagram.example.com/refunds -h "Cookie:lang=en-us;ux=beta"`  |  Die `Beta`-Stufe der `Refunds`-API.  |  Die Anfrage entspricht der Routing-Regel `000zzz`. Der `Cookie`-Header enthält die korrekte `*contains*`-Übereinstimmung und die Basispfadübereinstimmung für diese Bedingung.   | 
|  `https://petstore.diagram.example.com/refunds`  |  Die `Prod`-Stufe der `Refunds`-API.   |  Die Anfrage verfügt nicht über die erforderlichen Header, um mit der Routing-Regel `zzz000` übereinzustimmen. Wenn API Gateway eine Routing-Regel nicht erfolgreich abgleichen kann, greift es auf API-Zuweisungen zurück. API Gateway kann den Basispfad der `Prod`-Stufe der `Refunds`-API zuweisen.   | 
|  `https://petstore.diagram.example.com/`  |  Die `Prod`-Stufe der `Search`-API.   |  Die Anfrage stimmt mit der API-Zuweisung zum leeren Pfad `(none)` überein.  | 

## Beispiel 3: Routing-Regeln und API-Zuweisungen mit mehreren Ebenen
<a name="rest-api-routing-rules-examples-rule-and-mappings-with-multiple-levels"></a>

In diesem Beispiel ist für den benutzerdefinierten Domainnamen `https://petstore.backup.example.com` der Routing-Modus `ROUTING_RULE_THEN_API_MAPPING` festgelegt und es gelten die folgenden Routing-Regeln und API-Zuweisungen.

Die folgende Tabelle zeigt die Routing-Regeln für `https://petstore.backup.example.com`.


|  Regel-ID  |  Priorität  |  Bedingungen  |  Action  | 
| --- | --- | --- | --- | 
|  `abc123`  |   10   |   Wenn die Anfrage einen Header enthält: `Hello:World`   |   Ziel-API 1   | 
|  `000zzz`  |   50   |   Wenn die Anfrage die folgenden Header enthält: `Accept`:`image/webp` und `Pet:Dog-*` und wenn der Basispfad `PetStoreShopper` enthält  |  Ziel-API 2  | 

Die folgende Tabelle zeigt die API-Zuweisungen für `https://petstore.backup.example.com`.


|  API-Zuweisungen  |  Ausgewählte API  | 
| --- | --- | 
|   `PetStoreShopper`   |   Ziel-API 3   | 
|   `PetStoreShopper/cats`   |   Ziel-API 4   | 

Die folgende Tabelle zeigt, wie API Gateway die vorherigen Routing-Regeln und API-Zuweisungen auf Beispielanfragen anwendet.


| Anfrage | Ausgewählte API | Erklärung | 
| --- | --- | --- | 
|  `https://petstore.example.com/PetStoreShopper -h "Accept:image/webp", "Pet:Cats" `  |  Ziel-API 3  |  Die Anfrage verfügt nicht über die erforderlichen Header, um mit der Routing-Regel `zzz000` übereinzustimmen. Wenn API Gateway eine Routing-Regel nicht erfolgreich abgleichen kann, greift es auf API-Zuweisungen zurück. API Gateway kann den Basispfad der Ziel-API 3 zuweisen.  | 
|  `https://petstore.example.com/PetStoreShopper/cats -h "Hello:World"`  |  Ziel-API 1  |  Die Anfrage entspricht der Routing-Regel `abc123`. Wenn der Routing-Modus auf `ROUTING_RULE_THEN_API_MAPPING` festgelegt ist, haben Routing-Regeln immer Vorrang vor API-Zuweisungen.  | 
|  `https://petstore.example.com/Admin -h "Pet:Dog-Bella"`  |  Keine  |  Die Anfrage entspricht keiner Routing-Regel und keinen API-Zuweisungen. Da keine Standard-Routing-Regel vorliegt, lehnt API Gateway den Aufruf ab und sendet dem Aufrufer den Statuscode `403 Forbidden`.  | 

## Beispiel 4: Routing-Regeln für Platzhalter-Domainnamen
<a name="rest-api-routing-rules-examples-rule-for-wildcard-domains"></a>

In diesem Beispiel ist der benutzerdefinierte Domainname `https://*.example.com` ein Platzhalter-Domainname. Der Platzhalter unterstützt alle Subdomains, die auf dieselbe Domain zurückgeleitet werden. Die folgenden Beispiel-Routing-Regeln ändern dieses Verhalten, sodass Subdomains mithilfe des Headers an ein anderes Ziel APIs weiterleiten können. `Host`

Die folgende Tabelle zeigt die Routing-Regeln für `https://*.example.com`.


|  Regel-ID  |  Priorität  |  Bedingungen  |  Action  | 
| --- | --- | --- | --- | 
|  `abc123`  |   10   |   Wenn die Anfrage einen Header enthält: `Host:a.example.com`   |   Ziel-API 1   | 
|  `000zzz`  |   50   |   Wenn die Anfrage Header enthält: `Host:b.example.com`  |  Ziel-API 2  | 
|  `efg456`  |   500   |  Keine  |  Ziel-API 3  | 

Die folgende Tabelle zeigt, wie API Gateway die vorherigen Routing-Regeln auf Beispielanfragen anwendet.


| Anfrage | Ausgewählte API | Erklärung | 
| --- | --- | --- | 
|  `https://a.example.com`  |  Ziel-API 1  |  Der `Host`-Header ist `a.example.com`. Diese Anfrage entspricht der Routing-Regel `abc123`.  | 
|  `https://b.example.com`  |  Ziel-API 2  |  Der `Host`-Header ist `b.example.com`. Diese Anfrage entspricht der Routing-Regel `000zzz`.  | 
|  `https://testing.example.com`  |  Ziel-API 3  |  Dies entspricht der Auffang-Routing-Regel `efg456`.  | 

# Verwendung von Routing-Regeln
<a name="apigateway-routing-rules-use"></a>

Sie können eine Routingregel mit dem AWS-Managementkonsole AWS CLI, oder einem beliebigen AWS SDK erstellen. Nachdem Sie eine Regel erstellt haben, können Sie deren Priorität ändern.

## Erstellen einer Routing-Regel
<a name="rest-api-routing-rules-create"></a>

Das folgende Verfahren zeigt, wie Sie eine Routing-Regel für einen benutzerdefinierten Domainnamen erstellen, dessen Routing-Modus entweder auf `ROUTING_RULE_THEN_API_MAPPING` oder `ROUTING_RULE_ONLY` festgelegt ist.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie **Benutzerdefinierte Domainnamen** im Hauptnavigationsbereich aus. 

1. Wählen Sie einen benutzerdefinierten Domainnamen aus.

1. Wählen Sie auf der Registerkarte **Routing-Details** die Option **Routing-Regel hinzufügen** aus.

1. Wählen Sie **Neue Bedingung hinzufügen** aus, um eine neue Bedingung hinzuzufügen.

   Sie können eine Header- oder Basispfadbedingung hinzufügen. Um alle eingehenden Anfragen Ihrem benutzerdefinierten Domainnamen zuzuweisen, fügen Sie keine Bedingung hinzu. 

1. Verwenden Sie für **Aktion** das Dropdown-Menü, um Ihre Ziel-API und Ihre Zielstufe auszuwählen.

1. Wählen Sie **Weiter** aus.

1. Geben Sie im Prioritätsfeld eine Zahl für Ihre Priorität ein.

   API Gateway wertet Regeln in der Reihenfolge der Priorität aus, ausgehend vom niedrigsten Wert bis hin zum höchsten Wert.

   Wenn Sie eine Regel ohne Bedingung erstellen, empfehlen wir, eine Priorität mit hohem Wert zu verwenden.

1. Wählen Sie **Routing-Regel erstellen** aus.

------
#### [ AWS CLI ]

Mit dem folgenden [create-routing-rule](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-routing-rule.html)Befehl wird eine Routingregel mit der Priorität 50 erstellt. In diesem Beispiel leitet API Gateway alle eingehenden Anfragen, die die Header `Hello:World`, `x-version:beta` sowie den Basispfad `PetStoreShopper` enthalten, an die Ziel-API `a1b2c3` weiter.

```
 aws apigatewayv2 create-routing-rule \
  --domain-name 'api.example.com' \
  --priority 50 \
  --conditions '[
    {
      "MatchHeaders": {
        "AnyOf": [
          {
            "Header": "Hello",
            "ValueGlob": "World"
          }
        ]
      }
    },
    {
      "MatchHeaders": {
        "AnyOf": [
          {
            "Header": "x-version",
            "ValueGlob": "beta"
          }
        ]
      }
    },
    {
      "MatchBasePaths": {
        "AnyOf": [
          "PetStoreShopper"
        ]
      }
    }
  ]'\
  --actions '[
  {
    "InvokeApi": {
      "ApiId": "a1b2c3",
      "Stage": "prod"
    }
  }
 ]'
```

Die Ausgabe sieht wie folgt aus.

```
{
    "Actions": [
        {
            "InvokeApi": {
                "ApiId": "a1b2c3",
                "Stage": "prod",
                "StripBasePath": false
            }
        }
    ],
    "Conditions": [
        {
            "MatchHeaders": {
                "AnyOf": [
                    {
                        "Header": "Hello",
                        "ValueGlob": "World"
                    }
                ]
            }
        },
        {
            "MatchHeaders": {
                "AnyOf": [
                    {
                        "Header": "x-version",
                        "ValueGlob": "beta"
                    }
                ]
            }
        },
        {
            "MatchBasePaths": {
                "AnyOf": [
                    "PetStoreShopper"
                ]
            }
        }
    ],
    "Priority": 50,
    "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123",
    "RoutingRuleId": "abc123"
}
```

------

## Ändern der Priorität einer Routing-Regel
<a name="rest-api-routing-rules-change-priority"></a>

Sie können die Priorität einer Routing-Regel ändern. Dies tritt sofort in Kraft und kann beeinflussen, wie API-Benutzer Ihre benutzerdefinierten Domainnamen aufrufen. Wir empfehlen, beim Festlegen der Prioritäten Ihrer Routing-Regeln Lücken zwischen den Regeln zu lassen.

Stellen Sie sich beispielsweise zwei Routing-Regeln vor: Regel `abc123` mit einer Priorität von 50 und Regel `zzz000` mit einer Priorität von 150. Um die Priorität so zu ändern, dass API Gateway Regel `zzz000` zuerst auswertet, können Sie die Priorität von Regel `zzz000` auf 30 setzen.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie **Benutzerdefinierte Domainnamen** im Hauptnavigationsbereich aus. 

1. Wählen Sie einen benutzerdefinierten Domainnamen aus.

1. Wählen Sie auf der Registerkarte **Routing-Details** zunächst Ihre Routing-Regel und anschließend **Bearbeiten** aus. 

1. Wählen Sie **Weiter** aus.

1. Geben Sie unter „Priorität“ die neue Priorität ein.

1. Wählen Sie **Änderungen speichern ** aus.

------
#### [ AWS CLI ]

Der folgende [put-routing-rule](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/put-routing-rule.html)Befehl ändert die Priorität einer Routing-Regel. `abc123`

```
 aws apigatewayv2 put-routing-rule \
  --domain-name 'api.example.com' \
  --priority 30 \
  --routing-rule-id abc123 \
  --conditions '[
    {
      "MatchHeaders": {
        "AnyOf": [
          {
            "Header": "Hello",
            "ValueGlob": "World"
          }
        ]
      }
    },
    {
      "MatchHeaders": {
        "AnyOf": [
          {
            "Header": "x-version",
            "ValueGlob": "beta"
          }
        ]
      }
    },
    {
      "MatchBasePaths": {
        "AnyOf": [
          "PetStoreShopper"
        ]
      }
    }
  ]'\
  --actions '[
  {
    "InvokeApi": {
      "ApiId": "a1b2c3",
      "Stage": "prod"
    }
  }
 ]'
```

Die Ausgabe sieht wie folgt aus:

```
{
    "Actions": [
        {
            "InvokeApi": {
                "ApiId": "a1b2c3",
                "Stage": "prod",
                "StripBasePath": false
            }
        }
    ],
    "Conditions": [
        {
            "MatchHeaders": {
                "AnyOf": [
                    {
                        "Header": "Hello",
                        "ValueGlob": "World"
                    }
                ]
            }
        },
        {
            "MatchHeaders": {
                "AnyOf": [
                    {
                        "Header": "x-version",
                        "ValueGlob": "beta"
                    }
                ]
            }
        },
        {
            "MatchBasePaths": {
                "AnyOf": [
                    "PetStoreShopper"
                ]
            }
        }
    ],
    "Priority": 38,
    "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123",
    "RoutingRuleId": "abc123"
}
```

------

# API-Zuweisung mithilfe von Routing-Regeln neu erstellen
<a name="rest-api-routing-rules-recreate-api-mapping"></a>

Sie können eine API-Zuweisung mithilfe von Routing-Regeln neu erstellen. Um eine API-Zuweisung neu zu erstellen, stellen Sie sicher, dass das Entfernen des Basispfads aktiviert ist. Dadurch bleibt das Verhalten der API-Zuweisungen erhalten. Weitere Informationen finden Sie unter [Entfernen des Basispfads mit Basispfadbedingungen](rest-api-routing-rules.md#rest-api-routing-rules-condition-path-split).

Das folgende Tutorial zeigt, wie Sie die API-Zuweisung `https:// api.example.com/orders/v2/items/categories/5` als Routing-Regel neu erstellen. Außerdem erfahren Sie, wie Sie Ihre Zugriffsprotokolle aktualisieren, um die Routing-Regel-ID zu protokollieren, die API Gateway verwendet, um Datenverkehr an Ihre API zu senden.

------
#### [ AWS-Managementkonsole ]

**Um den Routingmodus auf ROUTING\$1RULE\$1THEN\$1 einzustellen API\$1MAPPING**

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie **Benutzerdefinierte Domainnamen** im Hauptnavigationsbereich aus. 

1. Wählen Sie Ihren benutzerdefinierten Domainnamen aus.

1. Wählen Sie unter **Domänendetails** die Option **Bearbeiten** aus.

1. **Wählen Sie für den **Routing-Modus ROUTING\$1RULE\$1THEN\$1**. API\$1MAPPING**

1. Wählen Sie **Speichern** aus. 

Nachdem Sie den Routing-Modus festgelegt haben, erstellen Sie die Routing-Regel.

**So erstellen Sie die Routing-Regel**

1. Wählen Sie auf der Registerkarte **Routing-Details** die Option **Routing-Regel hinzufügen** aus.

1. Wählen Sie **Neue Bedingung hinzufügen** und dann **Pfad** aus.

1. Geben Sie unter **Pfad** den Wert **orders/v2/items/categories/5** ein.

1. Wählen Sie für **Leerzeichen des Basispfads entfernen** die Option **Aktiv** aus.

1. Wählen Sie für **Ziel-API** Ihre Ziel-API aus.

1. Wählen Sie für **Zielstufe** Ihre Zielstufe aus.

1. Wählen Sie **Weiter** aus.

1. Geben Sie unter „Priorität“ eine Priorität ein.

   Auch wenn Sie Ihre bestehende API-Zuweisung beibehalten, verwendet API Gateway immer die neue Routing-Regel, da Routing-Regeln stets Vorrang vor API-Zuweisungen haben.

1. Wählen Sie **Änderungen speichern ** aus.

Nachdem Sie die Routing-Regel erstellt haben, aktualisieren Sie das Zugriffsprotokollformat für Ihre Stufe oder erstellen Sie ein neues Protokoll, um sicherzustellen, dass API Gateway Ihre Routing-Regel verwendet, um den Datenverkehr an Ihre API weiterzuleiten.

**So aktualisieren Sie Ihre Zugriffsprotokolle**

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie Ihre API aus.

1. Klicken Sie im Hauptnavigationsbereich auf **Stufen**.

1. Wählen Sie unter **Protokolle und Ablaufverfolgung** die Option **Bearbeiten** aus.

   Wenn Sie keine Protokollgruppe haben, siehe [Richten Sie die CloudWatch Protokollierung für REST APIs in API Gateway ein](set-up-logging.md).

1. Fügen Sie **\$1context.customDomain.routingRuleIdMatched** Ihrem Protokollformat hinzu.

   Diese Protokollgruppe zeichnet die Routing-Regel-ID auf, die API Gateway verwendet hat, um Datenverkehr an Ihre API zu senden. Weitere Informationen finden Sie unter [Ich kann nicht sagen, wie API Gateway Traffic an meinen gesendet hat APIs](rest-api-routing-rules-troubleshoot.md#rest-api-routing-rules-logging).

1. Wählen Sie **Speichern** aus.

Nachdem Sie Ihre Zugriffsprotokolle aktualisiert haben, rufen Sie Ihren benutzerdefinierten Domainnamen auf. Das folgende Beispiel zeigt einen curl-Befehl zum Aufrufen des benutzerdefinierten Domainnamens `https://api.example.com` mit dem Basispfad `orders/v2/items/categories/5`.

```
curl "https://api.example.com/orders/v2/items/categories/5"
```

Nachdem Sie Ihren benutzerdefinierten Domainnamen erfolgreich aufgerufen haben, vergewissern Sie sich, dass CloudWatch Logs das anzeigt. `routingRuleIdMatched` Informationen zur Verwendung der CloudWatch Logs-Konsole zum Anzeigen einer Protokollgruppe finden Sie unter[API Gateway Gateway-Protokollereignisse in der CloudWatch Konsole anzeigen](view-cloudwatch-log-events-in-cloudwatch-console.md).

------
#### [ AWS CLI ]

1. Verwenden Sie den folgenden [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-domain-name.html)Befehl, um den Domainnamen `api.example.com` zu aktualisieren, um den Routing-Modus zu verwenden`ROUTING_RULE_THEN_API_MAPPING`.

   ```
   aws apigatewayv2 update-domain-name \
     --domain-name 'api.example.com' \
     --routing-mode ROUTING_RULE_THEN_API_MAPPING
   ```

1. Verwenden Sie den folgenden [create-routing-rule](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-routing-rule.html)Befehl, um eine neue Routing-Regel zu erstellen, um die API-Zuordnung `https://api.example.com/orders/v2/items/categories/5` neu zu erstellen.

   ```
   aws apigatewayv2 create-routing-rule \
     --domain-name 'api.example.com' \
     --priority 50 \
     --conditions '[
     {
       "MatchBasePaths": {
         "AnyOf": [
           "orders/v2/items/categories/5"
         ]
       }
     }
   ]' \
     --actions '[
     {
       "InvokeApi": {
         "ApiId": "a1b2c3",
         "Stage": "prod",
         "StripBasePath": true
       }
     }
   ]'
   ```

1. Verwenden Sie den folgenden Befehl [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html), um das Format der Zugriffsprotokolle so zu aktualisieren, dass die Variable `$context.customDomain.routingRuleIdMatched` enthalten ist. Diese Variable zeichnet die Routing-Regel-ID auf, die API Gateway verwendet hat, um Datenverkehr an Ihre API zu senden. Sie verwenden dieses Protokoll als Bestätigung, dass API Gateway Ihre Routing-Regel verwendet, um Datenverkehr an Ihre API zu senden. Weitere Informationen finden Sie unter [Ich kann nicht sagen, wie API Gateway Traffic an meinen gesendet hat APIs](rest-api-routing-rules-troubleshoot.md#rest-api-routing-rules-logging).

   ```
   aws apigateway update-stage \
     --rest-api-id a1bc2c3 \
     --stage-name prod \
     --patch-operations "op=replace,path=/accessLogSettings/format,value='\$context.path \$context.customDomain.routingRuleIdMatched \$context.requestId \$context.extendedRequestId'"
   ```

   Wenn Sie keine Protokollgruppe haben, siehe [Richten Sie die CloudWatch Protokollierung für REST APIs in API Gateway ein](set-up-logging.md).

1. Verwenden Sie den folgenden curl-Befehl, um Ihren benutzerdefinierten Domainnamen mit dem Basispfad `orders/v2/items/categories/5` aufzurufen.

   ```
   curl "https://api.example.com/orders/v2/items/categories/5
   ```

1. Verwenden Sie den folgenden [filter-log-events](https://docs.aws.amazon.com/cli/latest/reference/logs/filter-log-events.html)Befehl, um die Protokollereignisse aus der Protokollgruppe abzurufen`access-log-group-orders`, die die Routingregel-ID `abc123` enthalten.

   ```
   aws logs filter-log-events --log-group-name access-log-group-orders --filter-pattern abc123
   ```

    Damit wird bestätigt, dass API Gateway die Routing-Regel verwendet hat, um den Datenverkehr an Ihre API zu senden.

------

# Fehlerbehebung bei Problemen mit Routing-Regeln
<a name="rest-api-routing-rules-troubleshoot"></a>

Die folgende Anleitung zur Fehlerbehebung kann helfen, Probleme mit Ihren Routing-Regeln zu beheben.

## Ich kann nicht sagen, wie API Gateway Traffic an meinen gesendet hat APIs
<a name="rest-api-routing-rules-logging"></a>

Sie können Zugriffsprotokolle für die Stufe Ihrer REST-API verwenden, um Ihre Routing-Regeln zu protokollieren und Fehler zu beheben. Mithilfe der Variablen `$context.customDomain.routingRuleIdMatched` können Sie die Routing-Regel-ID anzeigen, die API Gateway verwendet hat, um Datenverkehr an Ihre API zu senden. Um die API-Zuweisung anzuzeigen, die API Gateway verwendet hat, um Datenverkehr an Ihre API zu senden, verwenden Sie die Variable `$context.customDomain.basePathMatched`. 

 Um Ihre Routing-Regeln zu protokollieren, müssen Sie [einen entsprechenden CloudWatch Logs-Rollen-ARN](set-up-logging.md#set-up-access-logging-permissions) für Ihr Konto konfigurieren und eine Protokollgruppe erstellen.

Die folgende Beispielprotokollgruppe für Zugriffsprotokolle kann die relevanten Informationen zum Beheben von Problemen mit Routing-Regeln und API-Zuweisungen abrufen. API Gateway füllt die Kontextvariable nur für den Routing-Mechanismus aus, den es tatsächlich verwendet hat. Andernfalls ist die Kontextvariable `-`. 

------
#### [ CLF ]

```
$context.path $context.customDomain.routingRuleIdMatched $context.customDomain.basePathMatched $context.requestId $context.extendedRequestId
```

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

```
{"requestPath": "$context.path", "routingRuleId" : "$context.customDomain.routingRuleIdMatched", "API mapping" : "$context.customDomain.basePathMatched", "requestId":"$context.requestId", "extendedRequestId":"$context.extendedRequestId"}
```

------
#### [ XML ]

```
<request id="$context.requestId"> <requestPath>$context.path</requestPath> <ruleId>$context.customDomain.routingRuleIdMatched</ruleId> <ApiMapping>$context.customDomain.basePathMatched</ApiMapping> <extendedRequestId>$context.extendedRequestId</extendedRequestId> </request>
```

------
#### [ CSV ]

```
$context.path,$context.customDomain.routingRuleIdMatched,$context.customDomain.basePathMatched,$context.requestId,$context.extendedRequestId
```

------

Wir empfehlen außerdem, den Routing-Modus für Ihren benutzerdefinierten Domainnamen zu bestätigen. Weitere Informationen finden Sie unter [Festlegen des Routing-Modus für Ihren benutzerdefinierten Domainnamen](set-routing-mode.md).

## Ich kann keine Routing-Regeln für meinen benutzerdefinierten Domainnamen aktivieren
<a name="rest-routing-rules-access-denied"></a>

Möglicherweise erhalten Sie den folgenden Fehler von API Gateway:

```
Your account doesn’t have permission to use RoutingRules.
This might be caused by an IAM policy in your account with a deny statement on BasePathMapping or ApiMapping.
To grant permission for this account to use RoutingRules, use the UpdateAccount API.
This will impact any existing IAM policies that deny access to BasePathMapping or ApiMapping.
See API Gateway documentation for further details.
```

Sie erhalten diesen Fehler, wenn Sie eine IAM-Richtlinie haben oder hatten, die den Zugriff [BasePathMapping](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonapigatewaymanagement.html#amazonapigatewaymanagement-resources-for-iam-policies)auf oder verweigert. [ApiMapping](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonapigatewaymanagementv2.html#amazonapigatewaymanagementv2-resources-for-iam-policies) Wenn Sie Routing-Regeln für einen benutzerdefinierten Domainnamen aktivieren, wird der Zugriff auf `BasePathMapping` oder `ApiMapping` durch Ihre Richtlinie weiterhin verweigert. Dieselbe Richtlinie kann jedoch verwendet werden, um auf `RoutingRule` zuzugreifen. Dadurch könnte ein Benutzer das Routing-Verhalten Ihres benutzerdefinierten Domainnamens ändern.

Wenn Sie beispielsweise eine Richtlinie wie die folgende hatten:

```
{
    "Sid": "DenyCreatingApiMappings",
    "Effect": "Deny",
    "Action": "apigateway:POST",
    "Resource": [
        "arn:aws:apigateway:us-west-2::/domainnames/example.com/apimappings"
    ]
}
```

Wenn Sie Routing-Regeln für `example.com` aktivieren, wird durch diese Richtlinie weiterhin der Zugriff auf das Erstellen einer `ApiMapping` verweigert, aber der Zugriff auf das Erstellen einer `RoutingRule` wird nicht verweigert.

Wir empfehlen, die IAM-Richtlinien in Ihrem Konto zu überprüfen. Die folgende Beispielrichtlinie verweigert den Zugriff auf das Erstellen von `ApiMapping`, `BasePathMapping` und`RoutingRule`:

```
{
    "Sid": "DenyCreatingBasePathMappingsApiMappings",
    "Effect": "Deny",
    "Action": "apigateway:POST",
    "Resource": [
        "arn:aws:apigateway:us-west-2::/domainnames/example.com/basepathmappings",
        "arn:aws:apigateway:us-west-2::/domainnames/example.com/apimappings"
    ]
},
{
    "Sid": "DenyCreatingRoutingRules",
    "Effect": "Deny",
    "Action": "apigateway:CreateRoutingRule",
    "Resource": [
        "arn:aws:apigateway:us-west-2:111122223333:/domainnames/example.com/routingrules/*"
    ]
}
```

Nachdem Sie bestätigt haben, dass alle Ihre Richtlinien aktualisiert wurden, können Sie die kontoweiten Einstellungen Ihrer API aktualisieren, um Routing-Regeln für eine Region zu aktivieren.

Verwenden Sie dazu den folgenden [update-account](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-account.html)-Befehl, um die Einstellungen für die kontoweiten API-Einstellungen für eine Region zu aktualisieren:

```
aws apigateway update-account --patch-operations 'op=remove,path=/features,value=BlockedForRoutingRules' --region us-west-2
```

Nachdem Sie die kontoweiten Einstellungen Ihrer API aktualisiert haben, können Sie den Routing-Modus Ihres benutzerdefinierten Domainnamens ändern. Sie können außerdem weiterhin IAM-Richtlinien verwenden, um den Zugriff auf `RoutingRules`, `ApiMapping` oder `BasePathMapping` zu verweigern.

# Verwenden Sie API-Zuordnungen, um API-Stufen mit einem benutzerdefinierten Domainnamen für REST zu verbinden APIs
<a name="rest-api-mappings"></a>

Sie verwenden API-Mappings, um API-Stufen mit einem benutzerdefinierten Domain-Namen zu verbinden. Dadurch wird Traffic APIs über Ihren benutzerdefinierten Domainnamen an Sie gesendet.

Ein API-Mapping gibt eine API, eine Phase und optional einen Pfad an, die für das Mapping verwendet werden sollen. Sie können beispielsweise `https://api.example.com/orders` die `production` Stufe einer API zuordnen.

Sie können HTTP-API- und REST-API--Stufen demselben benutzerdefinierten Domain-Namen zuweisen.

Bevor Sie ein API-Mapping erstellen, benötigen Sie eine API, eine Phase und einen benutzerdefinierten Domain-Namen. Weitere Informationen zum Erstellen eines benutzerdefinierten Domain-Namens finden Sie unter [Einrichten eines regionalen benutzerdefinierten Domainnamens in API Gateway](apigateway-regional-api-custom-domain-create.md).

## Eingehende Anfragen an Ihren benutzerdefinierten Domainnamen
<a name="rest-api-mappings-incoming-requests"></a>

Wenn Sie einer Phase Ihrer API einen benutzerdefinierten Domainnamen zuordnen, entfernt API Gateway den eingehenden Basispfad. Dadurch wird der zugeordnete Basispfad aus dem API-Aufruf entfernt. Wenn Ihre Basispfad-Zuordnung beispielsweise der `test` Phase entspricht und Sie die folgende Anfrage verwenden`https://api.example.com/orders/shop/5/hats`, würde API Gateway die `/hats` Ressource der `test` Stufe Ihrer API aufrufen, nicht die `orders/shop/5/hats` Ressource. `https://api.example.com/orders/shop/5`

## API-Anfragen zuordnen
<a name="rest-api-mappings-evalutation"></a>

Im Folgenden wird erklärt, wie API Gateway API-Zuordnungen auswertet.

Sie können eine API-Zuordnung mithilfe einstufiger Zuordnungen erstellen, z. B. einer API-Zuordnung von `orders` der `beta` Stufe einer API und einer API-Zuordnung von `shipping` der Stufe einer API. `alpha` Für regionale benutzerdefinierte Domainnamen mit der Sicherheitsrichtlinie TLS 1.2 unterstützt API Gateway mehrstufige API-Zuordnungen. Sie können eine API-Zuordnung zwischen `orders/v1/items` der `alpha` Stufe einer API und `orders/v2/items` der `beta` Phase einer API erstellen. Wenn Sie ein Mapping mit mehreren Ebenen erstellen, sendet API Gateway Anfragen an das API-Mapping, das den längsten passenden Pfad hat.

Sie können eine API-Zuordnung zu dem leeren Pfad erstellen`(none)`. Wenn kein Pfad mit der Anfrage übereinstimmt, sendet API Gateway die Anfrage an den leeren Pfad`(none)`.

In diesem Beispiel `https://api.example.com` hat der benutzerdefinierte Domainname die folgenden API-Zuordnungen.


|  API-Zuordnung  |  Ausgewählte API  | 
| --- | --- | 
|  `(none)`  |   API 1   | 
|   `orders`   |   API 2   | 
|  `orders/v1/items`  |   API 3   | 
|  `orders/v2/items`  |   API 4   | 
|  `orders/v1/items/categories`  |   API 5   | 

Die folgende Tabelle zeigt, wie API Gateway die vorherigen API-Zuordnungen auf Beispielanfragen anwendet.


| Anfrage | Ausgewählte API | Erklärung | 
| --- | --- | --- | 
|  `https://api.example.com/orders`  |  API 2  |  Die Anforderung stimmt genau mit diesem API-Mapping überein.  | 
|  `https://api.example.com/orders/v1/items`  |  API 3  |  Die Anforderung stimmt genau mit diesem API-Mapping überein.  | 
|  `https://api.example.com/orders/v2/items`  |  API 4  |  Die Anforderung stimmt genau mit diesem API-Mapping überein.  | 
|  `https://api.example.com/orders/v1/items/123`  |  API 3  |  API Gateway wählt das Mapping aus, das den längsten Übereinstimmungspfad hat. Das `123` am Ende der Anforderung hat keinen Einfluss auf die Auswahl. Siehe [Eingehende Anfragen an Ihren benutzerdefinierten Domainnamen](#rest-api-mappings-incoming-requests).  | 
|  `https://api.example.com/orders/v2/items/categories/5`  |  API 5  |  API Gateway wählt das Mapping aus, das den längsten Übereinstimmungspfad hat.  | 
|  `https://api.example.com/customers`  |  API 1  |  API Gateway verwendet das leere Mapping als Catch-All.  | 
|  `https://api.example.com/ordersandmore`  |  API 2  |  API Gateway wählt das Mapping aus, das den längsten Übereinstimmungspräfix hat. Bei einem benutzerdefinierten Domain-Namen, der mit einstufigen Mappings konfiguriert ist, z. B. nur `https://api.example.com/orders` und `https://api.example.com/`, würde API Gateway `API 1` auswählen, da es keinen passenden Pfad mit `ordersandmore` gibt.  | 

## Einschränkungen
<a name="rest-api-mappings-restrictions"></a>
+ Bei einer API-Zuordnung APIs müssen sich der benutzerdefinierte Domainname und der zugeordnete Domainname im selben AWS Konto befinden.
+ API-Mappings dürfen nur Buchstaben, Zahlen und die folgenden Zeichen enthalten: `$-_.+!*'()/`.
+ Die maximale Länge für den Pfad in eines API-Mappings beträgt 300 Zeichen.
+ Es können 200 API-Zuweisungen mit mehreren Ebenen für jeden Domainnamen vorhanden sein. Dieses Limit beinhaltet keine API-Zuordnung mit einzelnen Ebenen, wie `/prod` z.
+ Mit der Sicherheitsrichtlinie TLS 1.2 können Sie HTTP APIs nur einem regionalen benutzerdefinierten Domainnamen zuordnen.
+ Sie können nicht demselben benutzerdefinierten Domainnamen wie eine HTTP-API oder REST-API zuordnen. WebSocket APIs 
+ Sie müssen den Ressourceneintrag Ihres DNS-Anbieters erstellen oder aktualisieren, um ihn dem API-Endpunkt zuzuordnen, nachdem Sie Ihre API-Zuweisungen erstellt haben.
+ Wenn Sie mehrstufige API-Zuweisungen erstellen, konvertiert API Gateway alle Header-Namen in Kleinbuchstaben.

## Ein API-Mapping erstellen
<a name="rest-api-mappings-examples"></a>

Um ein API-Mapping zu erstellen, müssen Sie zuerst einen benutzerdefinierten Domain-Namen, eine API und eine Phase erstellen. Für Ihren benutzerdefinierten Domainnamen muss der Routing-Modus entweder auf `ROUTING_RULE_THEN_API_MAPPING` oder eingestellt sein`API_MAPPING_ONLY`. Informationen zum Einstellen des Routingmodus finden Sie unter[Festlegen des Routing-Modus für Ihren benutzerdefinierten Domainnamen](set-routing-mode.md).

 AWS Serverless Application Model Vorlagen, mit denen alle Ressourcen erstellt werden, finden Sie beispielsweise unter [Sitzungen mit aktiviertem SAM](https://github.com/aws-samples/sessions-with-aws-sam/tree/master/custom-domains) GitHub.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie **Benutzerdefinierten Domänennamen** im Hauptnavigationsbereich aus. 

1. Wählen Sie einen benutzerdefinierten Domänennamen aus.

1. Wählen Sie auf der Registerkarte **Routing-Details** die Option API-Zuordnungen **konfigurieren** aus.

1. Geben Sie die **API**, die **Stufe** und den **Pfad** für die Zuweisung an.

1. Wählen Sie **Speichern**.

------
#### [ AWS CLI ]

Mit dem folgenden [create-api-mapping](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-api-mapping.html)-Befehl wird ein API-Mapping erstellt. In diesem Beispiel sendet API Gateway Anforderungen an `api.example.com/v1/orders` an die angegebene API und Phase.

**Anmerkung**  
Um API-Mappings mit mehreren Ebenen zu erstellen, müssen Sie `apigatewayv2` verwenden.

```
aws apigatewayv2 create-api-mapping \
    --domain-name api.example.com \
    --api-mapping-key v1/orders \
    --api-id a1b2c3d4 \
    --stage test
```

------
#### [ CloudFormation ]

Im folgenden CloudFormation Beispiel wird eine API-Zuordnung erstellt.

**Anmerkung**  
Um API-Mappings mit mehreren Ebenen zu erstellen, müssen Sie `AWS::ApiGatewayV2` verwenden.

```
MyApiMapping:
  Type: 'AWS::ApiGatewayV2::ApiMapping'
  Properties:
    DomainName: api.example.com
    ApiMappingKey: 'orders/v2/items'
    ApiId: !Ref MyApi
    Stage: !Ref MyStage
```

------

# IP-Adresstypen für benutzerdefinierte Domainnamen in API Gateway
<a name="rest-custom-domain-ip-address-type"></a>

Wenn Sie einen benutzerdefinierten Domainnamen erstellen, geben Sie den Typ der IP-Adressen an, über die Ihre Domain aufgerufen werden kann. Sie können wählen IPv4 , ob IPv4 Adressen aufgelöst werden sollen, um Ihre Domain aufzurufen, oder Sie können Dualstack wählen, sodass IPv4 sowohl IPv6 Adressen als auch Adressen Ihre Domain aufrufen können. Wir empfehlen Ihnen, den IP-Adresstyp auf Dual-Stack einzustellen, um die Erschöpfung des IP-Speicherplatzes zu verringern oder um Ihre Sicherheitslage zu verbessern. [Weitere Informationen zu den Vorteilen eines Dual-Stack-IP-Adresstyps finden Sie unter. IPv6 AWS](https://docs.aws.amazon.com/whitepapers/latest/ipv6-on-aws/internet-protocol-version-6.html)

Sie können den IP-Adresstyp ändern, indem Sie die Endpunktkonfiguration Ihres Domainnamens aktualisieren.

## Überlegungen zu IP-Adresstypen
<a name="api-gateway-ip-address-type-considerations"></a>

Die folgenden Überlegungen können sich auf Ihre Verwendung von IP-Adresstypen auswirken.
+ Der Standard-IP-Adresstyp für benutzerdefinierte API Gateway Gateway-Domänennamen für die Öffentlichkeit APIs ist IPv4.
+ Private benutzerdefinierte Domainnamen können nur einen Dual-Stack-IP-Adresstyp haben.
+ Ihr benutzerdefinierter Domainname muss nicht für alle, die ihm APIs zugeordnet sind, denselben IP-Adresstyp haben. Wenn Sie Ihren Standard-API-Endpunkt deaktivieren, kann dies Auswirkungen darauf haben, wie Anrufer Ihre Domain aufrufen können.

## Ändern Sie den IP-Adresstyp eines benutzerdefinierten Domainnamens
<a name="rest-custom-domain-ip-address-type-change"></a>

Sie können den IP-Adresstyp ändern, indem Sie die Endpunktkonfiguration des Domainnamens aktualisieren. Sie können die Endpunktkonfiguration aktualisieren, indem Sie das AWS-Managementkonsole, AWS CLI CloudFormation, oder ein AWS SDK verwenden.

------
#### [ AWS-Managementkonsole ]

**Um den IP-Adresstyp eines benutzerdefinierten Domainnamens zu ändern**

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie einen öffentlichen benutzerdefinierten Domainnamen.

1. Wählen Sie **Endpunktkonfiguration**.

1. Wählen Sie als IP-Adresstyp entweder **IPv4**oder **Dualstack** aus.

1. Wählen Sie **Speichern**.

------
#### [ AWS CLI ]

Mit dem folgenden [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Befehl wird eine API aktualisiert, sodass sie den IP-Adresstyp Dualstack hat:

```
aws apigateway update-domain-name \
    --domain-name dualstack.example.com \
    --patch-operations "op='replace',path='/endpointConfiguration/ipAddressType',value='dualstack'"
```

Die Ausgabe sieht wie folgt aus:

```
{
    "domainName": "dualstack.example.com",
    "certificateUploadDate": "2025-02-04T14:46:10-08:00",
    "regionalDomainName": "d-abcd1234.execute-api.us-east-1.amazonaws.com",
    "regionalHostedZoneId": "Z3LQWSYCGH4ADY",
    "regionalCertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef",
    "endpointConfiguration": {
        "types": [
            "REGIONAL"
        ],
        "ipAddressType": "dualstack"
    },
    "domainNameStatus": "AVAILABLE",
    "securityPolicy": "TLS_1_2",
    "tags": {}
}
```

------

# Wählen Sie eine Sicherheitsrichtlinie für Ihre benutzerdefinierte Domain in API Gateway
<a name="apigateway-custom-domain-tls-version"></a>

Eine *Sicherheitsrichtlinie* ist eine vordefinierte Kombination aus einer minimalen TLS-Version und Verschlüsselungssuites, die von API Gateway angeboten werden. Wenn Ihre Clients einen TLS-Handshake mit Ihrer API oder Ihrem benutzerdefinierten Domain-Namen erfordern, setzt die Sicherheitsrichtlinie die TLS-Version und die Verschlüsselungssuite durch, die von API Gateway akzeptiert werden. Sicherheitsrichtlinien schützen Ihre APIs und benutzerdefinierte Domainnamen vor Netzwerksicherheitsproblemen wie Manipulation und Abhören zwischen einem Client und einem Server.

API Gateway unterstützt ältere Sicherheitsrichtlinien und erweiterte Sicherheitsrichtlinien. `TLS_1_0`und `TLS_1_2` sind veraltete Sicherheitsrichtlinien. Verwenden Sie diese Sicherheitsrichtlinien für allgemeine Workloads oder um mit der Erstellung einer API zu beginnen. Jede Richtlinie, die mit beginnt, `SecurityPolicy_` ist eine erweiterte Sicherheitsrichtlinie. Sie können diese Richtlinien für regulierte Workloads, erweiterte Governance oder die Verwendung von Post-Quanten-Kryptographie verwenden. Wenn Sie eine optimierte Sicherheitsrichtlinie verwenden, müssen Sie auch den Endpunktzugriffsmodus festlegen, um zusätzliche Governance bereitzustellen. Weitere Informationen finden Sie unter [Endpunktzugriffsmodus](apigateway-security-policies.md#apigateway-security-policies-endpoint-access-mode).

## Überlegungen
<a name="apigateway-custom-domain-tls-version-considerations"></a>

Im Folgenden finden Sie Überlegungen zu Sicherheitsrichtlinien für benutzerdefinierte Domainnamen für REST APIs in API Gateway:
+ Sie können Mutual TLS nicht für einen Domainnamen aktivieren, der eine erweiterte Sicherheitsrichtlinie verwendet.
+ Sie können einem Domainnamen, der eine erweiterte Sicherheitsrichtlinie verwendet, keine HTTP-API zuordnen.
+ Wenn Sie die mehrstufige Basispfadzuordnung zu einer REST-API aktivieren, die eine erweiterte Sicherheitsrichtlinie verwendet, können Sie keine Basispfadzuordnung zu einer HTTP-API für denselben Domainnamen erstellen.
+ Ihre API kann einem benutzerdefinierten Domainnamen mit einer anderen Sicherheitsrichtlinie als Ihrer API zugeordnet werden. Wenn Sie diesen benutzerdefinierten Domainnamen aufrufen, verwendet API Gateway die Sicherheitsrichtlinie der API, um den TLS-Handshake auszuhandeln. Wenn Sie Ihren Standard-API-Endpunkt deaktivieren, kann dies die Art und Weise beeinflussen, wie Aufrufer Ihre API aufrufen können.
+ API Gateway unterstützt Sicherheitsrichtlinien für alle APIs. Sie können jedoch nur eine Sicherheitsrichtlinie für REST auswählen APIs. API Gateway unterstützt nur die `TLS_1_2` Sicherheitsrichtlinie für HTTP oder WebSocket APIs.
+ API Gateway unterstützt nicht die Aktualisierung einer Sicherheitsrichtlinie für einen Domainnamen mit mehreren Endpunkttypen. Wenn Sie mehrere Endpunkttypen für einen Domainnamen haben, löschen Sie einen davon, um die Sicherheitsrichtlinie zu aktualisieren.

## Wie API Gateway Sicherheitsrichtlinien anwendet
<a name="apigateway-custom-domain-tls-version-understanding"></a>

Das folgende Beispiel zeigt am Beispiel der Sicherheitsrichtlinie, wie API Gateway `SecurityPolicy_TLS13_1_3_2025_09` Sicherheitsrichtlinien anwendet.

Die `SecurityPolicy_TLS13_1_3_2025_09` Sicherheitsrichtlinie akzeptiert TLS 1.3-Verkehr und lehnt TLS 1.2- und TLS 1.0-Verkehr ab. Für TLS 1.3-Verkehr akzeptiert die Sicherheitsrichtlinie die folgenden Verschlüsselungssammlungen:
+ `TLS_AES_128_GCM_SHA256`
+ `TLS_AES_256_GCM_SHA384`
+ `TLS_CHACHA20_POLY1305_SHA256`

API Gateway akzeptiert keine anderen Cipher Suites. Zum Beispiel würde die Sicherheitsrichtlinie jeglichen TLS 1.3-Verkehr ablehnen, der die `AES128-SHA` Cipher Suite verwendet.

Um zu überwachen, welches TLS-Protokoll und welche Chiffren Clients für den Zugriff auf Ihr API Gateway verwendet haben, können Sie die `$context.cipherSuite` Kontextvariablen `$context.tlsVersion` und in Ihren Zugriffsprotokollen verwenden. Weitere Informationen finden Sie unter [REST APIs in API Gateway überwachen](rest-api-monitor.md).

Die Standardsicherheitsrichtlinien für alle REST APIs - und benutzerdefinierten Domainnamen finden Sie unter. [Standard-Sicherheitsrichtlinien](apigateway-security-policies-list.md#apigateway-security-policies-default) Informationen zu den unterstützten Sicherheitsrichtlinien für alle REST APIs - und benutzerdefinierten Domainnamen finden Sie unter[Unterstützte Sicherheitsrichtlinien](apigateway-security-policies-list.md).

## Ändern Sie die Sicherheitsrichtlinie Ihres benutzerdefinierten Domainnamens
<a name="apigateway-security-policies-update-custom-domain-name"></a>

Wenn Sie Ihre Sicherheitsrichtlinie ändern, dauert es etwa 15 Minuten, bis das Update abgeschlossen ist. Sie können den Wert `lastUpdateStatus` Ihres benutzerdefinierten Domainnamens überwachen. Wenn Ihr benutzerdefinierter Domainname aktualisiert wird, `lastUpdateStatus` ist er `PENDING` und wenn er abgeschlossen ist, wird er es auch sein`AVAILABLE`.

Wenn Sie eine Sicherheitsrichtlinie verwenden, die mit beginnt`SecurityPolicy_`, müssen Sie auch den Endpunktzugriffsmodus aktivieren. Weitere Informationen finden Sie unter [Endpunktzugriffsmodus](apigateway-security-policies.md#apigateway-security-policies-endpoint-access-mode).

------
#### [ AWS-Managementkonsole ]

**Um die Sicherheitsrichtlinie eines benutzerdefinierten Domänennamens zu ändern**

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie einen benutzerdefinierten Domainnamen, der Traffic an REST sendet. APIs

   Stellen Sie sicher, dass Ihrem benutzerdefinierten Domainnamen nur ein Endpunkttyp zugeordnet ist.

1. Wählen Sie **Benutzerdefinierte Domainnamen-Einstellungen** und dann **Bearbeiten** aus.

1. Wählen Sie für **Sicherheitsrichtlinie** eine neue Richtlinie aus.

1. Wählen Sie für **den Endpunktzugriffsmodus** die Option **Strict** aus.

1. Wählen Sie **Änderungen speichern ** aus.

------
#### [ AWS CLI ]

Mit dem folgenden [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-domain-name.html)Befehl wird ein Domainname aktualisiert, sodass er die `SecurityPolicy_TLS13_1_3_2025_09` Sicherheitsrichtlinie verwendet:

```
aws apigateway update-domain-name \
    --domain-name example.com \
    --patch-operations '[
        {
            "op": "replace",
            "path": "/securityPolicy",
            "value": "SecurityPolicy_TLS13_1_3_2025_09"
        }, 
        {
            "op": "replace",
            "path": "/endpointAccessMode",
            "value": "STRICT"
        }
    ]'
```

Die Ausgabe sieht wie folgt aus:

```
{
   "domainName": "example.com",
   "endpointConfiguration": { 
      "types": [ "REGIONAL" ], 
      "ipAddressType": "dualstack" 
   },
   "regionalCertificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/a1b2c3d4-5678-90ab-cdef",
   "securityPolicy": "SecurityPolicy_TLS13_1_3_2025_09",
   "endpointAccessMode": "STRICT"
}
```

------

## Informationen zu HTTP APIs und WebSocket APIs
<a name="apigateway-rest-additional-apis"></a>

Weitere Hinweise zu HTTP APIs und WebSocket APIs finden Sie unter [Sicherheitsrichtlinie für HTTP APIs in API Gateway](http-api-ciphers.md) und[Sicherheitsrichtlinie für WebSocket APIs in API Gateway](websocket-api-ciphers.md).

# Deaktivieren Sie den Standardendpunkt für REST APIs
<a name="rest-api-disable-default-endpoint"></a>

Standardmäßig können Clients Ihre API mithilfe des `execute-api`-Endpunkts aufrufen, den API Gateway für Ihre API generiert. Um sicherzustellen, dass Kunden nur über einen benutzerdefinierten Domänennamen auf Ihre API zugreifen können, deaktivieren Sie den standardmäßigen `execute-api`-Endpunkt. Clients können weiterhin eine Verbindung mit Ihrem Standardendpunkt herstellen, erhalten jedoch einen `403 Forbidden`-Statuscode. Die Deaktivierung des Standardendpunkts wirkt sich auf alle Stufen der API aus. Diese Einstellung wird wirksam, wenn Sie eine beliebige Einstellung auf einer Stufe aktualisieren, beispielsweise die Bereitstellung in der Stufe.

Im folgenden Vorgang sehen Sie, wie Sie den Standardendpunkt einer REST-API deaktivieren.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der API Gateway Gateway-Konsole unter [https://console.aws.amazon.com/apigatewayan](https://console.aws.amazon.com/apigateway).

1. Wählen Sie eine REST-API aus.

1. Klicken Sie im Hauptnavigationsbereich auf **API-Einstellungen**.

1. Wählen Sie eine API aus.

1. Klicken Sie unter **API-Details** auf **Bearbeiten**.

1. Wählen Sie unter **Standardendpunkt** die Option **Inaktiv** aus.

1. Wählen Sie **Änderungen speichern ** aus.

1. Klicken Sie im Hauptnavigationsbereich auf **Ressourcen**.

1. Klicken Sie auf **Deploy API**.

1. Stellen Sie Ihre API erneut in einer Stufe bereit oder aktualisieren Sie eine beliebige Einstellung in einer Stufe, damit die Aktualisierung wirksam wird.

------
#### [ AWS CLI ]

Der folgende [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html)Befehl deaktiviert den Standardendpunkt: 

```
aws apigateway update-rest-api \
    --rest-api-id abcdef123 \
    --patch-operations op=replace,path=/disableExecuteApiEndpoint,value='True'
```

Nachdem Sie den Standardendpunkt deaktiviert haben, müssen Sie Ihre API bereitstellen, damit die Änderung wirksam wird.

Der folgende [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-deployment.html)-Befehl erstellt eine Bereitstellung und ordnet sie einer Stufe zu:

```
aws apigateway create-deployment \
    --rest-api-id abcdef123 \
    --stage-name dev
```

------

# Konfigurieren benutzerdefinierter Zustandsprüfungen für das DNS-Failover einer API-Gateway-API
<a name="dns-failover"></a>

Sie können Amazon Route 53-Zustandsprüfungen verwenden, um den DNS-Failover von einer API-Gateway-API in einer primären AWS-Region zu einer in einer sekundären Region zu kontrollieren. Dies kann dazu beitragen, die Auswirkungen im Falle eines regionalen Problems zu mildern. Wenn Sie eine benutzerdefinierte Domäne verwenden, können Sie ein Failover durchführen, ohne dass die Clients die API-Endpunkte ändern müssen.

Wenn Sie [Zielzustand bewerten](https://docs.aws.amazon.com/Route53/latest/APIReference/API_AliasTarget.html#Route53-Type-AliasTarget-EvaluateTargetHealth>Evaluate Target Health) für einen Aliasdatensatz auswählen, schlagen diese Datensätze nur fehl, wenn der API-Gateway-Service in der Region nicht verfügbar ist. In einigen Fällen APIs kann es vor diesem Zeitpunkt zu einer Unterbrechung Ihres eigenen API Gateway kommen. Um das DNS-Failover direkt zu steuern, konfigurieren Sie benutzerdefinierte Route 53-Zustandsprüfungen für Ihr API Gateway APIs. In diesem Beispiel verwenden Sie einen CloudWatch Alarm, mit dem Betreiber das DNS-Failover steuern können. Weitere Beispiele und andere Überlegungen zur Konfiguration von Failover finden Sie unter [Erstellen von Notfallwiederherstellungsmechanismen mithilfe von Route 53](https://aws.amazon.com/blogs/networking-and-content-delivery/creating-disaster-recovery-mechanisms-using-amazon-route-53/) und [Durchführen von Route 53-Zustandsprüfungen für private Ressourcen in einer VPC mit AWS Lambda](https://aws.amazon.com/blogs/networking-and-content-delivery/performing-route-53-health-checks-on-private-resources-in-a-vpc-with-aws-lambda-and-amazon-cloudwatch/) und. CloudWatch

**Topics**
+ [Voraussetzungen](#dns-failover-prereqs)
+ [Schritt 1: Einrichten der Ressourcen](#dns-failover-intial-setup)
+ [Schritt 2: Initiieren des Failovers zur sekundären Region](#dns-failover-initiate)
+ [Schritt 3: Testen des Failovers](#dns-failover-test)
+ [Schritt 4: Rückkehr zur Primärregion](#dns-failover-return)
+ [Nächste Schritte: Anpassen und regelmäßig testen](#dns-failover-next-steps)

## Voraussetzungen
<a name="dns-failover-prereqs"></a>

Um dieses Verfahren abzuschließen, müssen Sie die folgenden Ressourcen erstellen und konfigurieren:
+ Eine Web-Domäne in Ihrem Besitz.
+ Ein ACM-Zertifikat für diesen Domainnamen in zwei Teilen. AWS-Regionen Weitere Informationen finden Sie unter [Voraussetzungen für benutzerdefinierte Domainnamen](how-to-custom-domains.md#how-to-custom-domains-prerequisites).
+ Eine gehostete Route-53-Zone für Ihren Domänennamen. Weitere Informationen finden Sie unter [Arbeiten mit gehosteten Zonen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-working-with.html) im Entwicklerhandbuch für Amazon Route 53.

Weitere Informationen zum Erstellen von Route-53-Failover-DNS-Einträgen für die Domain-Namen finden Sie unter [Eine Routing-Richtlinie auswählen](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html) im Amazon-Route-53-Entwicklerhandbuch. Weitere Informationen zur Überwachung eines CloudWatch Alarms finden Sie unter [Überwachung eines CloudWatch Alarms](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-creating-values.html#health-checks-creating-values-cloudwatch) im Amazon Route 53-Entwicklerhandbuch.

## Schritt 1: Einrichten der Ressourcen
<a name="dns-failover-intial-setup"></a>

In diesem Beispiel erstellen Sie die folgenden Ressourcen, um das DNS-Failover für Ihren Domänennamen zu konfigurieren:
+ API Gateway APIs in zwei Teilen AWS-Regionen
+ API Gateway benutzerdefinierte Domainnamen mit demselben Namen in zwei AWS-Regionen
+ API-Gateway-API-Zuordnungen, die Ihr API Gateway mit APIs den benutzerdefinierten Domainnamen verbinden
+ Route-53-Failover-DNS-Einträge für die Domänennamen
+ Ein CloudWatch Alarm in der sekundären Region
+ Eine Route 53-Zustandsprüfung auf der Grundlage des CloudWatch Alarms in der sekundären Region

Stellen Sie zunächst sicher, dass Sie über alle erforderlichen Ressourcen in den primären und sekundären Regionen verfügen. Die sekundäre Region sollte den Alarm und die Zustandsprüfung enthalten. So sind Sie nicht von der primären Region abhängig, um das Failover durchzuführen. CloudFormation Vorlagen, die diese Ressourcen erstellen, finden Sie beispielsweise unter [samples/primary.zip](samples/primary.zip)und [samples/secondary.zip](samples/secondary.zip).

**Wichtig**  
Stellen Sie vor dem Failover in die sekundäre Region sicher, dass alle erforderlichen Ressourcen verfügbar sind. Andernfalls ist Ihre API nicht für den Datenverkehr in der sekundären Region bereit. 

## Schritt 2: Initiieren des Failovers zur sekundären Region
<a name="dns-failover-initiate"></a>

Im folgenden Beispiel empfängt die Standby-Region eine CloudWatch Metrik und leitet ein Failover ein. Wir verwenden eine benutzerdefinierte Metrik, bei der das Eingreifen des Bedieners erforderlich ist, um das Failover einzuleiten.

```
aws cloudwatch put-metric-data \
    --metric-name Failover \
    --namespace HealthCheck \
    --unit Count \
    --value 1 \
    --region us-west-1
```

Ersetzen Sie die Metrikdaten durch die entsprechenden Daten für den von Ihnen CloudWatch konfigurierten Alarm.

## Schritt 3: Testen des Failovers
<a name="dns-failover-test"></a>

Rufen Sie Ihre API auf und vergewissern Sie sich, dass Sie eine Antwort von der sekundären Region erhalten. Wenn Sie die Beispielvorlagen in Schritt 1 verwendet haben, ändert sich die Antwort von „`{"message": "Hello from the primary Region!"}`“ nach dem Failover zu „`{"message": "Hello from the secondary Region!"}`“.

```
curl https://my-api.example.com

{"message": "Hello from the secondary Region!"}
```

## Schritt 4: Rückkehr zur Primärregion
<a name="dns-failover-return"></a>

Um zur primären Region zurückzukehren, senden Sie eine CloudWatch Metrik, die dafür sorgt, dass die Integritätsprüfung bestanden wird.

```
aws cloudwatch put-metric-data \
    --metric-name Failover \
    --namespace HealthCheck \
    --unit Count \
    --value 0 \
    --region us-west-1
```

Ersetzen Sie die Metrikdaten durch die entsprechenden Daten für den von Ihnen konfigurierten CloudWatch Alarm.

Rufen Sie Ihre API auf und vergewissern Sie sich, dass Sie eine Antwort von der primären Region erhalten. Wenn Sie die Beispielvorlagen in Schritt 1 verwendet haben, ändert sich die Antwort von „`{"message": "Hello from the secondary Region!"}`“ zu „`{"message": "Hello from the primary Region!"}`“.

```
curl https://my-api.example.com

{"message": "Hello from the primary Region!"}
```

## Nächste Schritte: Anpassen und regelmäßig testen
<a name="dns-failover-next-steps"></a>

Dieses Beispiel zeigt eine Möglichkeit, das DNS-Failover zu konfigurieren. Sie können eine Vielzahl von CloudWatch Metriken oder HTTP-Endpunkten für die Integritätsprüfungen zur Verwaltung des Failovers verwenden. Testen Sie Ihre Failover-Mechanismen regelmäßig, um sicherzustellen, dass sie erwartungsgemäß funktionieren und dass die Bediener mit Ihren Failover-Verfahren vertraut sind.