Présentation des tests avec sam local start-lambda - AWS Serverless Application Model

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.

Présentation des tests avec sam local start-lambda

Utilisez la AWS Serverless Application Model sam local start-lambda sous-commande Command Line Interface (AWS SAMCLI) pour appeler votre AWS Lambda fonction via le AWS Command Line Interface (AWS CLI) ou les SDK. Cette commande démarre un point de terminaison local sur qui émule AWS Lambda.

Pour utiliser sam local start-lambda, installez la CLI AWS SAM en procédant comme suit :

Avant d'utiliser sam local start-lambda, nous vous recommandons d'avoir des connaissances de base sur les points suivants :

Utilisation de sam local start-lambda

Lorsque vous utilisez sam local start-lambda, la CLI AWS SAM suppose que le répertoire de travail actuel est le répertoire racine du projet. La CLI AWS SAM recherche d'abord un fichier template.[yaml|yml] dans un sous-dossier .aws-sam. Si elle ne le trouve pas, la CLI AWS SAM recherche un fichier template.[yaml|yml] dans votre répertoire de travail actuel.

Pour utiliser sam local start-lambda
  1. À partir du répertoire racine de votre projet, effectuez les actions suivantes :

    $ sam local start-lambda <options>
  2. La CLI AWS SAM crée vos fonctions Lambda dans un conteneur Docker local. Elle transmet ensuite l'adresse locale au point de terminaison de votre serveur HTTP. Voici un exemple :

    $ sam local start-lambda Initializing the lambda functions containers. Local image is up-to-date Using local image: public.ecr.aws/lambda/python:3.9-rapid-x86_64. Mounting /Users/.../sam-app/hello_world as /var/task:ro,delegated, inside runtime container Containers Initialization is done. Starting the Local Lambda Service. You can now invoke your Lambda Functions defined in your template through the endpoint. 2023-04-13 07:25:43 WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:3001 2023-04-13 07:25:43 Press CTRL+C to quit
  3. Utilisez les SDK AWS CLI ou pour appeler votre fonction Lambda localement.

    Voici un exemple avec utilisation de la AWS CLI :

    $ aws lambda invoke --function-name "HelloWorldFunction" --endpoint-url "http://127.0.0.1:3001" --no-verify-ssl out.txt StatusCode: 200 (END)

    Voici un exemple d'utilisation du AWS SDK for Python :

    import boto3 from botocore.config import Config from botocore import UNSIGNED lambda_client = boto3.client('lambda', endpoint_url="http://127.0.0.1:3001", use_ssl=False, verify=False, config=Config(signature_version=UNSIGNED, read_timeout=1, retries={'max_attempts': 0} ) ) lambda_client.invoke(FunctionName="HelloWorldFunction")

Options

Spécifier un modèle

Pour spécifier un modèle à référencer par la CLI AWS SAM, utilisez l'option --template. Ils AWS SAMCLI chargeront uniquement ce AWS SAM modèle et les ressources vers lesquelles il pointe. Voici un exemple :

$ sam local start-lambda --template myTemplate.yaml

Bonnes pratiques

Si votre application possède un répertoire .aws-sam qui exécute sam build, assurez-vous d'exécuter sam build chaque fois que vous mettez à jour le code de votre fonction. Exécutez ensuite sam local start-lambda pour tester localement votre code de fonction mis à jour.

Les tests locaux constituent une excellente solution pour un développement et des tests rapides avant le déploiement dans le cloud. Toutefois, les tests locaux ne valident pas tout, notamment les autorisations entre vos ressources dans le cloud. Dans la mesure du possible, testez vos applications dans le cloud. Nous vous recommandons d'utiliser sam sync pour accélérer vos flux de travail de test dans le cloud.

En savoir plus

Pour obtenir la liste de toutes les options sam local start-lambda, consultez sam local start-lambda.