AWS Lambda und API Gateway, Teil 3 API-Schlüssel zuweisen und testen

Autor / Redakteur: Dipl. -Ing. Thomas Drilling / Stephan Augsten

Bisher ist unsere mittels Amazon API Gateway auf AWS gehostete Rest-API öffentlich. Jeder, der die Public URL kennt, kann diese aufrufen oder je nach definierter Methode sogar einen Upload veranlassen. Das wollen wir in diesem Workshop ändern.

Anbieter zum Thema

Das Testing von APIs lässt sich mit dem Tool Postman gut realisieren.
Das Testing von APIs lässt sich mit dem Tool Postman gut realisieren.
(Bild: Drilling / Postman)

Um den Zugriff auf eine API abzusichern, lassen sich Schlüssel direkt in den Methoden hinterlegen.
Um den Zugriff auf eine API abzusichern, lassen sich Schlüssel direkt in den Methoden hinterlegen.
(Bild: Drilling / AWS)

Um bei AWS gehostete Rest-APIs abzusichern, lässt sich ein entsprechender Key hinterlegen. Dazu gehen wir zuerst in unsere API „in“ der Get-Methode zum Abschnitt „Methodenanforderung“ und setzen im Abschnitt „Einstellungen“ den Eintrag für „API-Schlüssel erforderlich“ auf „True“.

Der API-Schlüssel wird dann in der Hauptkonsole erstellt.
Der API-Schlüssel wird dann in der Hauptkonsole erstellt.
(Bild: Drilling / AWS)

Jetzt wechseln wir in der API-Gateway-Konsole zum Hauptmenü „Schlüssel“ und erstellen mit „Aktionen / API-Schlüssel erstellen“ einen neuen Key. Hierzu vergibt man einen Namen, lässt die Voreinstellung „Automatisch generieren“ bestehen und klickt dann auf „Speichern“. Danach können wir auf „Schlüssel anzeigen“ klicken. Den erstellten Schlüssel müssen wir bei künftigen Anfragen im Anfrage-Header mit übergeben.

Ebenfalls über das Hauptmenü ist es erforderlich, einen entsprechenden Nutzungsplan zu erstellen ...
Ebenfalls über das Hauptmenü ist es erforderlich, einen entsprechenden Nutzungsplan zu erstellen ...
(Bild: Drilling / AWS)

Anschließend können wir mit der gleichnamigen Schaltfläche einen so genannten „Nutzungsplan“ hinzufügen. Den haben wir aber noch nicht und wählen daher im Hauptmenü der Konsole das Menü „Nutzungspläne“, in welchem wir einen neuen Plan mit „Erstellen“ anlegen. Der bekommt einen „Namen“, ggf. eine „Drosselung“ und ein „Kontingent“. Wir setzen die Drosselung auf 5 Anforderungen pro Sekunde, ebenso die Burst-Rate (Steigerung), um die Funktionalität später gut testen zu können. Das Kontingent (Quota) setzen wir auf maximal 100 Anforderungen pro Tag.

... und dann die jeweilige API samt Stage zuzuordnen.
... und dann die jeweilige API samt Stage zuzuordnen.
(Bild: Drilling / AWS)

Danach klicken wir auf „Weiter“ und ordnen unseren „plan1“ die gewünschte API und API-Stufe (Stage) zu. Achtung: In der GUI wird leicht übersehen, dass man erst auf das kleine Häkchen oben rechts klicken muss, bevor „Weiter“ klickbar wird. Jetzt müssen wir noch den API-Key der API zuweisen. Das passiert mit der Schaltfläche „API-Schlüssel zu Nutzungsplan hinzufügen“ im Tab „API-Schlüssel“.

Bevor der Aufruf abgesichert wird, gilt es zunächst, die API neu bereitzustellen.
Bevor der Aufruf abgesichert wird, gilt es zunächst, die API neu bereitzustellen.
(Bild: Drilling / AWS)

Auch hier ist es wieder erforderlich, auf das kleine Häkchen oben rechts zu klicken. Bevor wir den API-Key testen können, müssen wir die API wieder neu bereitstellen. Wenn wir nun einen Zugriff ohne Schlüssel versuchen, bekommen wir wie erwartet die Antwort „Forbidden“.

APIs testen mit Postman

Für das Testen des API-Keys verwenden wir der Bequemlichkeit halber (und weil das Testen von APis mit dem im Folgenden vorgestellten Tool automatisierbar ist) ein passenden API-Test-Tool wie z. B. das Tool „Postman“, welches in der Standard-Version mit Community-Support kostenfrei ist.

Postman ist unter Entwicklern sehr populär und lässt sich z. B. in der Windows-Version von der Postman-Projektseite herunterladen. Die freie Version eignet sich für Einzelpersonen und kleine Teams. Die Version Postman Pro unterstützt bis zu 50 User im Team und kostet 8 US-Dollar per User und Monat, während Postman Enterprise mit 18 Dollar pro User und Monat für beliebig große Teams kostet. Das Installieren der Windows-Version ist selbsterklärend.

Das Testing von APIs lässt sich mit dem Tool Postman gut realisieren.
Das Testing von APIs lässt sich mit dem Tool Postman gut realisieren.
(Bild: Drilling / Postman)

Wurde Postman erfolgreich installiert und gestartet, definiert man einfach einen neuen Request wie z. B. „Test-HelloAPI“, wählt dann bei der HTTP-Methode „Get“ und trägt bei „Enter request URL“ unsere API-Gateway-URL ein. Nun wechseln wir zum Tab „Authorization“, lassen den Typ auf „Inherit auth from parents“ und senden den Request erst einmal mit „Send“ ab. Wir bekommen dann zunächst genau die gleiche „Forbidden“-Antwort, wie aus der AWS Console.

Für den Aufruf einer geschützten API ist die Anpassung des Headers erforderlich.
Für den Aufruf einer geschützten API ist die Anpassung des Headers erforderlich.
(Bild: Drilling / Postman)

Um den API-Key mit zu übergeben, müssen wir jetzt einen „Header“ hinzufügen. Hierzu wechseln wir zum Abschnitt „Headers“ und tragen in der Key-Spalte „x-api-key“ mit dem Value unseres API-Keys ein. Damit sollte auch der Aufruf einer per API-Key geschützten API funktionieren. Danach kann man theoretisch noch das Kontingent und die Drosselung testen.

Das Ergebnis des API-Aufrufs wird dann innerhalb von Postman angezeigt.
Das Ergebnis des API-Aufrufs wird dann innerhalb von Postman angezeigt.
(Bild: Drilling / Postman)

(ID:45899509)