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.
Vous pouvez créer une API web avec un point de terminaison HTTP pour votre fonction Lambda à l’aide d’Amazon API Gateway. API Gateway fournit des outils pour créer et documenter des sites Web APIs qui acheminent les requêtes HTTP vers les fonctions Lambda. Vous pouvez sécuriser l’accès à votre API avec des contrôles d’authentification et d’autorisation. APIs Vous pouvez gérer le trafic sur Internet ou n'être accessible qu'au sein de votre VPC.
Astuce
Lambda propose deux méthodes pour appeler votre fonction via un point de terminaison HTTP : API Gateway et fonction Lambda. URLs Si vous ne savez pas quelle est la meilleure méthode pour votre cas d'utilisation, consultezSélection d’une méthode pour invoquer votre fonction Lambda à l’aide d’une requête HTTP.
Les ressources de votre API définissent une ou plusieurs méthodes, telles que GET ou POST. Les méthodes ont une intégration qui achemine les requêtes vers une fonction Lambda ou un autre type d’intégration. Vous pouvez définir chaque ressource et méthode individuellement, ou utiliser des types de ressource et de méthode spéciaux pour correspondre à toutes les demandes adaptées à un modèle. Une ressource proxy attrape tous les chemins sous une ressource. La méthode ANY
attrape toutes les méthodes HTTP.
Sections
Choix d’un type d’API
API Gateway prend en charge trois types de fonctions APIs qui invoquent des fonctions Lambda :
-
API HTTP : API légère à faible latence RESTful .
-
API REST : API personnalisable et riche en fonctionnalités RESTful .
-
WebSocket API : API Web qui maintient des connexions persistantes avec les clients pour une communication en duplex intégral.
HTTP APIs et REST APIs traitent RESTful APIs les requêtes HTTP et renvoient des réponses. APIs Les protocoles HTTP sont plus récents et sont créés avec l'API API Gateway version 2. Les fonctionnalités suivantes sont nouvelles pour le protocole HTTP APIs :
Fonctionnalités de l’API HTTP
-
Déploiements automatiques – Lorsque vous modifiez des routages ou des intégrations, les modifications se déploient automatiquement sur des étapes pour lesquelles le déploiement automatique est activé.
-
Étape par défaut – Vous pouvez créer une étape par défaut (
$default
) pour servir les demandes au chemin d’accès racine de l’URL de votre API. Pour les étapes nommées, vous devez inclure le nom de l’étape au début du chemin d’accès. -
Configuration CORS – Vous pouvez configurer votre API pour ajouter des en-têtes CORS aux réponses sortantes, au lieu de les ajouter manuellement dans votre code de fonction.
APIs Les REST sont RESTful APIs les classiques pris en charge par API Gateway depuis son lancement. REST propose APIs actuellement davantage de fonctionnalités de personnalisation, d'intégration et de gestion.
Fonctionnalités de l’API REST
-
Types d'intégration : REST APIs prend en charge les intégrations Lambda personnalisées. Avec une intégration personnalisée, vous pouvez envoyer uniquement le corps de la requête à la fonction, ou appliquer un modèle de transformation au corps de requête avant de l’envoyer à la fonction.
-
Contrôle d'accès : REST APIs prend en charge davantage d'options d'authentification et d'autorisation.
-
Surveillance et suivi : REST APIs prend en charge le AWS X-Ray suivi et des options de journalisation supplémentaires.
Pour une comparaison détaillée, consultez Choisir entre HTTP APIs et REST APIs dans le guide du développeur d'API Gateway.
WebSocket APIs utilise également l'API API Gateway version 2 et prend en charge un ensemble de fonctionnalités similaires. Utilisez une WebSocket API pour les applications qui bénéficient d'une connexion permanente entre le client et l'API. WebSocket APIs fournissent une communication en duplex intégral, ce qui signifie que le client et l'API peuvent envoyer des messages en continu sans attendre de réponse.
Le protocole HTTP APIs prend en charge un format d'événement simplifié (version 2.0). Pour un exemple d'événement provenant d'une API HTTP, voir Créer des intégrations de AWS Lambda proxy pour HTTP APIs dans API Gateway.
Pour plus d'informations, consultez la section Création d'intégrations de AWS Lambda proxy pour HTTP APIs dans API Gateway.
Ajout d’un point de terminaison public à votre fonction Lambda
Ajouter un point de terminaison public à votre fonction Lambda
Ouvrez la page Functions
(Fonctions) de la console Lambda. -
Choisissez une fonction.
-
Sous Function overview (Vue d’ensemble de la fonction), choisissez Add trigger (Ajouter un déclencheur).
-
Sélectionnez API Gateway.
-
Choisissez Créer une API ou Utiliser une API existante.
-
Nouvelle API : pour Type d’API, choisissez API HTTP. Pour de plus amples informations, veuillez consulter Choix d’un type d’API.
-
API existante : Sélectionnez l’API dans la liste déroulante ou entrez l’ID de l’API (par exemple, r3pmxmplak).
-
-
Pour Sécurité, choisissez Ouvrir.
-
Choisissez Ajouter.
Intégration de proxy
API Gateway comprend APIs des étapes, des ressources, des méthodes et des intégrations. L’étape et la ressource déterminent le chemin du point de terminaison :
Format du chemin d’accès de l’API
-
/prod/
– Etapeprod
et ressource racine. -
/prod/user
– Etapeprod
et ressourceuser
. -
/dev/{proxy+}
– Routage quelconque à l’étapedev
. -
/
— (HTTP APIs) Le stage par défaut et la ressource racine.
Une intégration Lambda mappe une combinaison de chemin d’accès et de méthode HTTP à une fonction Lambda. Vous pouvez configurer API Gateway pour transmettre le corps de la demande HTTP tel quel (intégration personnalisée) ou pour encapsuler le corps de requête dans un document qui inclut toutes les informations de la demande, y compris les en-têtes, la ressource, le chemin et la méthode.
Pour plus d’informations, consultez Lambda proxy integrations in API Gateway.
Format des événements
Amazon API Gateway appelle votre fonction de manière synchrone avec un événement contenant une représentation JSON de la requête HTTP. Pour une intégration personnalisée, l’événement est le corps de la requête. Pour une intégration par proxy, l’événement a une structure définie. Pour obtenir un exemple d’événement de proxy à partir d’une API REST API Gateway, consultez la rubrique Input format of a Lambda function for proxy integration du guide du développeur API Gateway.
Format de la réponse
API Gateway attend une réponse de votre fonction et relaie le résultat à l’appelant. Pour une intégration personnalisée, vous définissez une réponse d’intégration et une réponse de méthode pour convertir la sortie de la fonction en réponse HTTP. Pour une intégration par proxy, la fonction doit répondre avec une représentation de la réponse dans un format spécifique.
L’exemple suivant montre un objet de réponse d’une fonction Node.js. L’objet de réponse représente une réponse HTTP réussie qui contient un document JSON.
Exemple index.js : objet de réponse d’intégration de proxy (Node.js)
var response = {
"statusCode": 200,
"headers": {
"Content-Type": "application/json"
},
"isBase64Encoded": false,
"multiValueHeaders": {
"X-Custom-Header": ["My value", "My other value"],
},
"body": "{\n \"TotalCodeSize\": 104330022,\n \"FunctionCount\": 26\n}"
}
L’environnement d’exécution Lambda sérialise l’objet réponse dans JSON et l’envoie à l’API. L’API analyse la réponse et l’utilise pour créer une réponse HTTP, qu’elle envoie ensuite au client qui a fait la demande d’origine.
Exemple Réponse HTTP
< HTTP/1.1 200 OK < Content-Type: application/json < Content-Length: 55 < Connection: keep-alive < x-amzn-RequestId: 32998fea-xmpl-4268-8c72-16138d629356 < X-Custom-Header: My value < X-Custom-Header: My other value < X-Amzn-Trace-Id: Root=1-5e6aa925-ccecxmplbae116148e52f036 < { "TotalCodeSize": 104330022, "FunctionCount": 26 }
Autorisations
Amazon API Gateway obtient l’autorisation d’appeler votre fonction à partir de la politique basée sur une ressource de la fonction. Vous pouvez accorder l’autorisation d’appel à toute une API ou accorder un accès limité à une étape, à une ressource ou à une méthode.
Lorsque vous ajoutez une API à votre fonction à l’aide de la console Lambda, de la console API Gateway ou d’un modèle AWS SAM , la politique basée sur une ressource de la fonction est mise à jour automatiquement. Voici un exemple de politique de fonction.
Exemple stratégie de fonction
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "nodejs-apig-functiongetEndpointPermissionProd-BWDBXMPLXE2F",
"Effect": "Allow",
"Principal": {
"Service": "apigateway.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-east-2:111122223333:function:nodejs-apig-function-1G3MXMPLXVXYI",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "111122223333"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:execute-api:us-east-2:111122223333:ktyvxmpls1/*/GET/"
}
}
}
]
}
Vous pouvez gérer manuellement les autorisations de politique de fonction à l’aide des opérations d’API suivantes :
Pour accorder l’autorisation d’invocation à une API existante, utilisez la commande add-permission
. Exemple :
aws lambda add-permission \ --function-name my-function \ --statement-id apigateway-get --action lambda:InvokeFunction \ --principal apigateway.amazonaws.com \ --source-arn "arn:aws:execute-api:us-east-2:123456789012:mnh1xmpli7/default/GET/"
Vous devriez voir la sortie suivante :
{
"Statement": "{\"Sid\":\"apigateway-test-2\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"apigateway.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-east-2:123456789012:function:my-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:execute-api:us-east-2:123456789012:mnh1xmpli7/default/GET\"}}}"
}
Note
Si votre fonction et votre API sont différentes Régions AWS, l'identifiant de région dans l'ARN source doit correspondre à la région de la fonction, et non à la région de l'API. Quand API Gateway appelle une fonction, elle utilise un ARN de ressource basé sur l’ARN de l’API, mais modifié pour correspondre à la Région de la fonction.
L’ARN source dans cet exemple accorde l’autorisation à une intégration sur la méthode GET de la ressource racine au cours de l’étape par défaut d’une API, avec l’ID mnh1xmpli7
. Vous pouvez utiliser un astérisque dans l’ARN source pour accorder des autorisations à plusieurs étapes, méthodes ou ressources.
Modèles de ressources
-
mnh1xmpli7/*/GET/*
– Méthode GET sur toutes les ressources à toutes les étapes. -
mnh1xmpli7/prod/ANY/user
– Méthode ANY sur la ressourceuser
à l’étapeprod
. -
mnh1xmpli7/*/*/*
– Toute méthode sur toutes les ressources à toutes les étapes.
Pour de plus amples informations sur l’affichage de la politique et la suppression des instructions, veuillez consulter Afficher les politiques IAM basées sur les ressources dans Lambda.
Exemple d’application
L'exemple d'application API Gateway with Node.js