Tutorial: Erstellen einer privaten REST-API - Amazon API Gateway

Tutorial: Erstellen einer privaten REST-API

In diesem Tutorial erstellen Sie eine private REST-API. Clients können nur von Ihrer Amazon VPC aus auf die API zugreifen. Die API ist vom öffentlichen Internet isoliert, was eine übliche Sicherheitsanforderung ist.

Dieses Tutorial nimmt ungefähr 30 Minuten in Anspruch. Zunächst verwenden Sie eine AWS CloudFormation-Vorlage, um eine Amazon VPC, einen VPC-Endpunkt sowie eine AWS Lambda-Funktion zu erstellen und eine Amazon-EC2-Instance zu launchen, mit der Sie Ihre API testen. Als Nächstes verwenden Sie die AWS Management Console, um eine private API zu erstellen und eine Ressourcenrichtlinie anzuhängen, die den Zugriff nur von Ihrem VPC-Endpunkt aus zulässt. Zuletzt testen Sie Ihre API.

Übersicht der privaten API, die Sie in diesem Tutorial erstellen.

Um dieses Tutorial durchzuführen, benötigen Sie ein AWS-Konto und einen AWS Identity and Access Management-Benutzer mit Konsolenzugriff. Weitere Informationen finden Sie unter Einrichten der API Gateway.

In diesem Tutorial wird AWS Management Console verwendet. Eine AWS CloudFormation-Vorlage, die diese API und alle zugehörigen Ressourcen erstellt, finden Sie unter template.yaml.

Schritt 1: Erstellen von Abhängigkeiten

Laden Sie diese AWS CloudFormation-Vorlage herunter und entpacken Sie sie. Sie verwenden die Vorlage, um alle Abhängigkeiten für Ihre private API zu erstellen, einschließlich einer Amazon VPC, eines VPC-Endpunkts und einer Lambda-Funktion, die als Backend Ihrer API dient. Sie erstellen die private API später.

So erstellen Sie einen AWS CloudFormation-Stack
  1. Öffnen Sie die AWS CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie Stack erstellen und dann Mit neuen Ressourcen (Standard) aus.

  3. Wählen Sie unter Vorlage angeben die Option Vorlagendatei hochladen aus.

  4. Wählen Sie die Vorlage aus, die Sie heruntergeladen haben.

  5. Wählen Sie Weiter aus.

  6. Geben Sie für Stack-Name die Zeichenfolge private-api-tutorial ein und klicken Sie auf Weiter.

  7. Wählen Sie in Stack-Optionen konfigurieren die Option Weiter aus.

  8. Bestätigen Sie in Funktionen, dass AWS CloudFormation IAM-Ressourcen in Ihrem Konto erstellen darf.

  9. Wählen Sie Absenden aus.

AWS CloudFormation stellt die Abhängigkeiten für Ihre API bereit, was einige Minuten dauern kann. Wenn der Status Ihres AWS CloudFormation-Stacks CREATE_COMPLETE lautet, wählen Sie Ausgaben aus. Notieren Sie sich Ihre VPC-Endpunkt-ID. Sie benötigen sie für spätere Schritte in diesem Tutorial.

Schritt 2: Erstellen einer privaten API

Sie erstellen eine private API, um nur Clients in Ihrer VPC den Zugriff darauf zu ermöglichen.

Erstellen einer privaten API
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie API erstellen und dann für Rest-API die Option Erstellen aus.

  3. Geben Sie unter API name (API-Name) private-api-tutorial ein.

  4. Wählen Sie für API endpoint type (API-Endpunkttyp) die Option Private (Privat) aus.

  5. Für VPC-Endpunkt-IDs geben Sie die VPC-Endpunkt-ID aus den Ausgaben Ihres AWS CloudFormation-Stacks ein.

  6. Wählen Sie Create API (API erstellen) aus.

Schritt 3: Erstellen Sie eine Methode und Integration

Sie erstellen eine GET Methode und eine Lambda-Integration, um GET-Anfragen an Ihre API zu bearbeiten. Wenn ein Client Ihre API aufruft, sendet API Gateway die Anfrage an die Lambda-Funktion, die Sie in Schritt 1 erstellt haben und gibt dann eine Antwort an den Client zurück.

So erstellen Sie eine Methode und Integration
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie Ihre API aus.

  3. Wählen Sie Methode erstellen aus.

  4. Für Methodentyp wählen Sie GET aus.

  5. Wählen Sie für den Integration type (Integrationstyp) die Option Lambda function (Lambda-Funktion) aus.

  6. Schalten Sie die Lambda-Proxy-Integration ein. Mit einer Lambda-Proxy-Integration sendet API Gateway ein Ereignis mit einer definierten Struktur an Lambda und transformiert die Antwort von Ihrer Lambda-Funktion in eine HTTP-Antwort.

  7. Wählen Sie für Lambda-Funktion die Funktion aus, die Sie mit der AWS CloudFormation-Vorlage in Schritt 1 erstellt haben. Der Name der Funktion beginnt mit private-api-tutorial.

  8. Wählen Sie Methode erstellen aus.

Schritt 4: Anhängen einer Ressourcenrichtlinie

Sie hängen Ihrer API eine Ressourcenrichtlinie an, die es Clients ermöglicht, Ihre API nur über Ihren VPC-Endpunkt aufzurufen. Um den Zugriff auf Ihre API weiter einzuschränken, können Sie auch eine VPC-Endpunktrichtlinie für Ihren VPC-Endpunkt konfigurieren, aber das ist für dieses Tutorial nicht erforderlich.

So hängen Sie eine Ressourcenrichtlinie an
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie Ihre API aus.

  3. Wählen Sie Ressourcenrichtlinie aus und klicken Sie dann auf Richtlinie erstellen.

  4. Geben Sie die folgende Richtlinie ein: Ersetzen Sie vpceID durch Ihre VPC-Endpunkt-ID aus den Ausgaben Ihres AWS CloudFormation-Stacks.

    { "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:/*" } ] }
  5. Wählen Sie Änderungen speichern.

Schritt 5: Bereitstellen Ihrer API

Als Nächstes stellen Sie Ihre API bereit, um sie Clients in Ihrer Amazon VPC zur Verfügung zu stellen.

So stellen Sie eine API bereit
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie Ihre API aus.

  3. Klicken Sie auf Deploy API.

  4. Wählen Sie für Stufe die Option Neue Stufe aus.

  5. Geben Sie für Stage name (Stufenname) test ein.

  6. (Optional) Geben Sie unter Description (Beschreibung) eine Beschreibung ein.

  7. Wählen Sie Deploy (Bereitstellen) aus.

Jetzt sind Sie bereit, Ihre API zu testen.

Schritt 6: Stellen Sie sicher, dass Ihre API nicht öffentlich zugänglich ist

Verwenden Sie, curl um zu überprüfen, ob Sie Ihre API nicht außerhalb Ihrer Amazon VPC aufrufen können.

So testen Sie Ihre API
  1. Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie Ihre API aus.

  3. Wählen Sie im Hauptnavigationsbereich Stufen aus und klicken Sie dann auf die Stufe Test.

  4. Wählen Sie unter Stufendetails das Kopiersymbol aus, um die Aufruf-URL Ihrer API zu kopieren. Die URL sieht folgendermaßen aus https://abcdef123.execute-api.us-west-2.amazonaws.com/test. Für den VPC-Endpunkt, den Sie in Schritt 1 erstellt haben, ist privates DNS aktiviert, sodass Sie die bereitgestellte URL zum Aufrufen Ihrer API verwenden können.

  5. Verwenden Sie curl, um zu versuchen, Ihre API von außerhalb Ihrer VPC aufzurufen.

    curl https://abcdef123.execute-api.us-west-2.amazonaws.com/test

    Curl zeigt an, dass der Endpunkt Ihrer API nicht aufgelöst werden kann. Wenn Sie eine andere Antwort erhalten, gehen Sie zurück zu Schritt 2 und stellen Sie sicher, dass Sie Privat für den Endpunkttyp Ihrer API auswählen.

    curl: (6) Could not resolve host: abcdef123.execute-api.us-west-2.amazonaws.com/test

Als Nächstes stellen Sie eine Verbindung zu einer Amazon-EC2-Instance in Ihrer VPC her, um Ihre API aufzurufen.

Schritt 7: Verbinden Sie sich mit einer Instance in Ihrer VPC und rufen Sie Ihre API auf

Als Nächstes testen Sie Ihre API aus Ihrer Amazon VPC heraus. Um auf Ihre private API zuzugreifen, stellen Sie eine Verbindung zu einer Amazon-EC2-Instance in Ihrer VPC her und verwenden dann curl, um Ihre API aufzurufen. Sie verwenden Systems-Manager Session-Manager, um eine Verbindung mit Ihrer Instance im Browser herzustellen.

So testen Sie Ihre API
  1. Öffnen Sie die Amazon EC2-Konsole unter https://console.aws.amazon.com/ec2/.

  2. Wählen Sie Instances.

  3. Wählen Sie die Instance mit dem Namen private-api-tutorial aus, die Sie mit der AWS CloudFormation-Vorlage in Schritt 1 erstellt haben.

  4. Wählen Sie Verbinden und wählen Sie dann Session-Manager.

  5. Wählen Sie Verbinden , um eine browserbasierte Sitzung für Ihre Instance zu starten.

  6. Verwenden Sie in Ihrer Session-Manager-Sitzung curl, um Ihre API aufzurufen. Sie können Ihre API aufrufen, da Sie eine Instance in Ihrer Amazon VPC verwenden.

    curl https://abcdef123.execute-api.us-west-2.amazonaws.com/test

    Stellen Sie sicher, dass Sie die Antwort erhalte Hello from Lambda!.

Sie verwenden Session-Manager, um Ihre API aus Ihrer Amazon VPC heraus aufzurufen.

Sie haben erfolgreich eine API erstellt, auf die nur von Ihrer Amazon VPC aus zugegriffen werden kann und dann überprüft, dass sie funktioniert.

Schritt 8: Bereinigen

Um unnötige Kosten zu vermeiden, löschen Sie die Ressourcen, die Sie im Rahmen dieses Tutorials erstellt haben. Mit den folgenden Schritten werden Ihre REST-API und Ihr AWS CloudFormation-Stack gelöscht.

So löschen Sie eine REST-API
  1. Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie auf der Seite APIs eine API aus. Wählen Sie API-Aktionen aus, klicken Sie auf API löschen und bestätigen Sie anschließend Ihre Auswahl.

So löschen Sie einen AWS CloudFormation-Stack
  1. Öffnen Sie die AWS CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie Ihren AWS CloudFormation-Stack aus.

  3. Wählen Sie Löschen und bestätigen Sie dann Ihre Auswahl.

Nächste Schritte: Automatisieren mit AWS CloudFormation

Sie können die Erstellung und Bereinigung aller an diesem Tutorial beteiligten AWS Ressourcen automatisieren. Eine vollständige AWS CloudFormation-Beispielvorlage finden Sie unter template.yaml.