Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Introduzione ai test con sam local generate-event
Usa l'interfaccia AWS Serverless Application Model a riga di comando (AWS SAM CLI) sam local generate-event
sottocomando per generare esempi di payload di eventi supportati. Servizi AWSÈ quindi possibile modificare e passare questi eventi alle risorse locali per i test.
-
Per un'introduzione al AWS SAM CLI, vedi Che cos'è il AWS SAM CLI?
-
Per un elenco delle opzioni di
sam local generate-event
comando, vederesam local generate-event.
Un evento è un JSON oggetto che viene generato quando un Servizio AWS esegue un'azione o un'attività. Questi eventi contengono informazioni specifiche, come i dati elaborati o il timestamp dell'evento. La maggior parte Servizi AWS genera eventi e gli eventi di ogni servizio sono formattati in modo univoco per il relativo servizio.
Gli eventi generati da un servizio vengono passati ad altri servizi come fonte di eventi. Ad esempio, un articolo inserito in un bucket Amazon Simple Storage Service (Amazon S3) può generare un evento. Questo evento può quindi essere utilizzato come origine dell'evento per una AWS Lambda funzione che elabora ulteriormente i dati.
Gli eventi generati con sam local generate-event
sono formattati nella stessa struttura degli eventi effettivi creati dal AWS servizio. È possibile modificare il contenuto di questi eventi e utilizzarli per testare le risorse dell'applicazione.
Per utilizzarlosam local generate-event
, installa AWS SAM CLI completando quanto segue:
Prima dell'usosam local generate-event
, si consiglia una conoscenza di base di quanto segue:
Genera eventi di esempio
Usa il AWS SAM CLI sam local generate-event
sottocomando per generare eventi per i supporti Servizi AWS.
Per visualizzare un elenco di quelli supportati Servizi AWS
-
Esegui il seguente codice:
$
sam local generate-event
-
Servizi AWS Verrà visualizzato l'elenco dei supportati. Di seguito è riportato un esempio:
$
sam local generate-event
... Commands: alb alexa-skills-kit alexa-smart-home apigateway appsync batch cloudformation ...
Per generare un evento locale
-
Esegui
sam local generate-event
e fornisci il nome del servizio supportato. Verrà visualizzato un elenco di tipi di eventi che è possibile generare. Di seguito è riportato un esempio:$
sam local generate-event
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 Events3
-
Per generare l'evento di esempio, esegui
sam local generate-event
, fornendo il servizio e il tipo di evento.$
sam local generate-event
<service>
<event>
Di seguito è riportato un esempio:
$
sam local generate-event
{ "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": "amzn-s3-demo-bucket", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::amzn-s3-demo-bucket" }, "object": { "key": "test/key", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] }s3 put
Questi eventi di esempio contengono valori segnaposto. È possibile modificare questi valori in modo che facciano riferimento alle risorse effettive dell'applicazione o ai valori per facilitare i test locali.
Per modificare un evento di esempio
-
È possibile modificare gli eventi di esempio al prompt dei comandi. Per visualizzare le opzioni disponibili, esegui quanto segue:
$
sam local generate-event
<service>
<event>
--helpDi seguito è riportato un esempio:
$
sam local generate-event
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.s3
put
--help -
Utilizzate una di queste opzioni al prompt dei comandi per modificare il payload dell'evento di esempio. Di seguito è riportato un esempio:
$
sam local generate-event
{ "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":s3 put--bucket amzn-s3-demo-bucket
"amzn-s3-demo-bucket"
, "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::amzn-s3-demo-bucket" }, "object": { "key": "test/key", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] }
Utilizzate gli eventi generati per i test locali
Salva gli eventi generati localmente e usa altri sam local
sottocomandi per eseguire i test.
Per salvare gli eventi generati localmente
-
Esegui il seguente codice:
$
sam local generate-event
<service> <event> <event-option>
><filename.json>
Di seguito è riportato un esempio di evento salvato come
s3.json
file nellaevents
cartella del nostro progetto.sam-app$
sam local generate-event
s3 put --bucket amzn-s3-demo-bucket
>events/s3.json
Per utilizzare un evento generato per i test locali
-
Passa l'evento con altri
sam local
sottocomandi utilizzando l'--event
opzione.Di seguito è riportato un esempio di utilizzo dell'
s3.json
evento per richiamare la nostra funzione Lambda localmente:sam-app$
sam local invoke --event
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 MBevents/s3.json S3JsonLoggerFunction
Ulteriori informazioni
Per un elenco di tutte le sam local generate-event
opzioni, consultasam local
generate-event.
Per una dimostrazione dell'utilizzosam local
, vedi AWS SAM per lo sviluppo locale. Test Cloud AWS delle risorse provenienti da ambienti di sviluppo locali