Introdução aos testes com sam local start-lambda
Use o subcomando sam local start-lambda da CLI do AWS SAM para invocar a função do Lambda por meio da AWS CLI e SDKs. Esse comando inicia um endpoint local que emula o Lambda.
-
Para obter uma introdução à CLI do AWS SAM, consulte O que é o AWS SAM do CLI?
-
Para obter uma lista de opções de comando
sam local start-lambda, consulte sam local start-lambda.
Para usar o sam local start-lambda, instale o AWS SAM CLI fazendo o seguinte:
Antes de usar sam local start-lambda, recomendamos uma compreensão básica do seguinte:
Usando o Local do SAM start-lambda
Quando você executa o sam local start-lambda, o AWS SAM CLI pressupõe que seu diretório de trabalho atual seja o diretório raiz do seu projeto. O AWS SAM CLI, primeiro procurará um arquivo template.[yaml|yml] dentro de uma subpasta .aws-sam. Se não for encontrado, o AWS SAM CLI procurará um template.[yaml|yml] arquivo em seu diretório de trabalho atual.
Para usar o Local do SAM start-lambda
-
No diretório raiz do seu projeto, execute o seguinte:
$sam local start-lambda<options> -
O AWS SAM CLI cria suas funções do Lambda em um contêiner Docker local. Em seguida, ele envia o endereço local para o endpoint do servidor HTTP. Veja um exemplo a seguir.
$sam local start-lambdaInitializing 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 -
Use os SDKs AWS CLI ou para invocar sua função doLambda localmente.
Veja a seguir um exemplo de como usar a AWS CLI:
$aws lambda invoke --function-nameStatusCode: 200 (END)"HelloWorldFunction"--endpoint-url"http://127.0.0.1:3001"--no-verify-ssl out.txtA seguir está um exemplo usando o 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")
Opções
Especificar um modelo
Para especificar um modelo para o AWS SAM CLI para referência, use a opção --template. Os AWS SAM CLI carregarão apenas esse modelo AWS SAM e os recursos para os quais ele aponta. Veja um exemplo a seguir:
$sam local start-lambda --templatemyTemplate.yaml
Para obter mais informações sobre modelos do AWS SAM, consulte Anatomia do modelo AWS SAM.
Práticas recomendadas
Se seu aplicativo tiver um diretório .aws-sam executando sam build, certifique-se de executar o sam build sempre que atualizar o código da função. Em seguida, execute o sam local start-lambda para testar localmente seu código de função atualizado.
O teste local é uma ótima solução para desenvolvimento e teste rápidos antes da implantação na nuvem. No entanto, os testes locais não validam tudo, como permissões entre seus recursos na nuvem. Tanto quanto possível, teste seus aplicativos na nuvem. Recomendamos usar o sam sync para acelerar seus fluxos de trabalho de testes na nuvem.
Saiba mais
Para obter uma lista de todas as opções sam local start-lambda, consulte sam local start-lambda.