Données d'entrée d'un mécanisme d'autorisation Lambda Amazon API Gateway - Amazon API Gateway

Données d'entrée d'un mécanisme d'autorisation Lambda Amazon API Gateway

Pour un mécanisme d'autorisation Lambda (anciennement appelé mécanisme d'autorisation personnalisée) de type TOKEN, vous devez spécifier un en-tête personnalisé comme Token Source (Source de jeton) lorsque vous configurez le mécanisme d'autorisation de votre API. Le client de l'API doit transmettre le jeton d'autorisation requis dans l'en-tête de la demande entrante. À réception de la demande de méthode entrante, API Gateway extrait le jeton à partir de l'en-tête personnalisé. Il transmet ensuite le jeton en tant que propriété authorizationToken de l'objet event de la fonction Lambda, en plus de l'ARN de méthode via la propriété methodArn :

{ "type":"TOKEN", "authorizationToken":"{caller-supplied-token}",     "methodArn":"arn:aws:execute-api:{regionId}:{accountId}:{apiId}/{stage}/{httpVerb}/[{resource}/[{child-resources}]]" }

Dans cet exemple, la propriété type spécifie le type de mécanisme d'autorisation, à savoir TOKEN. La valeur {caller-supplied-token} provient de l'en-tête d'autorisation d'une requête du client. La propriété methodArn est l'ARN de la demande de méthode entrante et elle est renseignée par API Gateway conformément à la configuration du mécanisme d'autorisation Lambda.

Pour l'exemple de fonction Lambda d'un mécanisme d'autorisation TOKEN présenté dans la section précédente, la chaîne {caller-supplied-token} correspond à allow, deny, unauthorized ou toute autre valeur de chaîne. Une valeur de chaîne vide est similaire à la valeur unauthorized. L'exemple suivant montre les données d'entrée permettant d'obtenir une stratégie Allow sur la méthode GET d'une API (ymy8tbxw7b) du compte AWS (123456789012) à n'importe quelle étape (*).

{ "type":"TOKEN", "authorizationToken":"allow", "methodArn":"arn:aws:execute-api:us-west-2:123456789012:ymy8tbxw7b/*/GET/" }

Pour un mécanisme d'autorisation Lambda de type REQUEST, API Gateway transmet les paramètres de demande requis à la fonction Lambda du mécanisme d'autorisation dans l'objet event. Les paramètres de demande concernés comprennent les en-têtes, les paramètres des chemins, les paramètres des chaînes d'interrogation, les variables d'étape et certaines variables de contexte de demande. L'appelant de l'API peut définir les paramètres des chemins, les en-têtes et les paramètres des chaînes d'interrogation. Le développeur de l'API doit définir les variables d'étape pendant le déploiement de l'API, et API Gateway fournit le contexte de la demande au moment de l'exécution.

Note

Les paramètres de chemin peuvent être transmis comme paramètres de la demande à la fonction du mécanisme d'autorisation Lambda, mais ils ne peuvent pas être utilisés comme sources d'identité.

L'exemple suivant montre les données d'entrée pour un mécanisme d'autorisation REQUEST et une méthode d'API (GET /request) avec une intégration proxy :

{ "type": "REQUEST", "methodArn": "arn:aws:execute-api:us-east-1:123456789012:s4x3opwd6i/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": "...", "X-Forwarded-Proto": "https", "CloudFront-Is-SmartTV-Viewer": "false", "Host": "....execute-api.us-east-1.amazonaws.com", "Accept-Encoding": "gzip, deflate", "X-Forwarded-Port": "443", "X-Amzn-Trace-Id": "...", "Via": "...cloudfront.net (CloudFront)", "X-Amz-Cf-Id": "...", "X-Forwarded-For": "..., ...", "Postman-Token": "...", "cache-control": "no-cache", "CloudFront-Is-Desktop-Viewer": "true", "Content-Type": "application/x-www-form-urlencoded" }, "queryStringParameters": { "QueryString1": "queryValue1" }, "pathParameters": {}, "stageVariables": { "StageVar1": "stageValue1" }, "requestContext": { "path": "/request", "accountId": "123456789012", "resourceId": "05c7jb", "stage": "test", "requestId": "...", "identity": { "apiKey": "...", "sourceIp": "..." }, "resourcePath": "/request", "httpMethod": "GET", "apiId": "s4x3opwd6i" } }

Le contexte requestContext est un mappage de paires clé-valeur et correspond à la variable $context. Son résultat est dépendant de l'API. API Gateway peut ajouter de nouvelles clés au mappage. Pour de plus amples informations sur l'entrée de la fonction Lambda dans l'intégration de proxy Lambda, veuillez consulter Format d'entrée d'une fonction Lambda pour l'intégration proxy.