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.
Exécutez API Gateway localement avec AWS SAM
L'exécution locale API d'Amazon Gateway peut présenter de nombreux avantages. Par exemple, l'exécution locale de API Gateway vous permet de tester les API points de terminaison localement avant de les déployer AWS dans le cloud. Si vous effectuez d'abord des tests locaux, vous pouvez souvent réduire les tests et le développement dans le cloud, ce qui peut contribuer à réduire les coûts. De plus, l'exécution locale facilite le débogage.
Pour démarrer une instance locale de API Gateway que vous pouvez utiliser pour tester la fonctionnalité de HTTP demande/réponse, utilisez le sam local start-api
AWS SAM CLI commande. Cette fonctionnalité dispose d'un rechargement à chaud afin que vous puissiez rapidement développer et itérer vos fonctions.
Note
Le rechargement à chaud consiste à actualiser uniquement les fichiers qui ont été modifiés, l'état de l'application restant inchangé. En revanche, le rechargement en direct consiste à actualiser l'application entière et à perdre l'état de l'application.
Pour des instructions relatives à l'utilisation de la commande sam local start-api
, veuillez consulter la section Présentation des tests avec sam local start-api.
Par défaut, AWS SAM utilise des intégrations de AWS Lambda proxy et prend en charge les deux HttpApi
types de Api
ressources. Pour plus d'informations sur les intégrations de proxy pour les types de HttpApi
ressources, consultez la section Utilisation des intégrations de AWS Lambda proxy HTTP APIs dans le Guide du développeur de API Gateway. Pour plus d'informations sur les intégrations de proxy avec les types de Api
ressources, consultez la section Comprendre l'intégration du proxy Lambda de API Gateway dans APIle guide du développeur de Gateway.
Exemple :
$
sam local start-api
AWS SAM trouve automatiquement dans votre AWS SAM modèle toutes les fonctions dont les sources d'Api
événements HttpApi
ou les sources d'événements sont définies. Ensuite, il monte la fonction sur les HTTP chemins définis.
Dans l'exemple Api
ci-dessous, la fonction Ratings
monte ratings.py:handler()
dans /ratings
pour les demandes GET
.
Ratings: Type: AWS::Serverless::Function Properties: Handler: ratings.handler Runtime: python3.9 Events: Api: Type: Api Properties: Path: /ratings Method: get
Voici un exemple de réponse Api
:
// Example of a Proxy Integration response exports.handler = (event, context, callback) => { callback(null, { statusCode: 200, headers: { "x-custom-header" : "my custom header value" }, body: "hello world" }); }
Si vous modifiez le code de votre fonction, exécutez la commande sam build
pour que sam local start-api
détecte vos modifications.
Fichier de variable d'environnement
Pour déclarer localement des variables d'environnement qui remplacent les valeurs définies dans vos modèles, procédez comme suit :
-
Créez un JSON fichier contenant les variables d'environnement à remplacer.
-
Utilisez l'argument
--env-vars
pour remplacer les valeurs définies dans vos modèles.
Déclaration des variables d'environnement
Pour déclarer des variables d'environnement qui s'appliquent globalement à toutes les ressources, spécifiez un objet Parameters
comme suit :
{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", "STAGE": "dev" } }
Pour déclarer des variables d'environnement différentes pour chaque ressource, spécifiez des objets pour chaque ressource comme suit :
{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }
Lorsque vous spécifiez des objets pour chaque ressource, vous pouvez utiliser les identifiants suivants, énumérés dans l'ordre de la plus haute à la plus basse priorité :
logical_id
function_id
function_name
Identifiant de chemin complet
Vous pouvez utiliser les deux méthodes précédentes de déclaration des variables d'environnement dans un seul fichier. Ce faisant, les variables d'environnement que vous avez fournies pour des ressources spécifiques ont la priorité sur les variables d'environnement globales.
Enregistrez vos variables d'environnement dans un JSON fichier, tel queenv.json
.
Remplacement des valeurs des variables d'environnement
Pour remplacer les variables d'environnement par celles définies dans votre JSON fichier, utilisez l'--env-vars
argument associé aux start-api commandes invoke ou. Par exemple :
$
sam local start-api --env-vars env.json
Couches
Si votre application comporte des couches, pour plus d'informations sur la façon de déboguer les problèmes liés aux couches sur votre hôte local, consultez Améliorez l'efficacité en utilisant les couches Lambda avec AWS SAM.