

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.

# WebSocket-APIs für Kundenaufrufe veröffentlichen
<a name="websocket-api-publish"></a>

Das einfache Erstellen und Entwickeln einer API Gateway-API macht sie nicht automatisch für Ihre Benutzer aufrufbar. Um sie aufrufbar zu machen, müssen Sie Ihre API in einer Stufe bereitstellen. Darüber hinaus können Sie die URL anpassen, die Ihre Benutzer für den Zugriff auf Ihre API verwenden. Sie können ihr eine Domäne zuweisen, die mit Ihrer Marke übereinstimmt oder einprägsamer ist als die Standard-URL für Ihre API.

In diesem Abschnitt erfahren Sie, wie Sie Ihre API bereitstellen und die URL anpassen, die Sie Benutzern für den Zugriff zur Verfügung stellen. 

**Anmerkung**  
Um die Sicherheit Ihrer API-Gateway-APIs zu erhöhen, ist die `execute-api.{region}.amazonaws.com`-Domain in der [Public Suffix List (PSL](https://publicsuffix.org/)) registriert. Aus Sicherheitsgründen empfehlen wir Ihnen, Cookies mit einem `__Host-`-Präfix zu verwenden, falls Sie jemals sensible Cookies im Standard-Domain-Namen für Ihre API-Gateway-APIs einrichten müssen. Diese Vorgehensweise hilft Ihnen dabei, Ihre Domain vor CSRF-Versuchen (Cross-Site Request Forgery Attempts, Anforderungsfälschung zwischen Websites) zu schützen. Weitere Informationen finden Sie auf der [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes)-Seite im Mozilla Developer Network.

**Topics**
+ [Stufen für WebSocket APIs im API Gateway erstellen](websocket-api-stages.md)
+ [WebSocket APIs In API Gateway bereitstellen](apigateway-set-up-websocket-deployment.md)
+ [Sicherheitsrichtlinie für WebSocket APIs in API Gateway](websocket-api-ciphers.md)
+ [Benutzerdefinierte Domainnamen für WebSocket-APIs in API Gateway](websocket-api-custom-domain-names.md)

# Stufen für WebSocket APIs im API Gateway erstellen
<a name="websocket-api-stages"></a>

Eine API-Stufe ist ein logischer Verweis auf einen Lebenszyklusstatus Ihrer API (z. B. `dev`, `prod`, `beta` oder `v2`). API-Stufen werden durch ihre API-ID und den Stufennamen identifiziert und sind in der URL enthalten, die Sie zum Aufrufen der API verwenden. Jede Stufe ist ein benannter Verweis auf eine Bereitstellung der API und wird für Clientanwendungen zum Aufrufen zur Verfügung gestellt.

Eine Bereitstellung ist ein Snapshot Ihrer API-Konfiguration. Nachdem Sie eine API in einer Phase bereitgestellt haben, kann sie von Clients aufgerufen werden. Sie müssen eine API bereitstellen, damit Änderungen wirksam werden.

## Stufenvariablen
<a name="websocket-api-stages.stage-variables"></a>

Stufenvariablen sind Schlüssel-Wert-Paare, die Sie für eine Phase einer WebSocket API definieren können. Sie weisen dasselbe Verhalten auf wie Umgebungsvariablen und können für die API-Einrichtung verwendet werden.

Sie können beispielsweise eine Stufenvariable definieren und dann ihren Wert als HTTP-Endpunkt für eine HTTP-Proxy-Integration festlegen. Später können Sie den Endpunkt mithilfe des zugeordneten Stufenvariablennamens referenzieren. Auf diese Weise können Sie in jeder Stufe dieselbe API-Einrichtung mit einem anderen Endpunkt verwenden. In ähnlicher Weise können Sie Stufenvariablen verwenden, um für jede Phase Ihrer API eine andere AWS Lambda Funktionsintegration anzugeben.

**Anmerkung**  
Stage-Variablen sind nicht dazu gedacht, für sensible Daten wie Anmeldeinformationen verwendet zu werden. Verwenden Sie einen AWS Lambda Autorisierer, um sensible Daten an Integrationen weiterzugeben. Sie können sensible Daten an Integrationen in der Ausgabe des Lambda-Genehmigers übergeben. Weitere Informationen hierzu finden Sie unter [Antwortformat des Lambda-Genehmigers](http-api-lambda-authorizer.md#http-api-lambda-authorizer.payload-format-response).

### Beispiele
<a name="websocket-api-stages.stage-variables-examples"></a>

Wenn Sie eine Stufenvariable zum Anpassen des HTTP-Integrationsendpunkts verwenden möchten, müssen Sie zunächst den Namen und den Wert der Stufenvariablen (z. B. `url`) mit dem Wert `example.com` festlegen. Richten Sie als Nächstes eine HTTP-Proxy-Integration ein. Anstatt die URL des Endpunkts einzugeben, können Sie API Gateway anweisen, den Wert der Stufenvariablen zu verwenden, **http://\$1\$1stageVariables.url\$1**. Dieser Wert weist API Gateway an, Ihre Stufenvariable `${}` zur Laufzeit abhängig von der Stufe Ihrer API zu ersetzen. 

Sie können auf ähnliche Weise auf Stufenvariablen verweisen, um einen Lambda-Funktionsnamen oder einen AWS Rollen-ARN anzugeben.

Wenn Sie einen Lambda-Funktionsnamen als Stufenvariablenwert angeben, müssen Sie die Berechtigungen für die Lambda-Funktion manuell konfigurieren. Der folgende [add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html)-Befehl fügt die erforderlichen Berechtigungen hinzu:

```
aws lambda add-permission --function-name arn:aws:lambda:XXXXXX:your-lambda-function-name --source-arn arn:aws:execute-api:us-east-1:YOUR_ACCOUNT_ID:api_id/*/HTTP_METHOD/resource --principal apigateway.amazonaws.com --statement-id apigateway-access --action lambda:InvokeFunction
```

## API Gateway Stufenvariablenreferenz
<a name="websocket-api-stages.stage-variables-reference"></a>

### HTTP-Integration URIs
<a name="websocket-api-stages.stage-variables-in-integration-HTTP-uris"></a>

Sie können eine Stufenvariable als Teil einer HTTP-Integrations-URI verwenden, wie in den folgenden Beispielen gezeigt.
+ Eine vollständige URI ohne Protokoll – `http://${stageVariables.<variable_name>}`
+ Eine vollständige Domäne – `http://${stageVariables.<variable_name>}/resource/operation`
+ Eine Unterdomäne – `http://${stageVariables.<variable_name>}.example.com/resource/operation`
+ Ein Pfad – `http://example.com/${stageVariables.<variable_name>}/bar`
+ Eine Abfragezeichenfolge – `http://example.com/foo?q=${stageVariables.<variable_name>}` 

### Lambda-Funktionen
<a name="websocket-api-stages.stage-variables-in-integration-lambda-functions"></a>

 Sie können eine Stufenvariable anstelle eines Lambda-Funktionsnamens oder Alias verwenden, wie in den folgenden Beispielen gezeigt. 
+ `arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/arn:aws:lambda:<region>:<account_id>:function:${stageVariables.<function_variable_name>}/invocations`
+ `arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/arn:aws:lambda:<region>:<account_id>:function:<function_name>:${stageVariables.<version_variable_name>}/invocations`

**Anmerkung**  
Um eine Stufenvariable für eine Lambda-Funktion zu verwenden, muss sich die Funktion im selben Konto wie die API befinden. Stufenvariablen unterstützen keine kontoübergreifenden Lambda-Funktionen.

### AWS Anmeldeinformationen für die Integration
<a name="websocket-api-stages.stage-variables-in-integration-aws-credentials"></a>

 Sie können eine Stage-Variable als Teil eines ARN mit AWS Benutzer- oder Rollenanmeldedaten verwenden, wie im folgenden Beispiel gezeigt. 
+  `arn:aws:iam::<account_id>:${stageVariables.<variable_name>}` 

# WebSocket APIs In API Gateway bereitstellen
<a name="apigateway-set-up-websocket-deployment"></a>

 Nachdem Sie Ihre WebSocket API erstellt haben, müssen Sie sie bereitstellen, damit Ihre Benutzer sie aufrufen können. 

Zum Bereitstellen einer API erstellen Sie eine [API-Bereitstellung](api-gateway-basic-concept.md#apigateway-definition-api-deployment) und verknüpfen sie mit einer [Stufe](api-gateway-basic-concept.md#apigateway-definition-api-stage). Jede Stufe ist ein Snapshot der API und wird für Client-Apps zum Aufrufen verfügbar gemacht. 

**Wichtig**  
Eine API muss nach jeder Aktualisierung erneut bereitgestellt werden. Alle Änderungen außer an Stufeneinstellungen erfordern eine erneute Bereitstellung, einschließlich Änderungen an den folgenden Ressourcen:  
Routen
Integrationen
Genehmiger
APIs sind standardmäßig auf 10 Stufen begrenzt. Wir empfehlen, bereits verwendete Stufen für Ihre Bereitstellungen wiederzuverwenden. 

Um eine bereitgestellte WebSocket API aufzurufen, sendet der Client eine Nachricht an die URL der API. Die URL wird anhand des Hostnamens und der Stufennummer der API bestimmt.

**Anmerkung**  
API Gateway unterstützt Nutzlasten bis zu 128 KB mit einer maximalen Framegröße von 32 KB. Sie müssen Nachrichten, die 32 KB überschreiten, in mehrere Frames aufteilen, die jeweils 32 KB oder kleiner sind.

Unter Verwendung des Standard-Domainnamens der API hat die URL (zum Beispiel) einer WebSocket API in einer bestimmten Phase (`{stageName}`) das folgende Format:

```
wss://{api-id}.execute-api.{region}.amazonaws.com/{stageName}
```

Um die URL der WebSocket API benutzerfreundlicher zu gestalten, können Sie einen benutzerdefinierten Domainnamen (z. B.`api.example.com`) erstellen, der den Standard-Hostnamen der API ersetzt. Der Konfigurationsprozess ist derselbe wie für REST APIs. Weitere Informationen finden Sie unter [Benutzerdefinierter Domainname für öffentliches REST APIs in API Gateway](how-to-custom-domains.md).

Stufen ermöglichen eine robuste Versionskontrolle Ihrer API. Sie können beispielsweise eine API für eine `test`- und eine `prod`-Stufe bereitstellen und die `test`-Stufe als Test-Build und die `prod`-Stufe als stabilen Build verwenden. Nachdem die Aktualisierungen den Test bestanden haben, können Sie die `test`-Stufe auf `prod` hochstufen. Die Hochstufung kann durch die erneute Bereitstellung der API für die `prod`-Stufe erfolgen. Weitere Informationen zu Stufen finden Sie unter [Einrichten einer Stufe für eine REST-API in API Gateway](set-up-stages.md).

**Topics**
+ [Erstellen Sie eine WebSocket API-Bereitstellung mit dem AWS CLI](#apigateway-create-websocket-deployment-using-awscli)
+ [Erstellen Sie eine WebSocket API-Bereitstellung mit der API Gateway Gateway-Konsole](#apigateway-create-websocket-deployment-using-console)

## Erstellen Sie eine WebSocket API-Bereitstellung mit dem AWS CLI
<a name="apigateway-create-websocket-deployment-using-awscli"></a>

Der Befehl [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-deployment.html) erstellt eine Bereitstellung:

```
aws apigatewayv2 --region us-east-1 create-deployment --api-id aabbccddee
```

Die Ausgabe sieht wie folgt aus:

```
{
    "DeploymentId": "fedcba",
    "DeploymentStatus": "DEPLOYED",
    "CreatedDate": "2018-11-15T06:49:09Z"
}
```

Die bereitgestellte API kann erst aufgerufen werden, wenn Sie die Bereitstellung einer Stufe zugeordnet haben. Sie können eine neue Stufe erstellen oder eine Stufe wiederverwenden, die Sie zuvor erstellt haben.

Der folgende [create-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-stage.html)-Befehl erstellt eine neue Stufe und verknüpft diese mit der Bereitstellung.

```
aws apigatewayv2 --region us-east-1 create-stage --api-id aabbccddee --deployment-id fedcba --stage-name test
```

Die Ausgabe sollte wie folgt aussehen:

```
{
    "StageName": "test",
    "CreatedDate": "2018-11-15T06:50:28Z",
    "DeploymentId": "fedcba",
    "DefaultRouteSettings": {
        "MetricsEnabled": false,
        "ThrottlingBurstLimit": 5000,
        "DataTraceEnabled": false,
        "ThrottlingRateLimit": 10000.0
    },
    "LastUpdatedDate": "2018-11-15T06:50:28Z",
    "StageVariables": {},
    "RouteSettings": {}
}
```

Sie können eine vorhandene Phase auch wiederverwenden, indem Sie die `deploymentId` Eigenschaft der Phase mit der neu erstellten Bereitstellungs-ID (*deployment-id*) aktualisieren. Der folgende [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-stage.html)-Befehl aktualisiert die Bereitstellungs-ID der Stufe:

```
aws apigatewayv2 update-stage --region region \
    --api-id api-id \ 
    --stage-name stage-name \ 
    --deployment-id deployment-id
```

## Erstellen Sie eine WebSocket API-Bereitstellung mit der API Gateway Gateway-Konsole
<a name="apigateway-create-websocket-deployment-using-console"></a>

So verwenden Sie die API Gateway Gateway-Konsole, um eine Bereitstellung für eine WebSocket API zu erstellen:

1. Melden Sie sich bei der API Gateway-Konsole an und wählen Sie die API aus.

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

1. Wählen Sie die gewünschte Stufe aus der Dropdown-Liste aus oder geben Sie den Namen einer neuen Stufe ein.

# Sicherheitsrichtlinie für WebSocket APIs in API Gateway
<a name="websocket-api-ciphers"></a>

API Gateway setzt eine Sicherheitsrichtlinie von `TLS_1_2` für alle WebSocket API-Endpunkte durch.

Eine *Sicherheitsrichtlinie* ist eine vordefinierte Kombination aus einer TLS-Mindestversion und Verschlüsselungsverfahren, die von Amazon API Gateway bereitgestellt wird. Das TLS-Protokoll behandelt Netzwerksicherheitsprobleme wie Manipulationen und Abhören zwischen einem Client und einem Server. Wenn Ihre Clients über die benutzerdefinierte Domäne einen TLS-Handshake mit Ihrer API ausführen, erzwingt die Sicherheitsrichtlinie die TLS-Version und die Verschlüsselungssuite-Optionen, die von Ihren Clients verwendet werden können. Diese Sicherheitsrichtlinie akzeptiert TLS 1.2- und TLS 1.3-Verkehr und weist TLS 1.0-Verkehr zurück.

## Unterstützte TLS-Protokolle und Chiffren für WebSocket APIs
<a name="websocket-api-custom-domain-ciphers-list"></a>

In der folgenden Tabelle werden die unterstützten TLS-Protokolle für beschrieben. WebSocket APIs


| **TLS-Protokolle** | **TLS\$11\$12-Sicherheitsrichtlinie** | 
| --- | --- | 
| TLSv13. | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| TLSv12. | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 

In der folgenden Tabelle werden die TLS-Verschlüsselungen beschrieben, die für die Sicherheitsrichtlinie TLS 1\$12 für verfügbar sind. WebSocket APIs


| **TLS-Verschlüsselungsverfahren** | **TLS\$11\$12-Sicherheitsrichtlinie** | 
| --- | --- | 
| TLS\$1AES\$1128\$1GCM\$1 SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| TLS\$1AES\$1256\$1GCM\$1 SHA384 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| TLS\$1 \$1 CHACHA20 POLY1305 SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| ECDHE-ECDSA- -GCM- AES128 SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| ECDHE-RSA- AES128 -GCM- SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| ECDHE-ECDSA- AES128 - SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| ECDHE-RSA- - AES128 SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| ECDHE-ECDSA- -GCM AES256 - SHA384 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| ECDHE-RSA- AES256 -GCM- SHA384 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| ECDHE-ECDSA- AES256 - SHA384 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| ECDHE-RSA- - AES256 SHA384 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| AES128-GCM- SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| AES128-SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| AES256-GCM- SHA384 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 
| AES256-SHA256 | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/success_icon.svg) Ja | 

## OpenSSL- und RFC-Verschlüsselungsnamen
<a name="apigateway-secure-connections-openssl-rfc-cipher-names-websocket"></a>

OpenSSL und IETF RFC 5246 verwenden unterschiedliche Namen für die gleichen Verschlüsselungsverfahren. Eine Liste der Namen der Verschlüsselungsverfahren finden Sie unter [OpenSSL- und RFC-Verschlüsselungsnamen](apigateway-security-policies-list.md#apigateway-secure-connections-openssl-rfc-cipher-names).

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

Weitere Informationen zu REST APIs und HTTP APIs finden Sie unter [Wählen Sie eine Sicherheitsrichtlinie für Ihre benutzerdefinierte Domain in API Gateway](apigateway-custom-domain-tls-version.md) und[Sicherheitsrichtlinie für HTTP APIs in API Gateway](http-api-ciphers.md).

# Benutzerdefinierte Domainnamen für WebSocket-APIs in API Gateway
<a name="websocket-api-custom-domain-names"></a>

*Benutzerdefinierte Domainnamen* sind einfachere und intuitivere URLs, die Sie Ihren API-Benutzern zur Verfügung stellen können.

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
```

hierzu wird *api-id* in API Gateway generiert, *region* ist die AWS-Region und *stage* wird als Stufe angegeben wenn Sie die API bereitstellen.

Der Hostname-Teil der URL (also `api-id.execute-api.region.amazonaws.com`) verweist auf einen API-Endpunkt. Der Standard-API-Endpunkt hat möglicherweise einen schwer zu merkenden, zufallsgenerierten Namen, der nicht besonders benutzerfreundlich ist.

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 zuzuordnen. Eine benutzerfreundlichere API-Basis-URL kann dann folgendermaßen aussehen:

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

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

Die folgenden Überlegungen können sich auf Ihre Verwendung eines benutzerdefinierten Domainnamens auswirken.
+ Wenn Sie einen benutzerdefinierten Domainnamen einer WebSocket-API zuweisen, können Sie ihn keiner REST-API oder HTTP-API zuweisen.
+ Es werden ausschließlich regionale benutzerdefinierte Domainnamen unterstützt.
+ Als Mindest-TLS-Version wird ausschließlich TLS 1.2 unterstützt.
+ Sie müssen den Ressourceneintrag Ihres DNS-Anbieters erstellen oder aktualisieren, bevor Sie ihn dem API-Endpunkt zuordnen können. Ohne ein solches Mapping können API-Anfragen für den benutzerdefinierten Domainnnamen 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](http-api-custom-domain-names.md#http-wildcard-custom-domain-names).

## Voraussetzungen
<a name="websocket-api-custom-domain-names-prerequisites"></a>

Im Folgenden sind die Voraussetzungen für einen benutzerdefinierten Domainnamen aufgeführt.

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

Wenn Sie benutzerdefinierte Domainnamen für Ihre APIs einrichten möchten, müssen Sie eine Internetdomäne registrieren. Sie können Ihre Internetdomain mithilfe von [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/) oder mit einem Domain-Registrar Ihrer Wahl registrieren. Ihr benutzerdefinierter Domainname kann der Name einer Unter- oder Root-Domain (Zone 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 ein Maximum von 63 Oktetten pro Label und insgesamt 255 Oktetten nicht überschreiten.

### Zertifikate für benutzerdefinierte Domainnamen
<a name="websocket-api-custom-domain-names-certificates"></a>

Vor der Einrichtung eines benutzerdefinierten Domainnamens für eine API müssen Sie ein SSL-/TLS-Zertifikat in ACM vorbereiten. Wenn ACM in der AWS-Region nicht verfügbar ist, in der Sie Ihren benutzerdefinierten Domainnamen erstellen, müssen Sie ein Zertifikat für API Gateway in dieser Region importieren.

Wenn Sie ein SSL-/TLS-Zertifikat importieren möchten, müssen Sie den PEM-formatierten Hauptteil des SSL-/TLS-Zertifikats, den persönlichen Schlüssel und die Zertifikatkette für den benutzerdefinierten Domainnamen bereitstellen.

Ein in ACM gespeichertes Zertifikat wird durch seinen ARN angegeben. Wenn Sie Zertifikate verwenden, die von ACM ausgestellt werden, brauchen sich keine Gedanken über vertrauliche Zertifikatdetails wie private Schlüssel zu machen. Wenn Sie also ein von AWS verwaltetes Zertifikat für einen Domainnamen verwenden möchten, müssen Sie lediglich auf dessen ARN verweisen. 

Wenn Ihre Anwendung, manchmal auch als Zertifikats-Pinning bekannt, verwendet, um ein ACM-Zertifikat zu pinnen, kann die Anwendung möglicherweise keine Verbindung zu Ihrer Domain herstellen, nachdem AWS das Zertifikat erneuert hat. 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="websocket-api-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.api.example.com`.

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

Der benutzerdefinierte Domainnamen mit Platzhalter `*.example.com` führt beispielsweise zu Unterdomains wie `a.example.com`, `b.example.com` und `c.example.com`, die alle zur gleichen Domain weiterleiten.

Benutzerdefinierte Domainnamen mit Platzhaltern unterstützen andere Konfigurationen als die benutzerdefinierten Standarddomainnamen von API Gateway. Beispielsweise können Sie in einem einzelnen AWS-Konto `*.example.com` und `a.example.com` so konfigurieren, dass sie sich anders verhalten.

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

Um einen benutzerdefinierten Domainnamen mit Platzhalter zu erstellen, müssen Sie ein von ACM ausgestelltes Zertifikat angeben, das mithilfe der DNS- oder der E-Mail-Validierungsmethode validiert wurde.

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

## Die nächsten Schritte für benutzerdefinierte Domainnamen
<a name="websocket-api-custom-domain-names-next-steps"></a>

Verwenden Sie die Dokumentation aus dem REST-API-Abschnitt des API-Gateway-Entwicklerhandbuchs für die Einrichtung eines benutzerdefinierten Domainnamens für eine HTTP-API. 

Geben Sie zunächst ein Zertifikat für Ihren benutzerdefinierten Domainnamen an. Weitere Informationen finden Sie unter [Bereiten Sie Zertifikate vor in AWS Certificate Manager](how-to-specify-certificate-for-custom-domain-name.md). Dann erstellen Sie einen regionalen benutzerdefinierten Domainnamen. Weitere Informationen finden Sie unter [Einrichten eines regionalen benutzerdefinierten Domainnamens in API Gateway](apigateway-regional-api-custom-domain-create.md).

# API-Stufen einem benutzerdefinierten Domainnamen für WebSocket-APIs zuweisen
<a name="websocket-api-mappings"></a>

Sie verwenden API-Mappings, um API-Stufen mit einem benutzerdefinierten Domain-Namen zu verbinden. Nachdem Sie einen Domain-Namen erstellt und DNS-Einträge konfiguriert haben, verwenden Sie API-Mappings, um Datenverkehr über Ihren benutzerdefinierten Domain-Namen an Ihre APIs zu senden.

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 die `production`-Phase einer API in `wss://api.example.com/orders` abbilden.

Bevor Sie eine API-Zuweisung 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).

## Einschränkungen
<a name="websocket-api-mappings-restrictions"></a>
+ In einer API-Zuweisung müssen sich der benutzerdefinierte Domainname und die zugeordneten APIs im selben AWS-Konto befinden.
+ API-Zuweisungen dürfen nur Buchstaben, Zahlen und die folgenden Zeichen enthalten: `$-_.+!*'()`.
+ Die maximale Länge für den Pfad in einer API-Zuweisung beträgt 300 Zeichen.
+ Sie können WebSocket-APIs nicht demselben benutzerdefinierten Domainnamen wie dem einer HTTP-API oder REST-API zuweisen.
+ Wenn Sie mehrstufige API-Zuweisungen erstellen, konvertiert API Gateway alle Header-Namen in Kleinbuchstaben.

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

Um ein API-Mapping zu erstellen, müssen Sie zuerst einen benutzerdefinierten Domain-Namen, eine API und eine Phase erstellen. 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).

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

**So erstellen Sie eine API-Zuweisung**

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

1. Wählen Sie **benutzerdefinierte Domain-Namen** aus.

1. Wählen Sie einen benutzerdefinierten Domain-Namen aus, den Sie bereits erstellt haben.

1. Wählen Sie **API-Mappings** aus.

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

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

1. Geben Sie eine **API**, eine **Phase** und optional einen **Pfad** ein.

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

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

Der folgende [create-api-mapping](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-api-mapping.html)-Befehl erstellt eine API-Zuweisung. In diesem Beispiel sendet API Gateway Anforderungen an `api.example.com/v1` an die angegebene API und Phase.

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

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

Mit dem folgenden CloudFormation-Beispiel wird ein API-Mapping erstellt.

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

------

# IP-Adresstypen für benutzerdefinierte Domainnamen für WebSocket-APIs
<a name="websocket-api-custom-domain-names-ip-address-type"></a>

Wenn Sie einen benutzerdefinierten Domainnamen erstellen, geben Sie den Typ der IP-Adressen an, die Ihre Domain aufrufen können. Sie können IPv4 auswählen, um IPv4-Adressen für den Aufruf Ihrer Domain zuzulassen, oder Dualstack, um sowohl IPv4- als auch IPv6-Adressen für den Aufruf zuzulassen. Wir empfehlen, den IP-Adresstyp auf Dualstack zu setzen, um Engpässe im IP-Adressraum zu vermeiden und Ihre Sicherheitsposition zu verbessern. Weitere Informationen zu den Vorteilen eines Dualstack-IP-Adresstyps finden Sie unter [IPv6 in AWS](https://docs.aws.amazon.com/whitepapers/latest/ipv6-on-aws/internet-protocol-version-6.html).

## Überlegungen zu IP-Adresstypen
<a name="websocket-api-custom-domain-names-ip-address-type-considerations"></a>

Die folgenden Überlegungen können Ihre Verwendung von IP-Adresstypen beeinflussen.
+ Der Standard-IP-Adresstyp für benutzerdefinierte Domainnamen in API Gateway ist IPv4.
+ Ihr benutzerdefinierter Domainname muss nicht denselben IP-Adresstyp für alle darauf zugewiesenen APIs haben. Wenn Sie Ihren Standard-API-Endpunkt deaktivieren, kann dies die Art und Weise beeinflussen, wie Aufrufer Ihre API aufrufen können.

## Ändern des IP-Adresstyps eines benutzerdefinierten Domainnamens
<a name="websocket-api-custom-domain-names-ip-address-type-change"></a>

Sie können den IP-Adresstyp ändern, indem Sie die Endpunktkonfiguration des Domainnamens aktualisieren. Dies kann über die AWS-Managementkonsole, die AWS CLI, CloudFormation oder ein AWS SDK erfolgen.

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

**So ändern Sie den IP-Adresstyp eines benutzerdefinierten Domainnamens**

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

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

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

1. Wählen Sie unter „IP-Adresstyp“ entweder **IPv4** oder **Dualstack** aus.

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

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

Der folgende [update-domain-name](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-domain-name.html)-Befehl aktualisiert eine API, sodass sie den IP-Adresstyp „Dualstack“ aufweist:

```
aws apigatewayv2 update-domain-name \
   --domain-name dualstack.example.com \
   --domain-name-configurations CertificateArn=arn:aws:acm:us-east-1:111122223333:certificate/abcd1234-5678-abc,IpAddressType=dualstack
```

Die Ausgabe sieht wie folgt aus:

```
{
    "ApiMappingSelectionExpression": "$request.basepath",
    "DomainName": "dualstack.example.com",
    "DomainNameConfigurations": [
        {
            "ApiGatewayDomainName": "d-abcd1234.execute-api.us-east-1.amazonaws.com",
            "CertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/abcd1234-5678-abc",
            "DomainNameStatus": "AVAILABLE",
            "EndpointType": "REGIONAL",
            "HostedZoneId": "Z3LQWSYCGH4ADY",
            "SecurityPolicy": "TLS_1_2",
            "IpAddressType": "dualstack"
        }
    ],
    "Tags": {}
}
```

------

# Deaktivieren Sie den Standardendpunkt für WebSocket APIs
<a name="websocket-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. Wenn Sie den Standardendpunkt deaktivieren, wirkt sich dies auf alle Stufen einer API aus.

Das folgende Verfahren zeigt, wie Sie den Standardendpunkt für eine WebSocket 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 API aus. WebSocket 

1. Wählen Sie **API-Einstellungen** 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 Navigationsbereich auf **Routen**.

1. Klicken Sie auf **Bereitstellen** und stellen Sie Ihre API erneut bereit oder erstellen Sie eine neue Stufe, in der die Änderung wirksam werden soll.

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

Der folgende [update-api-Befehl deaktiviert den Standardendpunkt für eine API](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-api.html): WebSocket 

```
aws apigatewayv2 update-api \
    --api-id abcdef123 \
    --disable-execute-api-endpoint
```

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

Der folgende AWS CLI Befehl erstellt eine Bereitstellung.

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

------