Nachdem Sie eine Lambda-Funktion erstellt haben, konfigurieren Sie die Lambda-Funktion als Genehmiger für Ihre API. Anschließend konfigurieren Sie Ihre Methode, sodass sie Ihren Lambda-Genehmiger aufruft, um festzustellen, ob ein Aufrufer Ihre Methode aufrufen kann. Sie können eine Lambda-Funktion in demselben oder in einem anderen Konto als dem Konto erstellen, in dem Sie Ihre API erstellt haben.
Sie können Ihren Lambda-Genehmiger mit in der API-Gateway-Konsole integrierten Tools oder mithilfe von Postman testen. Anleitungen zur Verwendung von Postman zum Testen Ihrer Lambda-Genehmigerfunktion finden Sie unter Aufruf einer API mit einem API Gateway-Lambda-Genehmiger.
Im folgenden Verfahren sehen Sie, wie Sie einen Lambda-Genehmiger in der API-Gateway-REST-API-Konsole erstellen. Weitere Informationen zu den verschiedenen Lambda-Genehmigertypen finden Sie unter Auswahl eines Lambda-Genehmigertyps.
- REQUEST authorizer
-
So konfigurieren Sie einen REQUEST
-Lambda-Genehmiger
-
Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.
-
Wählen Sie eine API und dann Genehmiger aus.
-
Wählen Sie Autorisierer erstellen.
-
Geben Sie unter Name des Genehmigers einen Namen für den Genehmiger ein.
-
Wählen Sie als Genehmiger-Typ Lambda aus.
-
Wählen Sie für Lambda-Funktion die AWS-Region aus, in der Sie Ihre Lambda-Genehmigerfunktion erstellt haben, und geben Sie dann den Funktionsnamen ein.
-
Lassen Sie Lambda-Aufrufrolle leer, um der API-Gateway-REST-API-Konsole zu erlauben, eine ressourcenbasierte Richtlinie festzulegen. Die Richtlinie gewährt API Gateway Berechtigungen, die Lambda-Genehmigerfunktion aufzurufen. Alternativ können Sie den Namen einer IAM-Rolle eingeben, damit API Gateway die Lambda-Genehmigerfunktion aufrufen kann. Eine Beispielrolle finden Sie unter Übernehmbare IAM-Rolle erstellen.
-
Wählen Sie für Lambda-Ereignisnutzlast die Option Anfrage.
-
Wählen Sie für Identitätsquellen-Typ einen Parametertyp aus. Die unterstützten Parametertypen sind Header
, Query string
, Stage
variable
und Context
. Um weitere Identitätsquellen hinzuzufügen, wählen Sie Parameter hinzufügen.
-
Um die vom Genehmiger generierte Genehmigungsrichtlinie zwischenzuspeichern, lassen Sie Genehmigungs-Caching aktiviert. Wenn das Caching der Richtlinie aktiviert ist, können Sie den TTL-Wert ändern. Durch die Einstellung TTL = 0 wird das Richtlinien-Caching deaktiviert.
Wenn Sie Caching aktivieren, muss Ihr Genehmiger eine Richtlinie zurückgeben, die auf alle Methoden einer API anwendbar sind. Verwenden Sie die Kontextvariablen $context.path
und $context.httpMethod
, um eine methodenspezifische Richtlinie durchzusetzen.
-
Wählen Sie Autorisierer erstellen.
- TOKEN authorizer
So konfigurieren Sie einen TOKEN
-Lambda-Genehmiger
-
Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.
-
Wählen Sie eine API und dann Genehmiger aus.
-
Wählen Sie Autorisierer erstellen.
-
Geben Sie unter Name des Genehmigers einen Namen für den Genehmiger ein.
-
Wählen Sie als Genehmiger-Typ Lambda aus.
-
Wählen Sie für Lambda-Funktion die AWS-Region aus, in der Sie Ihre Lambda-Genehmigerfunktion erstellt haben, und geben Sie dann den Funktionsnamen ein.
-
Lassen Sie Lambda-Aufrufrolle leer, um der API-Gateway-REST-API-Konsole zu erlauben, eine ressourcenbasierte Richtlinie festzulegen. Die Richtlinie gewährt API Gateway Berechtigungen, die Lambda-Genehmigerfunktion aufzurufen. Alternativ können Sie den Namen einer IAM-Rolle eingeben, damit API Gateway die Lambda-Genehmigerfunktion aufrufen kann. Eine Beispielrolle finden Sie unter Übernehmbare IAM-Rolle erstellen.
-
Wählen Sie für Lambda-Ereignisnutzlast die Option Token aus.
-
Geben Sie unter Token-Quelle den Header-Namen ein, der das Genehmigungstoken enthält. Der Aufrufer muss einen Header mit diesem Namen enthalten, um das Genehmigungs-Token an den Lambda-Genehmiger zu senden.
-
(Optional) Geben Sie für Token-Validierung eine RegEx-Anweisung ein. 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.
-
Um die vom Genehmiger generierte Genehmigungsrichtlinie zwischenzuspeichern, lassen Sie Genehmigungs-Caching aktiviert. Wenn das Richtlinien-Caching aktiviert ist, wird der unter Token-Quelle angegebene Header-Name zum Cache-Schlüssel. Wenn das Caching der Richtlinie aktiviert ist, können Sie den TTL-Wert ändern. Durch die Einstellung TTL = 0 wird das Richtlinien-Caching deaktiviert.
Wenn Sie Caching aktivieren, muss Ihr Genehmiger eine Richtlinie zurückgeben, die auf alle Methoden einer API anwendbar sind. Sie können Autorisierer-Caching deaktivieren, wenn Sie eine methodenspezifische Richtlinie durchsetzen möchten.
-
Wählen Sie Autorisierer erstellen.
Nachdem Sie Ihren Lambda-Genehmiger erstellt haben, können Sie ihn testen. Im folgenden Verfahren sehen Sie, wie Sie Ihren Lambda-Genehmiger testen.
- REQUEST authorizer
-
So testen Sie einen REQUEST
-Lambda-Genehmiger
-
Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.
-
Wählen Sie den Namen Ihres Genehmigers aus.
-
Geben Sie unter Genehmiger testen einen Wert für Ihre Identitätsquelle ein.
Wenn Sie Beispiel für eine Lambda-Funktion für REQUEST-Genehmiger verwenden, gehen Sie wie folgt vor:
-
Wählen Sie Header, geben Sie headerValue1
ein und wählen Sie dann Parameter hinzufügen aus.
-
Wählen Sie unter Identitätsquellen-Typ die Option Abfragezeichenfolge, geben Sie queryValue1
ein und wählen Sie dann Parameter hinzufügen aus.
-
Wählen Sie unter Identitätsquellen-Typ die Option Stufenvariable aus und geben Sie stageValue1
ein.
Sie können die Kontextvariablen für den Testaufruf nicht ändern, aber Sie können die API-Gateway-Genehmiger-Testereignisvorlage für Ihre Lambda-Funktion bearbeiten. Anschließend können Sie Ihre Lambda-Genehmigerfunktion mit geänderten Kontextvariablen testen. Weitere Informationen finden Sie unter Lambda-Funktionen in der Konsole testen im AWS Lambda-Entwicklerhandbuch.
-
Wählen Sie Genehmiger testen aus.
- TOKEN authorizer
So testen Sie einen TOKEN
-Lambda-Genehmiger
-
Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.
-
Wählen Sie den Namen Ihres Genehmigers aus.
-
Geben Sie unter Genehmiger testen einen Wert für Ihr Token ein.
Wenn Sie Beispiel für eine Lambda-Funktion für TOKEN-Genehmiger verwenden, gehen Sie wie folgt vor:
Geben Sie unter authorizationToken allow
ein.
-
Wählen Sie Genehmiger testen aus.
Wenn Ihr Lambda-Genehmiger eine Anfrage in der Testumgebung erfolgreich abweist, wird eine 200 OK
-HTTP-Antwort zurückgegeben. Außerhalb der Testumgebung jedoch, gibt API Gateway eine 403 Forbidden
-HTTP-Antwort zurück und die Methodenanforderung schlägt fehl.
Der Befehl create-authorizer demonstriert den Vorgang der Erstellung eines Lambda-Genehmigers mithilfe der AWS CLI.
- REQUEST authorizer
-
Der folgende create-authorizer-Befehl erstellt einen REQUEST
-Genehmiger und verwendet den Authorizer
-Header sowie die accountId
-Kontextvariable als Identitätsquellen:
aws apigateway create-authorizer \
--rest-api-id 1234123412 \
--name 'First_Request_Custom_Authorizer' \
--type REQUEST \
--authorizer-uri 'arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:customAuthFunction/invocations' \
--identity-source 'method.request.header.Authorization,context.accountId' \
--authorizer-result-ttl-in-seconds 300
- TOKEN authorizer
-
Der folgende create-authorizer-Befehl erstellt einen TOKEN
-Genehmiger und verwendet den Authorization
-Header als Identitätsquelle:
aws apigateway create-authorizer \
--rest-api-id 1234123412 \
--name 'First_Token_Custom_Authorizer' \
--type TOKEN \
--authorizer-uri 'arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:123412341234:function:customAuthFunction/invocations' \
--identity-source 'method.request.header.Authorization' \
--authorizer-result-ttl-in-seconds 300
Nachdem Sie Ihren Lambda-Genehmiger erstellt haben, können Sie ihn testen. Der folgende test-invoke-authorizer-Befehl testet einen Lambda-Genehmiger:
aws apigateway test-invoke-authorizer --rest-api-id 1234123412 \
--authorizer-id efg1234 \
--headers Authorization='Value'
Nachdem Sie Ihren Lambda-Genehmiger konfiguriert haben, müssen Sie ihn einer Methode für Ihre API hinzufügen. Wenn Ihr Genehmiger Autorisierungs-Caching verwendet, stellen Sie sicher, dass Sie die Richtlinie aktualisieren, um den Zugriff auf die zusätzliche Methode zu kontrollieren.
So konfigurieren Sie eine API-Methode für die Verwendung eines Lambda-Genehmigers:
-
Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.
-
Wählen Sie eine API aus.
-
Klicken Sie auf Ressourcen und wählen Sie dann eine neue oder bereits vorhandene Methode aus.
-
Wählen Sie auf der Registerkarte Methodenanfrage unter Methodenanfrage-Einstellungen die Option Bearbeiten aus.
-
Wählen Sie für Genehmiger aus dem Drop-down-Menü den Lambda-Genehmiger aus, den Sie gerade erstellt haben.
-
(Optional) Wenn Sie das Genehmigungstoken an das Backend übergeben möchten, wählen Sie HTTP-Anforderungsheader aus. Wählen Sie Header hinzufügen und fügen Sie dann den Namen des Genehmigungsheaders hinzu. Geben Sie unter Name den Header-Namen ein, der mit dem Namen der Token-Quelle übereinstimmt, den Sie beim Erstellen des Lambda-Genehmigers für die API angegeben haben. Dieser Schritt gilt nicht für REQUEST
-Genehmiger.
-
Wählen Sie Speichern aus.
-
Wählen Sie Deploy API aus, um die API für eine Stufe bereitzustellen. Für einen REQUEST
-Genehmiger mit Stufenvariablen müssen Sie auch die erforderlichen Stufenvariablen definieren und ihre Werte auf der Seite Stufen angeben.
Nachdem Sie Ihren Lambda-Genehmiger konfiguriert haben, müssen Sie ihn einer Methode für Ihre API hinzufügen. Sie können eine neue Methode erstellen oder einen Patch-Vorgang verwenden, um einen Genehmiger an eine vorhandene Methode anzuhängen. Wenn Ihr Genehmiger Autorisierungs-Caching verwendet, stellen Sie sicher, dass Sie die Richtlinie aktualisieren, um den Zugriff auf die zusätzliche Methode zu kontrollieren.
Der put-method-Befehl erstellt eine neue Methode, die einen Lambda-Genehmiger verwendet:
aws apigateway put-method --rest-api-id 1234123412 \
--resource-id a1b2c3 \
--http-method PUT \
--authorization-type CUSTOM \
--authorizer-id efg1234
Der update-method-Befehl aktualisiert eine vorhandene Methode, um einen Lambda-Genehmiger zu verwenden:
aws apigateway update-method \
--rest-api-id 1234123412 \
--resource-id a1b2c3 \
--http-method PUT \
--patch-operations op="replace",path="/authorizationType",value="CUSTOM" op="replace",path="/authorizerId",value="efg1234"