Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Configuration d’intégrations personnalisées Lambda dans API Gateway

Mode de mise au point
Configuration d’intégrations personnalisées Lambda dans API Gateway - Amazon API Gateway

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.

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.

Pour vous montrer comment configurer l’intégration personnalisée Lambda, nous créons une API API Gateway pour exposer la méthode GET /greeting?greeter={name} pour appeler une fonction Lambda. Utilisez l’un des exemples de fonctions Lambda suivants pour votre API.

Utilisez l’un des exemples de fonctions Lambda suivants :

Node.js
export const handler = function(event, context, callback) { var res ={ "statusCode": 200, "headers": { "Content-Type": "*/*" } }; if (event.greeter==null) { callback(new Error('Missing the required greeter parameter.')); } else if (event.greeter === "") { res.body = "Hello, World"; callback(null, res); } else { res.body = "Hello, " + event.greeter +"!"; callback(null, res); } };
Python
import json def lambda_handler(event, context): print(event) res = { "statusCode": 200, "headers": { "Content-Type": "*/*" } } if event['greeter'] == "": res['body'] = "Hello, World" elif (event['greeter']): res['body'] = "Hello, " + event['greeter'] + "!" else: raise Exception('Missing the required greeter parameter.') return res
export const handler = function(event, context, callback) { var res ={ "statusCode": 200, "headers": { "Content-Type": "*/*" } }; if (event.greeter==null) { callback(new Error('Missing the required greeter parameter.')); } else if (event.greeter === "") { res.body = "Hello, World"; callback(null, res); } else { res.body = "Hello, " + event.greeter +"!"; callback(null, res); } };

La fonction répond avec un message "Hello, {name}!" si la valeur du paramètre greeter est une chaîne non vide. Elle renvoie un message "Hello, World!" si la valeur greeter est une chaîne vide. La fonction renvoie un message d’erreur "Missing the required greeter parameter." si le paramètre d’hôte n’est pas défini dans la demande entrante. Nous nommons la fonction HelloWorld.

Vous pouvez la créer dans la console Lambda ou à l’aide de la AWS CLI. Dans cette section, nous faisons référence à cette fonction avec l’ARN suivant :

arn:aws:lambda:us-east-1:123456789012:function:HelloWorld

Avec la fonction Lambda définie dans le backend, commencez à configurer l’API.

Pour configurer l'intégration personnalisée Lambda à l'aide du AWS CLI
  1. Utilisez la create-rest-apicommande suivante pour créer une API :

    aws apigateway create-rest-api --name 'HelloWorld (AWS CLI)'

    Le résultat se présente comme suit :

    { "name": "HelloWorld (AWS CLI)", "id": "te6si5ach7", "rootResourceId" : "krznpq9xpg", "createdDate": 1508461860 }

    Vous utilisez l'API id (te6si5ach7) et le rootResourceId (krznpq9xpg) dans cet exemple.

  2. Utilisez la commande create-resource suivante pour créer une ressource API Gateway de : /greeting

    aws apigateway create-resource \ --rest-api-id te6si5ach7 \ --parent-id krznpq9xpg \ --path-part greeting

    Le résultat se présente comme suit :

    { "path": "/greeting", "pathPart": "greeting", "id": "2jf6xt", "parentId": "krznpq9xpg" }

    Vous utilisez la id valeur (2jf6xt) de la greeting ressource pour créer une méthode sur la /greeting ressource à l'étape suivante.

  3. Utilisez la commande put-method suivante pour créer une demande de méthode API de : GET /greeting?greeter={name}

    aws apigateway put-method --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method GET \ --authorization-type "NONE" \ --request-parameters method.request.querystring.greeter=false

    Le résultat se présente comme suit :

    { "apiKeyRequired": false, "httpMethod": "GET", "authorizationType": "NONE", "requestParameters": { "method.request.querystring.greeter": false } }

    Cette méthode d’API permet au client de recevoir des salutations de la fonction Lambda au backend. Le paramètre greeter est facultatif, car le backend doit gérer soit un appelant anonyme, soit un appelant auto-identifié.

  4. Utilisez la put-method-responsecommande suivante pour configurer la 200 OK réponse à la demande de méthode de GET /greeting?greeter={name} :

    aws apigateway put-method-response \ --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method GET \ --status-code 200

  5. Utilisez la commande put-integration suivante pour configurer l'intégration de la GET /greeting?greeter={name} méthode avec une fonction Lambda, nommée. HelloWorld La fonction répond à la demande par un message "Hello, {name}!" si le paramètre greeter est précisé, ou "Hello, World!" si le paramètre de chaîne de demande n’est pas défini.

    aws apigateway put-integration \ --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method GET \ --type AWS \ --integration-http-method POST \ --uri arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:HelloWorld/invocations \ --request-templates '{"application/json":"{\"greeter\":\"$input.params('greeter')\"}"}' \ --credentials arn:aws:iam::123456789012:role/apigAwsProxyRole

    Le modèle de mappage fourni ici convertit le paramètre de chaîne de demande greeter en propriété greeter de la charge utile JSON. Ceci est nécessaire parce que l’entrée d’une fonction Lambda doit être exprimée dans le corps.

    Important

    Pour les intégrations Lambda, vous devez utiliser la méthode HTTP POST pour la demande d’intégration, conformément à la spécification de l’action de service Lambda pour les appels de fonction. Le paramètre uri est l’ARN de l’action d’appel de fonction.

    Le résultat se présente comme suit :

    { "passthroughBehavior": "WHEN_NO_MATCH", "cacheKeyParameters": [], "uri": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:HelloWorld/invocations", "httpMethod": "POST", "requestTemplates": { "application/json": "{\"greeter\":\"$input.params('greeter')\"}" }, "cacheNamespace": "krznpq9xpg", "credentials": "arn:aws:iam::123456789012:role/apigAwsProxyRole", "type": "AWS" }

    Le rôle IAM apigAwsProxyRole doit avoir des politiques qui permettent au service apigateway d’appeler des fonctions Lambda. Plutôt que de préciser un rôle IAM pour credentials, vous pouvez appeler la commande add-permission pour ajouter des autorisations basées sur les ressources. C’est ainsi que la console API Gateway ajoute ces autorisations.

  6. Utilisez la put-integration-responsecommande suivante pour configurer la réponse d'intégration afin de transmettre la sortie de la fonction Lambda au client en tant que réponse de 200 OK méthode :

    aws apigateway put-integration-response \ --rest-api-id te6si5ach7 \ --resource-id 2jf6xt \ --http-method GET \ --status-code 200 \ --selection-pattern ""

    En définissant le modèle de sélection sur une chaîne vide, la réponse 200 OK est la valeur par défaut.

    Le résultat se présente comme suit :

    { "selectionPattern": "", "statusCode": "200" }
  7. Utilisez la commande create-deployment suivante pour déployer l'API sur une test étape :

    aws apigateway create-deployment \ --rest-api-id te6si5ach7 \ --stage-name test
  8. Testez l’API à l’aide de la commande cURL suivante dans un terminal :

    curl -X GET 'https://te6si5ach7.execute-api.us-west-2.amazonaws.com/test/greeting?greeter=me' \ -H 'authorization: AWS4-HMAC-SHA256 Credential={access_key}/20171020/us-west-2/execute-api/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=f327...5751'
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.