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

Tutorial: Aufbau 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.


      Architektonischer Überblick über die API, die Sie in diesem Tutorial erstellen. Ihre private API ist nur innerhalb Ihrer Amazon VPC zugänglich.

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 Voraussetzungen für die ersten Schritte mit API Gateway.

In diesem Tutorial wird verwendet AWS Management Console. 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 Create stack (Stack erstellen) und dann With new resources (standard) (Mit neuen Ressourcen (Standard)) aus.

  3. Wählen Sie unter Specify template (Vorlage angeben) die Option Upload a template file (Vorlagendatei hochladen)aus.

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

  5. Wählen Sie Next.

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

  7. Wählen Sie für Stack-Optionen konfigurieren die Option Weiter.

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

  9. Wählen Sie Create stack (Stack erstellen) 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 Endpunkttyp die Option Privat aus.

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

  6. Wählen Sie Create 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 Aktionen und dann Methode erstellen.

  4. Wählen Sie GET und dann das Häkchen, um Ihre Auswahl zu bestätigen.

  5. Wählen Sie für den Integrationstypdie Lambda-Funktion

  6. Wählen Sie Lambda-Proxy-Integration verwenden. 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 Speichern und dann OK, um zu bestätigen, dass Sie API Gateway die Berechtigung zum Aufrufen Ihrer Lambda-Funktion erteilen.

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 Ressourcenrichtlinieaus.

  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 Save (Speichern) aus.

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. Wählen Sie Aktionen und anschließend API bereitstellen.

  4. Wählen Sie für Deployment stage New Stage.

  5. Geben Sie für Stufenname Test ein.

  6. 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 Stufen und dann die Testphase aus.

  4. Kopieren Sie die URL Ihrer API. 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-Manger, 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 Aktionen, wählen Sie Löschenund bestätigen Sie dann 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.