Direkt zum Inhalt

Wie verwende ich einen Schnittstellen-VPC-Endpunkt, um auf eine private REST-API bei API Gateway in einem anderen Konto zuzugreifen?

Lesedauer: 7 Minute
0

Ich möchte einen Schnittstellen-VPC-Endpunkt (Virtual Private Cloud) verwenden, um auf eine private REST-API bei Amazon API Gateway zuzugreifen, die sich in einem anderen AWS-Konto befindet.

Kurzbeschreibung

Gehe wie folgt vor, um mit einem VPC-Schnittstellenendpunkt auf eine private REST-API bei API Gateway zuzugreifen, die sich in einem anderen AWS-Konto befindet:

  1. Erstelle einen Schnittstellenendpunkt in einer Amazon Virtual Private Cloud (Amazon VPC) in einem Konto (Konto A).
  2. Erstelle mit API Gateway eine private REST-API in einem zweiten Konto (Konto B).
  3. Konfiguriere eine Ressourcenrichtlinie für die private REST-API, die dem Schnittstellenendpunkt den Aufruf der API erlaubt.
  4. Richte eine Methode für die private REST-API ein.
  5. Stelle die private REST-API bereit.
  6. Rufe die private REST-API von Konto A aus auf, um die Konfiguration zu testen.

Hinweis: Die private REST-API von API Gateway und der VPC-Endpunkt müssen sich in derselben AWS-Region befinden.

Lösung

Erstelle einen Schnittstellenendpunkt in einer Amazon VPC in einem Konto (Konto A)

Einen neuen Schnittstellen-VPC-Endpunkt erstellen

Befolge von Konto A aus die Anweisungen unter Einen Schnittstellen-VPC-Endpunkt für API Gateway in der VPC erstellen.

Wichtig: Wähle für Richtlinie die Option Vollzugriff aus. Es hat sich bewährt, eine VPC-Endpunktrichtlinie zu verwenden, um den Endpunktzugriff anhand der API-ID einzuschränken. Ebenso hat es sich bewährt, die API-Gateway-Ressourcenrichtlinie zu verwenden, um den Endpunktzugriff durch den Prinzipal einzuschränken. Weitere Informationen findest du unter Berechtigungen mit den geringsten Rechten anwenden.

Gehe beim Erstellen des Schnittstellenendpunkts wie folgt vor:

Abrufen der VPC-Endpunkt-ID des Schnittstellenendpunkts

Nachdem du den Schnittstellenendpunkt erstellt hast, wird die VPC-Endpunkt-ID angezeigt. Kopiere die VPC-Endpunkt-ID des neuen Schnittstellenendpunkts, zum Beispiel: vpce-1a2b3c456d7e89012.

Hinweis: Verwende diese VPC-Endpunkt-ID, wenn du die private REST-API erstellst und konfigurierst.

Abrufen des öffentlichen DNS-Namens des Schnittstellenendunkts

Die Seite Endpunkte wird in der Amazon VPC-Konsole angezeigt. Kopiere auf der Registerkarte Details auf der Seite Endpunkte in der Spalte DNS-Namen den öffentlichen DNS-Namen für den Schnittstellenendpunkt. Zum Beispiel: vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com.

Erstellen einer privaten REST-API mit API Gateway in einem zweiten Konto (Konto B)

  1. Öffne in Konto B die API-Gateway-Konsole.
  2. Wähle API erstellen aus.
  3. Wähle für API-Typ auswählen unter REST API Private die Option Build aus.
  4. Gib unter API-Details die folgenden Informationen ein:
    Gib für API-Name einen Namen ein.
    (Optional) Gib für Beschreibung eine Beschreibung ein.
    Lege den Endpunkttyp fest und setze ihn auf Privat.
    Füge für VPC-Endpunkt-IDs die Schnittstellenendpunkt-ID ein. Wähle anschließend Hinzufügen.
    Hinweis: Wenn du den Schnittstellenendpunkt der privaten REST-API zuordnest, generiert API Gateway einen neuen Alias-Datensatz bei Amazon Route 53. Du kannst den Route53-Alias verwenden, um auf deine private API zuzugreifen.
  5. Wähle API erstellen aus.

Weitere Informationen findest du unter Erstellen einer privaten API.

Konfigurieren einer Ressourcenrichtlinie für die private REST-API, die dem Schnittstellenendpunkt den Aufruf der API ermöglicht

  1. Wähle im Navigationsbereich der API-Gateway-Konsole unter der API die Option Ressourcenrichtlinie aus.
  2. Gib auf der Seite Ressourcenrichtlinie das folgende Beispiel für eine Ressourcenrichtlinie in das Textfeld ein:
    {  "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "execute-api:/*/*/*",
          "Condition": {
            "StringNotEquals": {
              "aws:sourceVpce": "vpce-1a2b3c456d7e89012"
            }
          }
        },
        {
          "Effect": "Allow",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "execute-api:/*/*/*"
        }
      ]
    }
    Hinweis: Ersetze vpce-1a2b3c456d7e89012 durch die Schnittstellenendpunkt-ID.

Weitere Informationen findest du unter Eine Ressourcenrichtlinie für eine private API einrichten.

Einrichten einer Methode für die private REST-API

  1. Wähle im Navigationsbereich der API-Gateway-Konsole unter deiner API die Option Ressourcen aus.
  2. Wähle im Bereich Ressourcen die Option Aktionen und dann Methode erstellen aus.
  3. Wähle in der Dropdown-Liste unter dem / resource-Knoten die Option ANY (BELIEBIG) aus und klicke dann auf das Häkchensymbol.
  4. Wähle im Bereich / - ANY - Setup als Integrationstyp die Option Pseudo aus.
    Hinweis: Eine Pseudo-Integration reagiert auf jede Anforderung, die sie erreicht.
  5. Wähle Speichern aus.

Weitere Informationen findest du unter Methoden für REST-APIs in API Gateway.

Bereitstellen der privaten REST-API

  1. Wähle im Bereich Ressourcen der API-Gateway-Konsole die Option Aktionen und dann API bereitstellen aus.
  2. Gib im Dialogfeld API bereitstellen die folgenden Informationen ein:
    Wähle für Bereitstellungsstufe die Option [New Stage] aus.
    Gib für den Abschnittsnamen, einen Namen ein. Zum Beispiel dev oder test.
  3. Wähle Bereitstellen aus.
  4. Suche im Bereich Stage Editor (Stufen-Editor) nach der Meldung If Private DNS is enabled, use this URL: (Wenn „Private DNS“ aktiviert ist, verwende diese URL). Kopiere die Aufruf-URL deiner privaten REST-API.
    Hinweis: Verwende die Aufruf-URL der privaten REST-API, um das Setup zu testen.

Weitere Informationen findest du unter Bereitstellen einer privaten API.

Aufrufen der privaten REST-API von Konto A aus, um das Setup zu testen

  1. Starte in Konto A eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance in derselben VPC, in der sich der Schnittstellenendpunkt befindet.
    Wichtig: Wähle die Sicherheitsgruppe aus, die du deinem Schnittstellenendpunkt zugeordnet hast.
  2. Stelle eine Verbindung zur Amazon-EC2-Instance her.
    Hinweis: Für eine EC2-Instance können Gebühren in deinem AWS-Konto anfallen. Wenn du eine Instance zum Testen erstellst, beende die Instance, wenn du fertig bist, um weitere Gebühren zu vermeiden.
  3. Führe von der Befehlszeile der EC2-Instance aus einen der folgenden curl-Befehle aus, um die private REST-API in Konto B aufzurufen.
    Hinweis: Weitere Informationen findest du unter Aufrufen der privaten API mithilfe endpunktspezifischer öffentlicher DNS-Host-Namen.
    Bei einem privaten DNS-Namen
    Führe den folgenden Befehl aus:
    curl -i https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name
    
    Hinweis: Ersetze https://a1bc234d5e.execute-api.region.amazonaws.com/stage-name durch die Aufruf-URL der privaten API. Dieser Befehl funktioniert nur, wenn du „Privates DNS“ für den Schnittstellenendpunkt aktiviert hast. Weitere Informationen findest du unter Aufrufen einer privaten API mit privaten DNS-Namen.
    Bei einem Route53-Alias
    Führe den folgenden Befehl aus:
    curl -i https://a1bc234d5e-vpce-1a2b3c456d7e89012.execute-api.region.amazonaws.com/stage-name
    
    Hinweis: Ersetze a1bc234d5e durch die ID der API, vpce-1a2b3c456d7e89012 durch die Schnittstellenendpunkt-ID und region durch die Region deiner API. Ersetze stage-name durch den Namen der Stufe, auf der du die private API bereitgestellt hast. Weitere Informationen findest du unter Aufrufen einer privaten API mit einem Route53-Alias.
    Bei einem öffentlichen DNS-Namen mit einem Host-Header
    Führe den folgenden Befehl aus:
    curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "Host: a1bc234d5e.execute-api.region.amazonaws.com"
    
    Hinweis: Ersetze vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com durch den öffentlichen DNS-Namen des Schnittstellenendpunkts und stage-name durch den Namen der Stufe, auf der du die private API bereitgestellt hast. Ersetze a1bc234d5e.execute-api.region.amazonaws.com durch die Aufruf-URL der privaten API.
    Bei einem öffentlichen DNS-Namen mit dem x-apigw-api-id-Header
    Führe den folgenden Befehl aus:
    curl -i https://vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com/stage-name -H "x-apigw-api-id:a1bc234d5e"
    
    Hinweis: Ersetze vpce-1a2b3c456d7e89012-f3ghijkl.execute-api.region.vpce.amazonaws.com durch den öffentlichen DNS-Namen des Schnittstellenendpunkts und stage-name durch den Namen der Stufe, auf der du die private API bereitgestellt hast. Ersetze a1bc234d5e durch die ID deiner API.
  4. Überprüfe die Befehlsausgabe. API Gateway gibt eine 200-OK-Antwort zurück, wenn die Verbindung erfolgreich hergestellt wurde.

Ähnliche Informationen

Wie behebe ich Probleme, wenn ich eine Verbindung zu einem privaten API-Endpunkt von API Gateway herstelle?

Über einen Schnittstellen-VPC-Endpunkt auf einen AWS-Service zugreifen

Multi-Region private API gateway