Lambda-Genehmiger über die API Gateway-Konsole konfigurieren
Nachdem Sie die Lambda-Funktion erstellt und überprüft haben, ob sie funktioniert, führen Sie die folgenden Schritte aus, um den API Gateway-Lambda-Genehmiger (früher als benutzerdefinierter Genehmiger bezeichnet) in der API Gateway-Konsole zu konfigurieren.
So konfigurieren Sie einen Lambda-Genehmiger in der API Gateway-Konsole:
-
Melden Sie sich bei der API Gateway-Konsole an.
-
Erstellen Sie eine neue API oder markieren Sie eine vorhandene API und wählen Sie Authorizers unter dieser API.
-
Wählen Sie Create New Authorizer.
-
Geben Sie für Create Authorizer einen Genehmigernamen in das Eingabefeld Name ein.
-
Wählen Sie als Type die Option Lambda.
-
Wählen Sie für Lambda Function (Lambda-Funktion) eine Region aus und anschließend die Lambda-Funktion des Genehmigers in Ihrem Konto.
-
Lassen Sie Lambda Invoke Role (Lambda-Aufrufrolle) leer, damit die API Gateway-Konsole eine ressourcenbasierte Richtlinie festlegen kann. Die Richtlinie gewährt API Gateway die Berechtigung, die Lambda-Genehmigerfunktion aufzurufen. Sie können außerdem den Namen einer IAM-Rolle eingeben, damit API Gateway die Lambda-Genehmigerfunktion aufrufen kann. Ein Beispiel für eine solche Rolle finden Sie unter Übernehmbare IAM-Rolle erstellen.
Wenn Sie sich dafür entscheiden, die ressourcenbasierte Richtlinie von der API Gateway-Konsole einstellen zu lassen, wird das Dialogfeld Add Permission to Lambda Function (Berechtigung zu Lambda-Funktion hinzufügen) angezeigt. Klicken Sie auf OK. Nach der Erstellung der Lambda-Autorisierung können Sie sie mit den entsprechenden Autorisierungs-Token-Werten testen, um zu überprüfen, ob sie erwartungsgemäß funktioniert.
-
Für Lambda-Ereignisnutzlast wählen Sie entweder Token für einen
TOKEN
-Genehmiger oder Anforderung für einenREQUEST
-Genehmiger. (Dies entspricht dem Einstellen der type-Eigenschaft aufTOKEN
oderREQUEST
.) -
Abhängig von der Auswahl im vorherigen Schritt führen Sie einen der folgenden Schritte aus:
-
Für die Optionen Token machen Sie Folgendes:
-
Geben Sie den Namen eines Headers in Token Source ein. Der API-Client muss einen Header mit diesem Namen enthalten, um das Autorisierungs-Token an den Lambda-Genehmiger zu senden.
-
Optional stellen Sie eine RegEx-Anweisung im Eingabefeld
Token Validation
bereit. API Gateway führt eine erste Überprüfung des eingegebenen Token für diesen Ausdruck an und ruft nach der erfolgreichen Validierung den Genehmiger auf. Dies trägt dazu bei, dass die Wahrscheinlichkeit von Gebühren für ungültige Token reduziert werden. -
Wählen Sie für Authorization Caching die Option Enabled oder heben Sie die Auswahl auf, abhängig davon, ob Sie die vom Genehmiger generierte Genehmigungsrichtlinie in den Cache stellen wollen oder nicht. Wenn ein Caching der Richtlinie aktiviert ist, können Sie den TTL-Wert ändern. Durch die Einstellung TTL=0 wird das Richtlinien-Caching deaktiviert. Wenn das Richtlinien-Caching aktiviert ist, wird der in Token Source spezifizierte Header-Name zum Cache-Schlüssel.
Anmerkung Die TTL-Standardwert ist 300 Sekunden. Der Höchstwert ist 3.600 Sekunden; dieses Limit kann nicht erhöht werden.
-
-
Für die Optionen Request machen Sie Folgendes:
-
Geben Sie für Identity Sources einen Anforderungsparameternamen eines gewählten Parametertyps ein. Die unterstützten Parametertypen sind
Header
,Query String
,Stage Variable
undContext
. Um weitere Identitätsquellen hinzuzufügen, wählen Sie Add Identity Source.API Gateway verwendet die angegebenen Identitätsquellen als Cachingschlüssel für den Anfrageautorisierer. Wenn das Caching aktiviert ist, ruft API Gateway die Lambda-Funktion des Genehmigers erst auf, nachdem erfolgreich überprüft wurde, dass alle angegebenen Identitätsquellen zur Laufzeit vorhanden sind. Wenn eine angegebene Identifikationsquelle fehlt, Null oder leer ist, gibt API Gateway eine
401 Unauthorized
-Antwort zurück, ohne die Lambda-Genehmigerfunktion aufzurufen.Wenn mehrere Identitätsquellen definiert sind, werden sie alle verwendet, um den Cache-Schlüssel des Genehmigers abzuleiten. Das Ändern von Teilen des Cache-Schlüssels bewirkt, dass der Genehmiger das im Cache befindliche Richtliniendokument verwirft und ein neues erstellt.
-
Wählen Sie für Authorization Caching die Option Enabled oder heben Sie die Auswahl auf, abhängig davon, ob Sie die vom Genehmiger generierte Genehmigungsrichtlinie in den Cache stellen wollen oder nicht. Wenn ein Caching der Richtlinie aktiviert ist, können Sie den Standardwert (300) für den TTL-Wert ändern. Durch die Einstellung TTL=0 wird das Richtlinien-Caching deaktiviert.
Wenn das Caching deaktiviert ist, ist es nicht erforderlich, eine Identitätsquelle anzugeben.
-
Anmerkung Zum Aktivieren der Zwischenspeicherung muss der Genehmiger eine Richtlinie zurückgeben, die für alle Methoden einer API anwendbar ist. Sie können methodenspezifische Richtlinien erzwingen, indem Sie den TTL-Wert auf null setzen, um so die Richtlinienzwischenspeicherung für die API zu deaktivieren.
-
-
Wählen Sie Create (Erstellen), um den neuen Lambda-Genehmiger für die gewählte API zu erstellen.
-
Nachdem der Genehmiger für die API erstellt wurde, können Sie optional testen, den Genehmiger aufzurufen, bevor er für eine Methode konfiguriert ist.
Geben Sie für den
TOKEN
Genehmiger ein gültiges Token in das Texteingabefeld Identity token ein und wählen Sie dann Test. Das Token wird der Lambda-Funktion als der Header übergeben, den Sie in der Einstellung Identity token source des Genehmigers angegeben haben.Für den
REQUEST
Genehmiger geben Sie die gültigen Anforderungsparameter ein, die den angegebenen Identitätsquellen entsprechen, und klicken dann auf Test.Zusätzlich zur Verwendung der API-Gateway-Konsole können Sie die AWS CLI oder ein AWS-SDK für API Gateway verwenden, um den Aufruf eines Genehmigers zu testen. Informationen zur Vorgehensweise mithilfe der AWS CLI finden Sie unter test-invoke-authorizer.
Anmerkung Der Testaufruf für Methodenausführungen und der Testaufruf für Genehmiger sind voneinander unabhängige Prozesse.
Informationen zum Testen des Aufrufs einer Methode über die API Gateway-Konsole finden Sie unter Testen einer REST-API-Methode mithilfe der Konsole. Informationen zum Testen eines Methodenaufrufs mithife der AWS CLI finden Sie unter test-invoke-method.
Um den Aufruf einer Methode und eines konfigurierten Genehmigers zu testen, stellen Sie die API bereit und verwenden dann cURL oder Postman, um die erforderlichen Token oder Anforderungsparameter bereitzustellen.
Das nächste Verfahren zeigt, wie eine API-Methode für die Verwendung des Lambda-Genehmigers konfiguriert wird.
So konfigurieren Sie eine API-Methode für die Verwendung eines Lambda-Genehmigers:
-
Wechseln Sie zurück zur API. Erstellen Sie eine neue Methode oder wählen Sie eine vorhandene aus. Falls erforderlich, erstellen Sie eine neue Ressource.
-
Wählen Sie in Method Execution den Link Method Request.
-
Erweitern Sie unter Settings (Einstellungen) die Dropdown-Liste Authorization (Autorisierung), um den gerade erstellten Lambda-Genehmiger auszuwählen (beispielsweise myTestApiAuthorizer) und aktivieren Sie dann das Kontrollkästchen, um Ihre Auswahl zu speichern.
-
Sie können auf der Seite Method Request (Methodenanforderung) optional außerdem Add header (Header hinzufügen) auswählen, wenn Sie auch das benutzerdefinierte Autorisierungs-Token an das Backend übergeben möchten. Geben Sie unter Name einen Header-Namen ein, der mit dem Namen der Token Source (Token-Quelle) übereinstimmt, den Sie beim Erstellen des Lambda-Genehmigers für die API angegeben haben. Anschließend klicken Sie auf das Häkchen-Symbol, um die Einstellungen zu speichern. Dieser Schritt gilt nicht für
REQUEST
Genehmiger. -
Wählen Sie Deploy API aus, um die API für eine Stufe bereitzustellen. Notieren Sie den Wert Invoke URL. Sie benötigen ihn, wenn Sie die API aufrufen. Für einen
REQUEST
Genehmiger mit Stufenvariablen müssen Sie auch die erforderlichen Stufenvariablen definieren und ihre Werte im Stufen-Editor angeben.