Einrichten eines regionalen benutzerdefinierten Domainnamens in API Gateway - Amazon API Gateway

Einrichten eines regionalen benutzerdefinierten Domainnamens in API Gateway

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

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 Vorbereiten von Zertifikaten in AWS Certificate Manager.

  • 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 trägt den Namen AWSServiceRoleForAPIGateway und hat die APIGatewayServiceRolePolicy-verwaltete Richtlinie zugewiesen. Weitere Informationen zur Verwendung von serviceverknüpften Rollen finden Sie unter Verwenden von serviceverknüpften Rollen.

  • 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

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 Management Console
  1. Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie Benutzerdefinierte Domainnamen im Hauptnavigationsbereich aus.

  3. Wählen Sie Erstellen aus.

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

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

    In diesem Routing-Modus können Sie den Datenverkehr von Ihrem benutzerdefinierten Domainnamen nur mithilfe von Routing-Regeln an Ihre APIs weiterleiten. Weitere Informationen finden Sie unter Senden von Datenverkehr an Ihre APIs über Ihren benutzerdefinierten Domainnamen in API Gateway.

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

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

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

  9. Wählen Sie Erstellen aus.

AWS CLI

Der folgende Befehl create-domain-name 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

Nachdem Sie Ihren benutzerdefinierten Domainnamen erstellt haben, konfigurieren Sie, wie der Datenverkehr von Ihrem Domainnamen zu Ihren APIs weitergeleitet wird. Da Sie den Routing-Modus auf ROUTING_RULE_ONLY festgelegt haben, verwenden Sie Routing-Regeln, um eingehende Anfragen von Ihrem benutzerdefinierten Domainnamen an Ihre 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.

AWS Management Console
  1. Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie einen benutzerdefinierten Domainnamen aus.

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

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

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

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

  7. Wählen Sie Next.

  8. 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.

  9. 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 von Datenverkehr an Ihre APIs über Ihren benutzerdefinierten Domainnamen in API Gateway.

Erstellen eines DNS-Datensatzes für Ihren regionalen benutzerdefinierten Domainnamen

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 Management Console

Wenn Sie hierfür die AWS Management Console verwenden möchten, lesen Sie die Route-53-Dokumentation zum Thema Konfiguration von Route 53 zur Weiterleitung von Datenverkehr an API Gateway.

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 regionalen IDs der gehosteten Route 53-Zone auch in Amazon API Gateway-Endpunkte und -Kontingente 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 } } } ] }

Der Befehl change-resource-record-sets zeigt, wie Sie einen DNS-Datensatz für Ihren regionalen benutzerdefinierten Domainnamen erstellen:

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 verweist auf eine JSON-Datei (setup-dns-record.json) in einem Ordner (path/to/your).