Festlegen des Routing-Modus für Ihren benutzerdefinierten Domainnamen
Sie können auswählen, welchen Routing-Modus API Gateway verwendet, um den Datenverkehr an Ihre APIs weiterzuleiten. Weitere Informationen finden Sie unter Senden von Datenverkehr an Ihre APIs über Ihren benutzerdefinierten Domainnamen in API Gateway. 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 Ihre APIs weiterzuleiten. Folgende Routing-Modi werden unterstützt:
-
ROUTING_RULE_THEN_API_MAPPING – Verwenden Sie diesen Modus, um Datenverkehr mit Routing-Regeln und API-Zuweisungen an Ihre APIs zu leiten. 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.
-
ROUTING_RULE_ONLY – Verwenden Sie diesen Modus, um ausschließlich Routing-Regeln für das Weiterleiten von Datenverkehr an Ihre APIs zuzulassen. Wenn Ihr benutzerdefinierter Domainname diesen Modus verwendet, können Sie keine API-Zuweisung erstellen. Sie können jedoch den Befehl get-api-mappings verwenden, um diese anzuzeigen. API-Aufrufer können mit diesem Domainnamen keine API-Zuweisungen verwenden.
-
API_MAPPING_ONLY – Verwenden Sie diesen Modus, um ausschließlich API-Zuweisungen für das Weiterleiten von Datenverkehr an Ihre APIs zuzulassen. 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 tritt nur bei Verwendung der AWS CLI, AWS CloudFormation oder eines SDKs auf, nicht jedoch in der AWS Management Console.
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 Management Console
Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.
Wählen Sie Benutzerdefinierte Domainnamen im Hauptnavigationsbereich aus.
-
Wählen Sie einen benutzerdefinierten Domainnamen aus.
-
Wählen Sie unter Domänendetails die Option Bearbeiten aus.
-
Wählen Sie unter Routing-Modus die Option ROUTING_RULE_THEN_API_MAPPING aus.
-
Wählen Sie Speichern aus.
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
-
Der folgende Befehl update-domain-name aktualisiert einen Domainnamen so, dass er den Routing-Modus ROUTING_RULE_THEN_API_MAPPING verwendet:
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
-
Der folgende Befehl update-domain-name aktualisiert einen privaten benutzerdefinierten Domainnamen so, dass er den Routing-Modus ROUTING_RULE_THEN_BASE_PATH_MAPPING verwendet:
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"
}