Stellen Sie eine Amazon API Gateway Gateway-API auf einer internen Website mithilfe von privaten Endpunkten und einem Application Load Balancer bereit - AWS Prescriptive Guidance

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.

Stellen Sie eine Amazon API Gateway Gateway-API auf einer internen Website mithilfe von privaten Endpunkten und einem Application Load Balancer bereit

Erstellt von Saurabh Kothari (AWS)

Umwelt: Produktion

Technologien: Web- und mobile Apps; Netzwerke; Serverlos; Infrastruktur

AWS-Services: Amazon API Gateway; Amazon Route 53; AWS Certificate Manager (ACM)

Übersicht

Dieses Muster zeigt Ihnen, wie Sie eine Amazon API Gateway Gateway-API auf einer internen Website bereitstellen, auf die von einem lokalen Netzwerk aus zugegriffen werden kann. Sie lernen, einen benutzerdefinierten Domainnamen für eine private API zu erstellen, indem Sie eine Architektur verwenden, die mit privaten Endpunkten, einem Application Load Balancer PrivateLink, AWS und Amazon Route 53 konzipiert ist. Diese Architektur verhindert die unbeabsichtigten Folgen der Verwendung eines benutzerdefinierten Domainnamens und eines Proxyservers zur Unterstützung des domänenbasierten Routing auf einer API. Wenn Sie beispielsweise einen VPC-Endpunkt (Virtual Private Cloud) in einem nicht routbaren Subnetz bereitstellen, kann Ihr Netzwerk das API Gateway nicht erreichen. Eine gängige Lösung besteht darin, einen benutzerdefinierten Domainnamen zu verwenden und dann die API in einem routingfähigen Subnetz bereitzustellen. Dies kann jedoch andere interne Websites beschädigen, wenn die Proxykonfiguration Traffic (execute-api.{region}.vpce.amazonaws.com) an AWS Direct Connect weiterleitet. Schließlich kann Ihnen dieses Muster dabei helfen, die organisatorischen Anforderungen für die Verwendung einer privaten API, die vom Internet aus nicht erreichbar ist, und eines benutzerdefinierten Domainnamens zu erfüllen.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS-Konto

  • Ein Server Name Indication (SNI) -Zertifikat für Ihre Website und API

  • Eine Verbindung von einer lokalen Umgebung zu einem AWS-Konto, das mithilfe von AWS Direct Connect oder AWS Site-to-Site VPN eingerichtet wurde

  • Eine private gehostete Zone mit einer entsprechenden Domain (z. B. domain.com), die von einem lokalen Netzwerk aus aufgelöst wird und DNS-Abfragen an Route 53 weiterleitet

  • Ein routbares privates Subnetz, das von einem lokalen Netzwerk aus erreichbar ist

Einschränkungen

Weitere Informationen zu Kontingenten (früher als Limits bezeichnet) für Load Balancer, Regeln und andere Ressourcen finden Sie unter Kontingente für Ihre Application Load Balancers in der Elastic Load Balancing Balancing-Dokumentation.

Architektur

Technologie-Stack

  • Amazon API Gateway

  • Amazon Route 53

  • Application Load Balancer

  • AWS Certificate Manager

  • AWS PrivateLink

Zielarchitektur

Das folgende Diagramm zeigt, wie ein Application Load Balancer in einer VPC bereitgestellt wird, der Web-Traffic auf der Grundlage von Application Load Balancer Balancer-Listener-Regeln an eine Website-Zielgruppe oder API-Gateway-Zielgruppe weiterleitet. Die API Gateway-Zielgruppe ist eine Liste von IP-Adressen für den VPC-Endpunkt in API Gateway. API Gateway ist so konfiguriert, dass die API mit ihrer Ressourcenrichtlinie privat ist. Die Richtlinie lehnt alle Anrufe ab, die nicht von einem bestimmten VPC-Endpunkt stammen. Benutzerdefinierte Domainnamen im API-Gateway werden aktualisiert und verwenden nun api.domain.com für die API und ihre Phase. Application Load Balancer Balancer-Regeln werden hinzugefügt, um den Datenverkehr auf der Grundlage des Hostnamens weiterzuleiten.

Das Diagramm zeigt den folgenden Workflow:

  1. Ein Benutzer aus einem lokalen Netzwerk versucht, auf eine interne Website zuzugreifen. Die Anfrage wird an ui.domain.com und api.domain.com gesendet. Anschließend wird die Anfrage an den internen Application Load Balancer des routbaren privaten Subnetzes weitergeleitet. Das SSL wird am Application Load Balancer für ui.domain.com und api.domain.com beendet.

  2. Listener-Regeln, die auf dem Application Load Balancer konfiguriert sind, suchen nach dem Host-Header.

    a. Wenn der Host-Header api.domain.com lautet, wird die Anfrage an die API Gateway Gateway-Zielgruppe weitergeleitet. Der Application Load Balancer initiiert eine neue Verbindung zum API Gateway über Port 443.

    b. Wenn der Host-Header ui.domain.com lautet, wird die Anfrage an die Zielgruppe der Website weitergeleitet.

  3. Wenn die Anfrage API Gateway erreicht, bestimmt die in API Gateway konfigurierte benutzerdefinierte Domänenzuordnung den Hostnamen und die auszuführende API.

Automatisierung und Skalierung

Die Schritte in diesem Muster können mithilfe von AWS CloudFormation oder dem AWS Cloud Development Kit (AWS CDK) automatisiert werden. Um die Zielgruppe der API-Gateway-Aufrufe zu konfigurieren, müssen Sie eine benutzerdefinierte Ressource verwenden, um die IP-Adresse des VPC-Endpunkts abzurufen. API-Aufrufe an describe-vpc-endpointsund describe-network-interfacesRückgabe der IP-Adressen und der Sicherheitsgruppe, die zur Erstellung der API-Zielgruppe von IP-Adressen verwendet werden können.

Tools

  • Amazon API Gateway unterstützt Sie bei der Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung von REST, HTTP und WebSocket APIs in jeder Größenordnung.

  • Amazon Route 53 ist ein hochverfügbarer und skalierbarer DNS-Web-Service.

  • AWS Certificate Manager (ACM) unterstützt Sie bei der Erstellung, Speicherung und Erneuerung von öffentlichen und privaten SSL/TLS X.509-Zertifikaten und Schlüsseln, die Ihre AWS-Websites und -Anwendungen schützen.

  • Das AWS Cloud Development Kit (AWS CDK) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.

  • AWS PrivateLink hilft Ihnen dabei, unidirektionale, private Verbindungen von Ihren VPCs zu Services außerhalb der VPC herzustellen.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie ein SNI-Zertifikat und importieren Sie das Zertifikat in ACM.

  1. Erstellen Sie ein SNI-Zertifikat für ui.domain.com und api.domain.com. Weitere Informationen finden Sie in der CloudFront Amazon-Dokumentation unter Auswählen, wie CloudFront HTTPS-Anfragen bearbeitet werden.

  2. Importieren Sie die SNI-Zertifikate in AWS Certificate Manager (ACM). Weitere Informationen finden Sie in der ACM-Dokumentation unter Zertifikate in AWS Certificate Manager importieren.

Netzwerkadministrator
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie einen VPC-Schnittstellen-Endpunkt in API Gateway.

Um einen VPC-Schnittstellen-Endpunkt zu erstellen, folgen Sie den Anweisungen unter Zugreifen auf einen AWS-Service mithilfe eines Schnittstellen-VPC-Endpunkts in der Dokumentation zu Amazon Virtual Private Cloud (Amazon VPC).

Cloud-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine Zielgruppe für Ihre Bewerbung.

Erstellen Sie eine Zielgruppe für die UI-Ressourcen Ihrer Anwendung.

Cloud-Administrator

Erstellen Sie eine Zielgruppe für den API-Gateway-Endpunkt.

  1. Erstellen Sie eine Zielgruppe mit einem IP-Adresstyp und fügen Sie dann die IP-Adresse des VPC-Endpunkts für den API-Gateway-Endpunkt zur Zielgruppe hinzu.

  2. Konfigurieren Sie Integritätsprüfungen für Ihre Zielgruppen mit den Erfolgscodes 200 und 403. 403 ist erforderlich, da die API Authentifizierung verwenden und eine 403-Antwort zurückgeben könnte.

Cloud-Administrator

Erstellen Sie einen Application Load Balancer.

  1. Erstellen Sie einen Application Load Balancer (intern) in einem routbaren privaten Subnetz.

  2. Fügen Sie den 443-Listener zum Application Load Balancer hinzu und wählen Sie dann das Zertifikat von ACM aus.

Cloud-Administrator

Erstellen Sie Regeln für Zuhörer.

Erstellen Sie Listener-Regeln, um Folgendes zu tun:

  1. Leiten Sie den Host api.domain.com an die API Gateway Gateway-Zielgruppe weiter

  2. Leiten Sie den Host ui.domain.com an die Zielgruppe für die UI-Ressourcen weiter

Cloud-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine private gehostete Zone.

Erstellen Sie eine private gehostete Zone für domain.com.

Cloud-Administrator

Domaindatensätze erstellen.

Erstellen Sie CNAME-Einträge für Folgendes:

  • Eine API, deren Wert auf den DNS-Namen des Application Load Balancer gesetzt ist

  • Eine Benutzeroberfläche, deren Wert auf den DNS-Namen des Application Load Balancer gesetzt ist

Cloud-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen und konfigurieren Sie einen privaten API-Endpunkt.

  1. Um einen privaten API-Endpunkt zu erstellen, folgen Sie den Anweisungen unter Erstellen einer privaten API in Amazon API Gateway in der API Gateway-Dokumentation. 

  2. Konfigurieren Sie die Ressourcenrichtlinie so, dass nur API-Aufrufe vom VPC-Endpunkt aus zulässig sind. Weitere Informationen finden Sie unter Steuern des Zugriffs auf eine API mit API-Gateway-Ressourcenrichtlinien in der API Gateway Gateway-Dokumentation.

App-Entwickler, Cloud-Administrator

Erstellen Sie einen benutzerdefinierten Domainnamen.

  1. Erstellen Sie einen benutzerdefinierten Domainnamen für api.domain.com. Weitere Informationen finden Sie unter Einrichten von benutzerdefinierten Domainnamen für REST-APIs in der API Gateway Gateway-Dokumentation.

  2. Wählen Sie die erstellte API und die Phase aus. Weitere Informationen finden Sie unter Arbeiten mit API-Zuordnungen für REST-APIs in der API Gateway Gateway-Dokumentation.

Cloud-Administrator

Zugehörige Ressourcen