Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Ausgabe von einem API Gateway Lambda Authorizer
Die Ausgabe einer Lambda-Genehmigerfunktion ist ein wörterbuchähnliches Objekt, das die Prinzipal-ID (principalId
) und ein Richtliniendokument (policyDocument
) mit einer Liste Richtlinienanweisungen umfassen muss. Die Ausgabe kann auch eine context
-Zuweisung mit Schlüssel-Wert-Paaren umfassen. Wenn der einen Nutzungsplan API verwendet (der apiKeySource
ist auf gesetztAUTHORIZER
), muss die Lambda-Autorisierungsfunktion einen der API Schlüssel des Nutzungsplans als usageIdentifierKey
Eigenschaftswert zurückgeben.
Hier ein Beispiel für diese Ausgabe.
{ "principalId": "
yyyyyyyy
", // The principal user identification associated with the token sent by the client. "policyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Allow|Deny", "Resource": "arn:aws:execute-api:{regionId}
:{accountId}
:{apiId}
/{stage}
/{httpVerb}
/[{resource}
/[{child-resources}
]]" } ] }, "context": { "stringKey": "value", "numberKey": "1", "booleanKey": "true" }, "usageIdentifierKey": "{api-key}
" }
Hier gibt eine Richtlinienanweisung an, ob der Gateway-Ausführungsdienst die angegebene Methode (Effect
) aufrufen darf (), oder ob der API Gateway-Ausführungsdienst die angegebene API Methode (Action
) aufruft (). Resource
Sie können einen Platzhalter (*
) verwenden, um einen Ressourcentyp (Methode) anzugeben. Hinweise zum Einrichten gültiger Richtlinien für das Aufrufen von finden Sie API unterReferenz der IAM Richtlinien für die Ausführung API in API Gateway.
Bei einer Methode ARN mit aktivierter Autorisierung beträgt die maximale Länge arn:aws:execute-api:
z. B. 1600 Byte. Die Pfadparameterwerte, deren Größe zur Laufzeit bestimmt wird, können dazu führen, dass die ARN Länge den Grenzwert überschreitet. In diesem Fall erhält der API Client eine {regionId}
:{accountId}
:{apiId}
/{stage}
/{httpVerb}
/[{resource}
/[{child-resources}
]]414 Request URI
too long
Antwort.
Darüber hinaus ist die RessourceARN, wie in der vom Autorisierer ausgegebenen Richtlinienerklärung angegeben, derzeit auf 512 Zeichen begrenzt. Aus diesem Grund dürfen Sie in einer Anfrage URI kein JWT Token URI mit einer signifikanten Länge verwenden. Sie können das JWT Token stattdessen sicher in einem Anforderungsheader übergeben.
Sie können auf den principalId
-Wert in einer Mapping-Vorlage unter Verwendung der $context.authorizer.principalId
-Variablen zugreifen. Dies ist nützlich, wenn Sie den Wert an das Backend übergeben möchten. Weitere Informationen finden Sie unter $contextVariablen für Datenmodelle, Autorisierer, Zuordnungsvorlagen und CloudWatch Zugriffsprotokollierung.
Sie können auf den stringKey
-, numberKey
- oder booleanKey
-Wert (z. B. "value"
, "1"
oder "true"
) der context
-Zuweisung in einer Mapping-Vorlage zugreifen, indem Sie $context.authorizer.stringKey
, $context.authorizer.numberKey
bzw. $context.authorizer.booleanKey
aufrufen. Die zurückgegebenen Werte werden alle in Text umgewandelt. Beachten Sie, dass Sie ein JSON Objekt oder Array nicht als gültigen Wert für einen beliebigen Schlüssel in der context
Map festlegen können.
Sie können das context
-Mapping verwenden, um im Cache abgelegte Anmeldeinformationen vom Genehmiger unter Verwendung einer Mapping-Vorlage für die Integrationsanfrage an das Backend zurückzugeben. Dies ermöglicht dem Backend, durch Nutzung der im Cache gespeicherten Anmeldeinformationen, um die Notwendigkeit für den Zugriff auf die geheimen Schlüssel zu reduzieren und die Autorisierungs-Token für jede Anforderung zu öffnen, eine verbesserte Benutzerumgebung bereitzustellen.
Für die Lambda-Proxyintegration übergibt API Gateway das context
Objekt als Teil der Eingabe direkt von einem Lambda-Authorizer an die Back-End-Lambda-Funktion. event
Sie können die context
-Schlüssel-/Wert-Paare in der Lambda-Funktion durch den Aufruf von $event.requestContext.authorizer.
abrufen. key
{api-key}
steht für einen API Schlüssel im Nutzungsplan der API Phase. Weitere Informationen finden Sie unter Nutzungspläne und API Schlüssel für REST APIs in API Gateway .
Im Folgenden wird die Beispielausgabe aus dem Beispiel-Lambda-Genehmiger gezeigt. Die Beispielausgabe enthält eine Richtlinienanweisung zum Blockieren (Deny
) von GET
Methodenaufrufen für die dev
Phase von an API (ymy8tbxw7b
) eines AWS Accounts (123456789012
).
{ "principalId": "user", "policyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Deny", "Resource": "arn:aws:execute-api:us-west-2:123456789012:ymy8tbxw7b/dev/GET/" } ] } }