Introducción a las pruebas con sam local generate-event - AWS Serverless Application Model

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Introducción a las pruebas con sam local generate-event

Utilice el AWS Serverless Application Model sam local generate-event subcomando Command Line Interface (AWS SAMCLI) para generar muestras de carga útil de eventos compatibles. Servicios de AWS A continuación, puede modificar estos eventos y transferirlos a los recursos locales para probarlos.

Un evento es un objeto JSON que se genera cuando un Servicio de AWS realiza una acción o tarea. Estos eventos contienen información específica, como los datos que se procesaron o la marca de tiempo del evento. La mayoría de Servicios de AWS generan eventos y los eventos de cada servicio tienen un formato exclusivo para su servicio.

Los eventos generados por un servicio se transfieren a otros servicios como fuente de eventos. Por ejemplo, un artículo colocado en un bucket de Amazon Simple Storage Service (Amazon S3) puede generar un evento. A continuación, este evento se puede utilizar como fuente de eventos para que una función de AWS Lambda siga procesando los datos.

Los eventos con sam local generate-event los que se generan tienen el mismo formato que los eventos reales creados por el AWS servicio. Puede modificar el contenido de estos eventos y usarlos para probar los recursos de la aplicación.

Para usar sam local generate-event, complete lo siguiente para instalar la CLI de AWS SAM:

Antes de usar sam local generate-event, se recomienda tener conocimientos básicos de lo siguiente:

Generar eventos de ejemplo

Utilice el AWS SAMCLI sam local generate-event subcomando para generar eventos compatibles Servicios de AWS.

Para ver una lista de los compatibles Servicios de AWS
  1. Ejecute lo siguiente:

    $ sam local generate-event
  2. Aparecerá la lista de compatibles Servicios de AWS . A continuación, se muestra un ejemplo:

    $ sam local generate-event ... Commands: alb alexa-skills-kit alexa-smart-home apigateway appsync batch cloudformation ...
Para generar un evento local
  1. Ejecute sam local generate-event y proporcione el nombre del servicio compatible. Esto mostrará una lista de tipos de eventos que puede generar. A continuación, se muestra un ejemplo:

    $ 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 generar el evento de muestra sam local generate-event, ejecute e indique el servicio y el tipo de evento.

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

    A continuación, se muestra un ejemplo:

    $ 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" } } } ] }

Estos eventos de ejemplo contienen valores de marcador de posición. Puede modificar estos valores para que hagan referencia a los recursos reales de la aplicación o a los valores para facilitar las pruebas locales.

Para modificar un evento de muestra
  1. Puede modificar eventos de ejemplo en la línea de comandos. Para ver sus opciones, ejecute lo siguiente:

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

    A continuación, se muestra un ejemplo:

    $ 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. Utilice cualquiera de estas opciones en la línea de comandos para modificar la carga útil del evento de muestra. A continuación, se muestra un ejemplo:

    $ 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" } } } ] }

Utilice los eventos generados para realizar pruebas locales

Guarde los eventos generados localmente y utilice otros subcomandos sam local para realizar las pruebas.

Para guardar los eventos generados localmente
  • Ejecute lo siguiente:

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

    El siguiente es un ejemplo de un evento que se guarda como un archivo s3.json en la carpeta events de nuestro proyecto.

    sam-app$ sam local generate-event s3 put --bucket MyBucket > events/s3.json
Para usar un evento generado para realizar pruebas locales
  • Pase el evento con otros subcomandos sam local mediante la opción --event.

    A continuación, se muestra un ejemplo del uso del evento s3.json para invocar la función de Lambda de forma local:

    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

Más información

Para obtener una lista de todas las opciones sam local generate-event, consulte sam local generate-event.

Para ver una demostración del uso de sam local, consulte Desarrollo local con AWS SAM . Probando Nube de AWS recursos de entornos de desarrollo locales en la serie Serverless Land Sessions with SAM en YouTube adelante.