Introdução aos testes com sam local start-lambda - AWS Serverless Application Model

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 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
  1. No diretório raiz do seu projeto, execute o seguinte:

    $ sam local start-lambda <options>
  2. 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-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. 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-name "HelloWorldFunction" --endpoint-url "http://127.0.0.1:3001" --no-verify-ssl out.txt StatusCode: 200 (END)

    A 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 --template myTemplate.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.