Eingabe an einen Amazon API Gateway-Lambda-Genehmiger - Amazon API Gateway

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. {caller-supplied-token} stammt aus dem Autorisierungs-Header einer Client-Anforderung. 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.

Anmerkung

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.