Wie stelle ich über eine Direct Connect-Verbindung eine Verbindung zu einem privaten API Gateway her?

Lesedauer: 6 Minute
0

Ich möchte über eine AWS Direct Connect-Verbindung eine Verbindung zu einem privaten Amazon API Gateway herstellen.

Behebung

Erstellen Sie einen Amazon Virtual Private Cloud (Amazon VPC)-Endpunkt für den Amazon API Gateway-Service

Ein Amazon-VPC-Endpunkt ermöglicht es privaten Ressourcen in einer VPC, sicher mit dem API Gateway-Service zu kommunizieren. Gehen Sie wie folgt vor, um einen Amazon VPC-Endpunkt für API Gateway zu erstellen:

  1. Öffnen Sie die Amazon VPC-Konsole.
  2. Wählen Sie im Navigationsbereich unter Virtual Private Cloud die Option Endpunkte aus.
  3. Wählen Sie als Servicekategorie die Option AWS Services aus.
  4. Suchen Sie als Dienstname nach dem Schlüsselwort „execute-api“. Das führt zu einem einzigen Ergebnis: „com.amazonaws.REGION.execute-api“.
  5. Wählen Sie „com.amazonaws.REGION.execute-api“ aus.
  6. Wählen Sie für VPC die Amazon VPC aus, in der Ihre Direct Connect-Verbindung konfiguriert ist.
  7. Wählen Sie für Subnetze die Subnetze aus, in denen auf die API zugegriffen werden soll.
  8. Deaktivieren Sie für DNS-Namen aktivieren das Kontrollkästchen Für diesen Endpunkt aktivieren. Um diese Einstellung zu deaktivieren, müssen in der Amazon VPC die „DNS-Hostnamen“ aktiviert sein. Dies ist eine optionale Funktion. Wenn diese Einstellung aktiviert ist, wird der gesamte Zugriff auf öffentliche API Gateway APIs in der bereitgestellten Amazon VPC unterbrochen, wenn die VPC das von Amazon bereitgestellte DNS verwendet.
  9. Wählen Sie für Sicherheitsgruppe die Sicherheitsgruppe für den Amazon VPC-Endpunkt aus. Die Sicherheitsgruppe muss den Zugriff auf TCP/443 zulassen, der von Ihrer Amazon VPC eingeht.
  10. Wählen Sie für Richtlinie Vollzugriff aus. Diese Option ermöglicht alle Verbindungen von Ihrer Amazon VPC zum VPC-Endpunkt mithilfe von AWS IAM-Berechtigungen.
  11. Wählen Sie Endpunkt erstellen aus.
  12. Notieren Sie sich die Amazon VPC-Endpunkt-ID (zum Beispiel „vpce-01234567890abcdef“). Sie benötigen diese ID später, um die Ressourcenrichtlinie der API zu bearbeiten.

Erstellen Sie Ihre private REST-API, falls Sie noch keine haben

  1. Öffnen Sie die API Gateway-Konsole.
  2. Wählen Sie die Region Ihrer Direct Connect-Verbindung aus.
  3. Wählen Sie API erstellen aus.
  4. Wählen Sie als API-Typ REST-API Privat aus.
  5. Wählen Sie für das API-Protokoll REST aus.
  6. Wählen Sie unter Neue API erstellen die Option Beispiel-API aus.
  7. Vergewissern Sie sich unter Einstellungen, dass Endpunkttyp auf Privat gesetzt ist.
  8. Wählen Sie Importieren aus.

Erteilen Sie dem Amazon VPC-Endpunkt die Erlaubnis, auf die private REST-API zuzugreifen

  1. Wählen Sie auf der Seite API-Verwaltung die Option Ressourcenrichtlinie aus.
  2. Kopieren Sie die unten stehende Richtlinie in Ihre Ressourcenrichtlinie.
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "execute-api:/*/*/*",
          "Condition": {
            "StringNotEquals": {
              "aws:sourceVpce": "{{vpceID}}"
            }
          }
        },
        {
          "Effect": "Allow",
          "Principal": "*",
          "Action": "execute-api:Invoke",
          "Resource": "execute-api:/*/*/*"
        }
      ]
    }
    Ersetzen Sie die Zeichenfolge {{vpceID}} durch die Amazon VPC-Endpunkt-ID, die Sie sich nach der Erstellung des VPC-Endpunkts notiert haben. Oder suchen Sie die ID in der Amazon VPC-Konsole unter Endpunkte.
    Hinweis: Diese Beispielrichtlinie ermöglicht den Zugriff auf alle Ressourcen in der API von Ihrer Amazon VPC aus. Um den Zugriff weiter einzuschränken, ändern Sie den Ressourcenschlüssel.
  3. Wählen Sie Speichern aus.

Stellen Sie Ihre API bereit, um die Änderungen zu übernehmen

Nachdem Sie die API erstellt und eine Ressourcenrichtlinie hinzugefügt haben, müssen Sie die API in einer Phase bereitstellen, in der Ihre Änderungen implementiert werden können:

  1. Wählen Sie in der API Gateway-Konsole im Navigationsbereich Ressourcen aus.
  2. Wählen Sie Aktionen aus.
  3. Wählen Sie unter API-Aktionen die Option API bereitstellen aus.
  4. Wählen Sie für Bereitstellungsphase die Option [New Stage] aus .
  5. Geben Sie einen Namen für die Phase ein.
  6. Wählen Sie Bereitstellen aus. Die Änderungen werden in der API bereitgestellt. Die Übertragung dieses Vorgangs kann einige Minuten dauern.

Testen Sie den Zugriff auf die API über die Direct Connect-Verbindung

Gehen Sie wie folgt vor, um den Zugriff zu testen:

  1. Wählen Sie auf der Amazon VPC-Konsole Endpunkte und dann den VPC-Endpunkt aus, den Sie erstellt haben.

  2. Kopieren Sie unter Details den DNS-Namen für den VPC-Endpunkt. Zum Beispiel,
    „vpce-0123456789abcdef-b238e1kf.execute-api.REGION.vpce.amazonaws.com“.

  3. Führen Sie von einem Computer aus, der über Direct Connect mit Ihrer Amazon VPC verbunden ist, einen der folgenden Befehle aus, um die DNS-Hostnamenauflösung des VPC-Endpunkts zu testen.

    Windows PowerShell:

    nslookup <YOUR_VPCE_HOSTNAME>

    -oder-

    macOS/UNIX:

    nslookup <YOUR_VPCE_HOSTNAME>

    Hinweis: Ersetzen Sie YOUR_VPCE_HOSTNAME durch den Hostnamen des VPC-Endpunkts, den Sie zuvor erstellt haben.

    Die Antwort sollte eine private IP-Adresse enthalten, die Ihrem Amazon VPC-Endpunkt entspricht. Wenn Sie in der Antwort keine private IP-Adresse erhalten, überprüfen Sie den Hostnamen des Amazon VPC-Endpunkts auf der Amazon- VPC-Konsole unter Endpunkte.

  4. Wenn DNS funktioniert, stellen Sie eine Test-HTTP-Anfrage. Dazu benötigen Sie die API-ID von der API Gateway-Konsole. Kopieren Sie die API-ID aus der Liste. Die API-ID ist eine Zeichenfolge, z. B. „chw1a2q2xk“.

  5. Führen Sie auf einem lokalen Computer, der mit der Direct Connect-Verbindung verbunden ist, den folgenden Befehl aus:

    Windows PowerShell:

    curl -H @{'x-apigw-api-id' = '<YOUR_API_ID>'} https://<YOUR_VPCE_HOSTNAME>/<STAGE>

    -oder-

    macOS/UNIX:

    curl -IX GET -H 'x-apigw-api-id:<YOUR_API_ID>' https://<YOUR_VPCE_HOSTNAME>/<STAGE>

    Hinweis: Ersetzen Sie YOUR_API_ID durch die ID Ihrer privaten REST-API oder der API, die Sie zuvor erstellt haben. Ersetzen Sie YOUR_VPCE_HOSTNAME durch den Hostnamen des VPC-Endpunkts und STAGE durch die Bereitstellungsphase, die Sie zuvor erstellt haben.

Stellen Sie Folgendes sicher:

  • Die erste Zeile der Antwort enthält „HTTP/1.1 200 OK“.
  • Wenn Sie keine Antwort erhalten, überprüfen Sie, ob die dem Amazon VPC-Endpunkt zugeordnete Sicherheitsgruppe eingehende Verbindungen über TCP/443 von Ihrer Quell-IP-Adresse aus zulässt. Überprüfen Sie außerdem, ob Ihre Verbindung Ihre Direct Connect-Verbindung korrekt verwendet.
  • Wenn Sie die Antwort „403 Forbidden“ erhalten, überprüfen Sie, ob Sie den Header <YOUR_API_ID> gesetzt haben. Bestätigen Sie, dass Sie eine GET-Anfrage senden. Überprüfen Sie außerdem, ob die <STAGE> korrekt hinzugefügt wurde.

Hinweis: Es interagieren möglicherweise Client-Webanwendungen, die von einer anderen Domain als dieser API bereitgestellt werden, mit dieser API. In solchen Fällen generiert der Browser eine Preflight-Anfrage von CORS, die es schwierig macht, den Header x-apigw-api-id zu setzen. Um dieses Problem zu beheben, greifen Sie stattdessen mit einem Route53-Alias auf die private API zu.

Ähnliche Informationen

Was ist CORS?

Wie kann ich Probleme mit dem Direct Connect-Gateway-Routing beheben?

Wie kann ich ein Direct Connect-Gateway einrichten?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 4 Monaten