Eingabe an einen Amazon API Gateway-Lambda-Genehmiger
Für einen Lambda-Genehmiger (ehemals als benutzerdefinierter Genehmiger bezeichnet) des Typs TOKEN
müssen Sie einen benutzerdefinierten Header als Token Source (Token-Quelle) angeben, wenn Sie den Genehmiger für Ihre API konfigurieren. Der API-Client muss das erforderliche Autorisierungs-Token in diesem Header in der eingehenden Anforderung übergeben. Beim Empfang der eingehenden Methodenanfrage extrahiert API Gateway das Token aus dem benutzerdefinierten Header. Anschließend gibt es das Token als authorizationToken
-Eigenschaft des event
-Objekts der Lambda-Funktion zurück, zusätzlich zum Methode-ARN als methodArn
-Eigenschaft:
{ "type":"TOKEN", "authorizationToken":"
{caller-supplied-token}
", "methodArn":"arn:aws:execute-api:{regionId}
:{accountId}
:{apiId}
/{stage}
/{httpVerb}
/[{resource}
/[{child-resources}
]]" }
In diesem Beispiel gibt die type
-Eigenschaft den Genehmigertyp an, wobei es sich um einen TOKEN
Genehmiger handelt.
stammt aus dem Autorisierungs-Header einer Client-Anforderung. {caller-supplied-token}
methodArn
ist der ARN der eingehenden Methodenanfrage und wird von API Gateway entsprechend der Konfiguration des Lambda-Genehmigers aufgefüllt.
Für die Lambda-Beispielfunktion des TOKEN
-Genehmigers im vorherigen Abschnitt ist die Zeichenfolge für das {caller-supplied-token}
allow
, deny
, unauthorized
oder ein beliebiger anderer Zeichenfolgenwert. Ein leerer Zeichenfolgenwert entspricht unauthorized
. Das folgende Beispiel zeigt eine solche Eingabe, mit der eine Allow
-Richtlinie für die GET
-Methode einer API (ymy8tbxw7b
) des AWS-Kontos (123456789012
) in allen Stufen (*
) abgerufen wird.
{ "type":"TOKEN", "authorizationToken":"allow", "methodArn":"arn:aws:execute-api:us-west-2:123456789012:ymy8tbxw7b/*/GET/" }
Für einen Lambda-Genehmiger vom Typ REQUEST
übergibt API Gateway die Anfrageparameter als Teil des event
-Objekts an die Lambda-Genehmigerfunktion. Die Anforderungsparameter umfassen Header, Pfad, Parameter für Abfragezeichenfolgen, Stufenvariablen und einige der Anforderungskontextvariablen. Der API-Aufrufer können die Pfadparameter, Header und Abfragezeichenfolgenparameter festlegen. Der API-Entwickler muss die Stage-Variablen während der API-Bereitstellung festlegen, und API Gateway stellt den Anfragekontext zur Laufzeit zur Verfügung.
Pfadparameter können als Anfrageparameter an die Lambda-Genehmigerfunktion übergeben werden, aber sie können nicht als Identitätsquellen verwendet werden.
Das folgende Beispiel zeigt eine Eingabe für einen REQUEST
Genehmiger für eine API-Methode (GET
/request
) mit einer Proxy-Integration:
{ "type": "REQUEST", "methodArn": "arn:aws:execute-api:us-east-1:123456789012:abcdef123/test/GET/request", "resource": "/request", "path": "/request", "httpMethod": "GET", "headers": { "X-AMZ-Date": "20170718T062915Z", "Accept": "*/*", "HeaderAuth1": "headerValue1", "CloudFront-Viewer-Country": "US", "CloudFront-Forwarded-Proto": "https", "CloudFront-Is-Tablet-Viewer": "false", "CloudFront-Is-Mobile-Viewer": "false", "User-Agent": "..." }, "queryStringParameters": { "QueryString1": "queryValue1" }, "pathParameters": {}, "stageVariables": { "StageVar1": "stageValue1" }, "requestContext": { "path": "/request", "accountId": "123456789012", "resourceId": "05c7jb", "stage": "test", "requestId": "...", "identity": { "apiKey": "...", "sourceIp": "...", "clientCert": { "clientCertPem": "CERT_CONTENT", "subjectDN": "www.example.com", "issuerDN": "Example issuer", "serialNumber": "a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1:a1", "validity": { "notBefore": "May 28 12:30:02 2019 GMT", "notAfter": "Aug 5 09:36:04 2021 GMT" } } }, "resourcePath": "/request", "httpMethod": "GET", "apiId": "abcdef123" } }
requestContext
ist eine Zuordnung von Schlüssel-Wert-Paaren und entspricht der Variablen $ Kontext. Das Ergebnis hängt von der API ab. API Gateway kann der Zuordnung neue Schlüssel hinzufügen. Weitere Informationen über die Eingabe von Lambda-Funktionen bei der Lambda-Proxy-Integration finden Sie unter Eingabeformat einer Lambda-Funktion für die Proxy-Integration.