Wie kann ich eine private API-Gateway-API mithilfe einer Anwendung oder Network Load Balancer aufrufen?

Letzte Aktualisierung: 03.11.2022

Ich möchte meine private API-Gateway-API als Ziel hinter einem Load Balancer einrichten. Dann möchte ich über einen Application oder Network Load Balancer über mein Konto oder ein anderes AWS-Konto auf meine private API zugreifen. Wie richte ich das ein?

Kurzbeschreibung

Informationen zum Zugriff auf Ihre private API über AWS Direct Connect oder Amazon Route 53 finden Sie unter So rufen Sie eine private API auf. Sie können auch über einen Schnittstellen-VPC-Endpunkt auf eine private REST-API eines API-Gateways in einem anderen AWS-Konto zugreifen.

In der folgenden Einrichtung wird die private API als Ziel zum Load Balancer hinzugefügt. Dies geschieht über die IP-Adresse der elastischen Netzwerkschnittstelle des Amazon-Virtual-Private-Cloud-Endpunkts (Amazon VPC).

Wichtig: Benutzerdefinierte Domainnamen werden für private APIs nicht unterstützt. Als Workaround können Sie die Domain aufrufen und an einen Load Balancer anhängen. Rufen Sie dann die private API mit dem in diesem Artikel beschriebenen Setup auf.

Auflösung

Amazon VPC-Endpunkt erstellen

1.    Öffnen Sie die Amazon-VPC-Konsole, wählen Sie Endpunkte und dann Endpunkt erstellen aus.
Hinweis: Wenn Sie bereits Amazon-VPC-Endpunkte in Ihrer VPC mithilfe der API execute-api eingerichtet haben, stellen Sie sicher, dass privates DNS deaktiviert ist.

2.    Wählen Sie für Dienstecom.amazonaws.com.your-region.execute-api.

3.    Wählen Sie für VPC Ihre Amazon VPC aus.

4.    Wählen Sie für Subnetze zwei Subnetze in verschiedenen Availability Zones (AZ IDs) aus, und wählen Sie dann Endpunkt erstellen aus.

5.    Wählen Sie Ihren Endpunkt, wählen Sie Subnetze aus und kopieren Sie die IP-Adresse. Sie verwenden diese IP-Adresse in einem anderen Schritt.

Weitere Informationen finden Sie unter VPC-Endpunkt für API-Gateway-execute-api erstellen.

Private REST-API erstellen und dem Amazon-VPC-Endpunkt die Berechtigung erteilen

1.    Öffnen Sie die API-Gateway-Konsole und wählen Sie dann API erstellen.

2.    Wählen Sie für REST-API die Option Entwickeln aus.

3.    Geben Sie unter Einstellungen Folgendes ein:
Geben Sie für API-Name einen Namen für die API ein.
Wählen Sie als Endpunkttyp Privat aus.
Geben Sie für Endpunkt-IDs die Endpunkt-ID ein, die Sie zuvor erstellt haben.

4.    Wählen Sie API erstellen aus.

5.    Wählen Sie im Navigationsbereich Ressourcenrichtlinie aus.

6.    Fügen Sie im Ressourcenrichtlinien-Editor die folgende Richtlinie ein:
Hinweis:
Ersetzen Sie vpce-<id> durch Ihre VPC-Endpunkt-ID.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:<region>:<account :<api-id>/*/*/*",
      "Condition": {
        "StringNotEquals": {
          "aws:sourceVpce": "vpce-081234d1ad408e"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:<region>:<account-id>:<api-id>/*/*/*"
    }
  ]
}

7.    Wählen Sie Speichern aus.

Weitere Informationen finden Sie unter Private API mithilfe der API-Gateway-Konsole erstellen.

Ein öffentliches AWS-Certificate-Manager-Zertifikat erstellen oder importieren

Wenn Sie dies noch nicht getan haben, führen Sie einen der folgenden Schritte aus:

Fordern Sie ein öffentliches Zertifikat an.

-oder-

Zertifikat importieren

Application Load Balancer oder Network Load Balancer erstellen

Wenn Sie dies noch nicht getan haben, führen Sie einen der folgenden Schritte aus:

Application Load Balancer erstellen

-oder-

Network Load Balancer erstellen

Zielgruppe erstellen

1.    Öffnen Sie die Amazon Elastic Compute Cloud (Amazon EC2)-Konsole.

2.    Wählen Sie im Navigationsbereich unter Load Balancing die Option Load Balancers, wählen Sie Zielgruppen und dann Zielgruppe erstellen aus.

3.    Wählen Sie als ZieltypIP-Adressen aus.

4.    geben Sie als Zielgruppenname einen Namen ein.

Application Load Balancer

Wählen Sie für Protokoll die Option HTTPS.
Wählen Sie für Port443.
Wählen Sie für VPC Ihre VPC aus.
Geben Sie für Integritätsprüfungspfad 200,403 ein. (Dadurch wird sichergestellt, dass der VPC-Endpunkt in der Zielgruppe als Gesund angezeigt wird)

Network Load Balancer

Wählen Sie für Protokoll die Option TLS.
Wählen Sie für Port443.
Wählen Sie für VPC Ihre VPC aus.

5.    Wählen Sie Weiter.

6.    Geben Sie unter Angeben von IPs die IP-Adresse ein, die Sie im Abschnitt Erstellen eines Amazon VPC-Endpunkts für Schnittstelle kopiert haben, und wählen Sie IPv4-Adresse hinzufügen.

7.    Wählen Sie Zielgruppe erstellen aus.

Load Balancer konfigurieren

1.    Öffnen Sie die EC2-Konsole.

2.    Wählen Sie im Navigationsbereich Load Balancers und dann Load Balancer erstellen aus.

Application Load Balancer

Wählen Sie für Schema je nach Konfiguration entweder mit dem Internet verbunden oder Intern aus.
Wählen Sie für Protokoll die Option HTTPS.
Wählen Sie für VPC und Subnetze Ihre VPC und Subnetze aus.

Network Load Balancer für Schema, wählen Sie je nach Konfiguration entweder mit dem Internet verbunden oder Intern.
Wählen Sie für Protokoll die Option TLS.
Wählen Sie für VPC und Subnetze Ihre VPC und Subnetze aus.
Wählen Sie für Sicherheitsrichtlinie die Standardrichtlinie ELBSecurityPolicy-TLS (empfohlen).
Wählen Sie für Standard-SSL/TLS-Zertifikat die Option Von ACM.
Wählen Sie Dropdown-Menü Zertifikat auswählen und wählen Sie dann Ihr Zertifikat aus.

3.    Wählen Sie Load Balancer erstellen aus.

Hinweis: Die Load-Balancer-Ziele sollten die IP-Adressen der Elastic-Network-Schnittstelle sein, die der VPC-Endpoint erstellt hat. Diese wurden in Schritt 1 durchgeführt. Sie finden diese Elastic-Network-Schnittstellen, indem Sie Ihren VPC-Endpunkt auswählen und die Registerkarte Subnetze öffnen.

Erstellen eines Datensatzes in einer öffentlichen oder privaten Hosting-Zone von Amazon Route 53

Wenn Sie dies noch nicht getan haben, führen Sie einen der folgenden Schritte aus:

Öffentlich gehostete Zone erstellen

-oder-

Private gehostete Zone erstellen

Erstellen Sie dann einen CNAME-Eintrag und verknüpfen Sie ihn mit Ihrer Anwendung oder Ihrem Network Load Balancer.

Tests

Für öffentliche Load Balancer können Sie eine Curl-Anfrage von Ihrem lokalen Computer aus stellen.

Starten Sie für private Load Balancer eine neue EC2-Instance in einem der Subnetze für Ihren Load Balancer. Stellen Sie dann eine Curl-Anfrage ähnlich der folgenden:

curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'Host: <api-id>.execute-api.<region>.amazonaws.com'

-oder-

curl -v https://{custom-domain-name}/<stage-name>/<resource-path> -H 'x-apigw-api-id:{api-id}'

Eine erfolgreiche Anforderung gibt einen Antwortcode mit 200 OK zurück. Eine erfolglose Anforderung gibt einen 403-Forbidden- Antwortcode oder einen DNS-Auflösungsfehler Wenn Probleme auftreten, finden Sie weitere Informationen unter Problembehandlung bei Ihren Load Balancern.