Amazon API Gateway Serverlose Bereitstellung von Programmierschnittstellen

Autor / Redakteur: Sascha Möllering * / Stephan Augsten

„Wir würden gerne Amazon API Gateway nutzen, um unsere bestehenden REST-APIs ohne eigene Server vollständig verwaltet zu implementieren. Welche Empfehlungen und Entwurfsmuster existieren für Amazon API Gateway?“

Anbieter zum Thema

Per Amazon API Gateway ist es möglich, Lambda-Code über eine benutzerdefinierte API aufzurufen.
Per Amazon API Gateway ist es möglich, Lambda-Code über eine benutzerdefinierte API aufzurufen.
(Bild: Amazon Web Services)

Amazon API Gateway ist ein vollständig verwalteter Service, der das Erstellen, Veröffentlichen, Warten, Überwachen und Sichern von APIs für Entwickler in jeder beliebigen Größenordnung vereinfacht. Amazon API Gateway ist eng integriert mit AWS Lambda, damit völlig serverlose APIs erstellt werden können.

So ist es möglich, REST-APIs zu erstellen, die Mobile- und Web-Anwendungen nutzen können, um öffentlich verfügbare AWS-Services durch Code aufzurufen, der in AWS Lambda ausgeführt wird. Amazon API Gateway bietet einen singulären Einstiegspunkt für die API-Entwicklung; es ist nicht notwendig, API-spezifischen Code wie beispielsweise Security, Caching, Drosselung und Monitoring zu entwickeln. Durch die Integration von Amazon CloudFront kann mit API Gateway das weltweite Netzwerk von Edge-Standorten genutzt und den Endnutzern die minimale Latenz für API-Anforderungen und -Antworten geboten werden.

Amazon API Gateway unterstützt Mock-Integration für API-Methoden. Damit ist es möglich, dass Entwickler API-Antworten direkt aus dem API Gateway erzeugen ohne die entsprechende Backendlogik implementieren zu müssen. Damit können Entwicklungsteams voneinander entkoppelt werden, denn diese können bereits mit der API arbeiten bevor diese vollständig implementiert worden ist.

Seit einiger Zeit unterstützt Amazon API Gateway auch binäre Dateien, typischerweise wird diese Funktionalität dafür genutzt, um beispielsweise Bilder direkt über eine API zu laden. API Gateway hat ein Limit von zehn Megabyte für binäre Dateien. Falls dennoch größere Dateien über eine API geladen werden sollen, ist ein übliches Vorgehen, die Dateien mithilfe einer Signed URL nach Amazon S3 hochzuladen.

Diese URL kann durch eine Lambda-Funktion erzeugt werden, die durch API Gateway aufgerufen wird. Die API gibt diese URL als Rückgabewert an den aufrufenden Client zurück und dieser kann die Datei direkt in einen S3-Bucket hochladen. Für jede Pre-Signed URL kann definiert werden wie lange diese gültig ist. Das folgende Beispiel erzeugt eine URL, die eine Stunde gültig ist:

AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());java.util.Date expiration = new java.util.Date();
long msec = expiration.getTime();
msec += 1000 * 60 * 60; // 1 hour.
expiration.setTime(msec);
GeneratePresignedUrlRequest generatePresignedUrlRequest =
  new GeneratePresignedUrlRequest(bucketName, objectKey);
generatePresignedUrlRequest.setMethod(HttpMethod.GET); // Default.
generatePresignedUrlRequest.setExpiration(expiration);
URL s = s3client.generatePresignedUrl(generatePresignedUrlRequest);

Eines der Standardwerkzeuge für die Entwicklung und Dokumentation von REST-APIs ist Swagger. Mit Swagger können darüber hinaus noch Client-Bibliotheken auf Basis vorhandener API-Beschreibungen in über 40 Sprachen generiert werden, was die Entwicklung von Konsumenten von REST-APIs deutlich vereinfacht.

Das Amazon API Gateway unterstützt den Import und Export von Swagger-Definitionen, was die Migration bestehender APIs deutlich vereinfacht. Eine der einfachsten Möglichkeiten des Imports besteht in der Nutzung der AWS CLI. Das folgende Beispiel zeigt den Import einer Swagger-Definition in die Region eu-west-1:

aws apigateway import-rest-api --body 'file:///path/to/API_Swagger_template.json' --region eu-west-1

Rückgabewert dieser Operation ist unter anderem auch der Identifier der API. Diese ID kann für die Aktualisierung der API genutzt werden:

aws apigateway update-rest-api --rest-api-id 1234123412 --patch-operations op=replace,path=/name,value='New Name' --region eu-west-1

Sascha Möllering
Sascha Möllering
(Bild: AWS Germany GmbH)

Mithilfe dieser Automatisierung lassen sich das Ausrollen von APIs und deren inkrementelle Änderungen in einen Continuous-Delivery-Prozess integrieren.

* Sascha Möllering arbeitet als Solutions Architect bei der Amazon Web Services Germany GmbH. Seine Interessen liegen in den Bereichen Automation, Infrastructure as Code, Distributed Computing, Container und JVM.

(ID:44645946)