Introdução aos testes com sam local generate-event - AWS Serverless Application Model

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Introdução aos testes com sam local generate-event

Use o AWS Serverless Application Model sam local generate-event subcomando Command Line Interface (AWS SAMCLI) para gerar amostras de carga útil de eventos para suporte. Serviços da AWS Em seguida, você pode modificar e passar esses eventos para os recursos locais para testes.

Um evento é um objeto JSON que é gerado quando um AWS service (Serviço da AWS) executa uma ação ou tarefa. Esses eventos contêm informações específicas, como os dados que foram processados ou a data e hora do evento. A maioria Serviços da AWS gera eventos e os eventos de cada serviço são formatados exclusivamente para seu serviço.

Os eventos gerados por um serviço são passados para outros serviços como uma fonte de eventos. Por exemplo, um item colocado em um bucket do Amazon Simple Storage Service (Amazon S3) pode gerar um evento. Esse evento pode então ser usado como fonte de eventos para que uma AWS Lambda função processe ainda mais os dados.

Os eventos que você gera com sam local generate-event são formatados na mesma estrutura dos eventos reais criados pelo AWS serviço. Você pode modificar o conteúdo desses eventos e usá-los para testar recursos em seu aplicativo.

Para usar o sam local generate-event, instale o AWS SAM CLI fazendo o seguinte:

Antes de usar sam local generate-event, recomendamos uma compreensão básica do seguinte:

Gere eventos de exemplo

Use o AWS SAMCLI sam local generate-event subcomando para gerar eventos para suporte Serviços da AWS.

Para ver uma lista de opções suportadas Serviços da AWS
  1. Execute o seguinte:

    $ sam local generate-event
  2. A lista de compatíveis Serviços da AWS será exibida. Veja um exemplo a seguir:

    $ sam local generate-event ... Commands: alb alexa-skills-kit alexa-smart-home apigateway appsync batch cloudformation ...
Para gerar um evento local
  1. Execute sam local generate-event e forneça o nome do serviço suportado. Isso exibirá uma lista de tipos de eventos que você pode gerar. Veja um exemplo a seguir:

    $ sam local generate-event s3 Usage: sam local generate-event s3 [OPTIONS] COMMAND [ARGS]... Options: -h, --help Show this message and exit. Commands: batch-invocation Generates an Amazon S3 Batch Operations Invocation Event delete Generates an Amazon S3 Delete Event put Generates an Amazon S3 Put Event
  2. Para gerar o evento de amostra, execute sam local generate-event, fornecendo o serviço e o tipo de evento.

    $ sam local generate-event <service> <event>

    Veja um exemplo a seguir:

    $ sam local generate-event s3 put { "Records": [ { "eventVersion": "2.0", "eventSource": "aws:s3", "awsRegion": "us-east-1", "eventTime": "1970-01-01T00:00:00.000Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "responseElements": { "x-amz-request-id": "EXAMPLE123456789", "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "testConfigRule", "bucket": { "name": "example-bucket", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::example-bucket" }, "object": { "key": "test/key", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] }

Esses exemplos de eventos contêm valores de espaço reservado. Você pode modificar esses valores para referenciar recursos reais em seu aplicativo ou valores para ajudar nos testes locais.

Para modificar um evento de amostra
  1. Você pode modificar eventos de amostra no prompt de comando. Para ver suas opções, execute o seguinte:

    $ sam local generate-event <service> <event> --help

    Veja um exemplo a seguir:

    $ sam local generate-event s3 put --help Usage: sam local generate-event s3 put [OPTIONS] Options: --region TEXT Specify the region name you'd like, otherwise the default = us-east-1 --partition TEXT Specify the partition name you'd like, otherwise the default = aws --bucket TEXT Specify the bucket name you'd like, otherwise the default = example-bucket --key TEXT Specify the key name you'd like, otherwise the default = test/key --debug Turn on debug logging to print debug message generated by AWS SAM CLI and display timestamps. --config-file TEXT Configuration file containing default parameter values. [default: samconfig.toml] --config-env TEXT Environment name specifying default parameter values in the configuration file. [default: default] -h, --help Show this message and exit.
  2. Use qualquer uma dessas opções no prompt de comando para modificar a carga útil do evento de amostra. Veja um exemplo a seguir:

    $ sam local generate-event s3 put--bucket MyBucket { "Records": [ { "eventVersion": "2.0", "eventSource": "aws:s3", "awsRegion": "us-east-1", "eventTime": "1970-01-01T00:00:00.000Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "responseElements": { "x-amz-request-id": "EXAMPLE123456789", "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "testConfigRule", "bucket": { "name": "MyBucket", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::MyBucket" }, "object": { "key": "test/key", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] }

Use eventos gerados para testes locais

Salve seus eventos gerados localmente e use outros subcomandos sam local para testar.

Para salvar seus eventos gerados localmente
  • Execute o seguinte:

    $ sam local generate-event <service> <event> <event-option> > <filename.json>

    Veja a seguir um exemplo de um evento sendo salvo como um s3.json arquivo na events pasta do nosso projeto.

    sam-app$ sam local generate-event s3 put --bucket MyBucket > events/s3.json
Para usar um evento gerado para testes locais
  • Passe o evento com outros subcomandos sam local usando a opção --event.

    Veja a seguir um exemplo de uso do evento s3.json para invocar nossa função do Lambda localmente:

    sam-app$ sam local invoke --event events/s3.json S3JsonLoggerFunction Invoking src/handlers/s3-json-logger.s3JsonLoggerHandler (nodejs18.x) Local image is up-to-date Using local image: public.ecr.aws/lambda/nodejs:18-rapid-x86_64. Mounting /Users/.../sam-app/.aws-sam/build/S3JsonLoggerFunction as /var/task:ro,delegated, inside runtime container START RequestId: f4f45b6d-2ec6-4235-bc7b-495ec2ae0128 Version: $LATEST END RequestId: f4f45b6d-2ec6-4235-bc7b-495ec2ae0128 REPORT RequestId: f4f45b6d-2ec6-4235-bc7b-495ec2ae0128 Init Duration: 1.23 ms Duration: 9371.93 ms Billed Duration: 9372 ms Memory Size: 128 MB Max Memory Used: 128 MB

Saiba mais

Para obter uma lista de todas as opções sam local generate-event, consulte sam local generate-event.

Para uma demonstração do uso sam local, consulte AWS SAM para desenvolvimento local. Testando Nuvem AWS recursos de ambientes de desenvolvimento local na série Serverless Land Sessions with SAM on. YouTube