Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Sortie d'un autorisateur API Gateway Lambda
La sortie de la fonction du mécanisme d'autorisation Lambda est un objet de type dictionnaire, qui doit inclure l'identifiant principal (principalId
) et un document de stratégie (policyDocument
) contenant la liste des déclarations de stratégie. La sortie peut également inclure un mappage context
contenant des paires clé-valeur. S'il API utilise un plan d'utilisation (défini surAUTHORIZER
), la fonction d'autorisation Lambda doit renvoyer l'une des API clés du plan d'utilisation comme valeur de propriété. apiKeySource
usageIdentifierKey
Voici un exemple de sortie de ce type.
{ "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}
" }
Ici, une déclaration de politique indique s'il faut autoriser ou refuser (Effect
) au service d'exécution de API Gateway d'invoquer (Action
) la API méthode spécifiée (Resource
). Vous pouvez utiliser un caractère générique (*
) pour spécifier un type de ressource (méthode). Pour plus d'informations sur la définition de politiques valides pour appeler unAPI, consultezDéclaration faisant référence aux IAM politiques à exécuter API dans API Gateway.
Pour une méthode activée par l'autorisationARN, par exemplearn:aws:execute-api:
, la longueur maximale est de 1600 octets. Les valeurs des paramètres de chemin, dont la taille est déterminée au moment de l'exécution, peuvent entraîner un ARN dépassement de la limite de longueur. Dans ce cas, le API client recevra une {regionId}
:{accountId}
:{apiId}
/{stage}
/{httpVerb}
/[{resource}
/[{child-resources}
]]414 Request URI
too long
réponse.
En outre, la ressourceARN, comme indiqué dans la déclaration de politique publiée par l'autorisateur, est actuellement limitée à 512 caractères. Pour cette raison, vous ne devez pas utiliser URI un JWT jeton d'une longueur significative dans une demandeURI. Vous pouvez plutôt transmettre le JWT jeton en toute sécurité dans un en-tête de demande.
Vous pouvez accéder à la valeur principalId
d'un modèle de mappage à l'aide de la variable $context.authorizer.principalId
. C'est utile si vous souhaitez transmettre la valeur au backend. Pour de plus amples informations, veuillez consulter $contextVariables pour les modèles de données, les autorisateurs, les modèles de mappage et la journalisation des CloudWatch accès.
Vous pouvez accéder à la valeur stringKey
, numberKey
ou booleanKey
(par exemple, "value"
, "1"
ou "true"
) du mappage context
d'un modèle de mappage en appelant $context.authorizer.stringKey
, $context.authorizer.numberKey
ou $context.authorizer.booleanKey
, respectivement. Les valeurs renvoyées sont toutes obtenues à l'aide de stringify. Notez que vous ne pouvez pas définir un JSON objet ou un tableau comme valeur valide d'une clé de la context
carte.
Vous pouvez utiliser le mappage context
pour renvoyer les informations d'identification mises en cache depuis le mécanisme d'autorisation vers le backend, via un modèle de mappage de demande d'intégration. En exploitant les informations d'identification mises en cache, le backend offre une meilleure expérience utilisateur et évite ainsi d'accéder aux clés secrètes et d'ouvrir des jetons d'autorisation pour chaque demande.
Pour l'intégration du proxy Lambda, API Gateway transmet l'context
objet d'un autorisateur Lambda directement à la fonction Lambda principale dans le cadre de l'entrée. event
Vous pouvez récupérer les paires clé-valeur context
de la fonction Lambda en appelant $event.requestContext.authorizer.
. key
{api-key}
représente une API clé du plan d'utilisation de la API scène. Pour de plus amples informations, veuillez consulter Plans d'utilisation et API clés pour REST APIs in API Gateway .
L'exemple de mécanisme d'autorisation Lambda renvoie l'exemple de sortie suivant. L'exemple de sortie contient une déclaration de politique visant à bloquer (Deny
) les appels à la GET
méthode pour l'dev
étape d'un API (ymy8tbxw7b
) d'un AWS compte (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/" } ] } }