0

Das ist Bit-tricky Situation, die ich hier, Ich habe eine Lambda-Funktion & API-Gateway, dann ich cloudfront über API-Gateway für eine schnellere Verarbeitung und den Nutzen aller Endpunkt-Knoten einrichten von AWS bereitgestellt [Es sollte mehr Zeit in Anspruch nehmen, Cloudfront zusätzlich zum API-Gateway-Dienst einzusetzen, aber bessere Ergebnisse mit der Cloudfront-Schicht, vielleicht DNS-Auflösung und AWS-interne Infrastruktur ist besser]Passing Kontext/Autorisierung mit Cloudfront zu Lambda

Ich habe eine JAVA-Funktion eingerichtet innerhalb Lambda, die völlig in Ordnung funktioniert, aber ich möchte Kontext der Anfrage Hersteller in Lambda-Funktion verwenden

public String handleRequest(UserPOJO input, Context context) { 
} 

Wenn ich direkte Lambda-Funktion Anfrage kann ich erreichen, aber es dauert zu viel Zeit direkte Lambda von meinem Android-Client ausführen, auch finde ich es nicht gut, diese Details zu offenbaren, und mit Cloudfront bin ich nicht sicher, welche Header sollte ich senden, so dass Lambda erkennt, dass es Cognito Rolle und ID ist mit context.getIdentity().getIdentityId(); in Lambda.

Wenn jemand mein Problem hier versteht und es besser für andere ausarbeitet, werde ich froh sein, es ist sehr komplex, das Problem zu erklären.

Technisch

  1. kann ich die Ausführung von Lambda-Funktion macht direkt mit cognito Credential Provider-Authentifizierung aber sehr langsam

  2. Kann API-Gateway-Antrag stellen, den Credential Provider Authentifizierung Cognito, Geschwindigkeit ist besser als direkte Lambda Ausführung

  3. Kann Cloudfront-Anfrage machen, aber stecken, wo ich nicht weiß, wie kann ich Autorisierung Credential-Provider-Autorisierung verwenden, während die Requests t. Schien schneller als API-Gateway.

Danke. :)

Antwort

0

Wenn Sie Cognito-bezogene Informationen in der Lambda-Funktion erhalten möchten und Ihre Anfrage vom API-Gateway übernehmen, können Sie die mapping template verwenden, um Informationen einzufügen, die Sie benötigen, dann können Sie sie vom Eingabeobjekt abrufen.

  1. Ich kann die Ausführung der Lambda-Funktion direkt mit Authentifizierung cognito Credential Provider machen, aber sehr langsam.

    Ich empfehle Ihnen, Ihre Lambda-Funktion in Python oder Javascript Runtime zu bauen.

  2. Kann API-Gateway-Antrag stellen, die Credential Provider Authentifizierung Cognito, Geschwindigkeit ist besser als direkte Lambda-Ausführung

    API-Gateway kann nicht die Leistung Ihrer Lambda-Funktion verbessern, aber API-Gateway kann für API-Management-Funktion geben Sie Ihre Lambda-Funktion.

  3. Kann Cloudfront-Anfrage stellen, aber stecken, wo ich nicht weiß, wie kann ich Cognito Credential Provider-Autorisierung verwenden, während Sie die Anfrage stellen. Schien schneller als API-Gateway.

    CloudFront hat nichts mit Ihren Cognito-Anmeldeinformationen zu tun. Es übergibt einfach alles, was es an API Gateway erhält.

Ich bin nicht sicher, wie vor API-Gateway eine Cloudfront Verteilung Hinzufügen kann die Latenz besser machen, außer Sie die Randseite Cache ermöglichen, die nicht jedes Mal Ihre Lambda-Funktion aufruft.

+0

CloudFront übergibt nicht alles. Die meisten Anforderungsheader, Cookies und die Abfragezeichenfolge werden standardmäßig aus der Anforderung entfernt. Sie können jedoch gegebenenfalls über die Verhaltenssteuerung für das Cache wieder hinzugefügt werden. CloudFront kann die Leistung durch Verbindungs- und Transportoptimierung verbessern, ohne dass der Cache aktiviert ist (so wurde S3 Transfer Acceleration implementiert) ... aber nicht für API Gateway, das von CloudFront bereits transparent (transparent) für Transportzwecke ... also wenn Es hilft, es könnte eine Illusion sein, die durch das Zwischenspeichern von Antworten verursacht wird, die nicht zwischengespeichert werden sollten. –

+0

3. Ich bin mir nicht sicher, wie es auf diese Weise schneller geht, aber ich nehme an, sie haben ihren internen DNS-Server und ihr Hochleistungsnetzwerk, das die Hostnamenerkennung sowie den Datentransfer zwischen Cloudfront und Lambda-Reise schneller macht. Und der nächstgelegene Endpunkt des Cloudfrontproviders ist der Benutzer. Ich finde immer noch einen Ausweg und lass uns sehen. –

Verwandte Themen