本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
測試簡介 sam local generate-event
使用命 AWS Serverless Application Model 令列介面 (AWS SAMCLI) sam local generate-event
子命令產生受支援 AWS 服務的事件承載範例。然後,您可以修改這些事件並將其傳遞給本機資源以進行測試。
-
如需「」的簡介 AWS SAMCLI,請參閱什麼是 AWS SAMCLI?。
-
如需指
sam local generate-event
令選項的清單,請參閱sam local generate-event。
事件是 JSON 物件,會在 AWS 服務 執行動作或工作時產生。這些事件包含特定資訊,例如已處理的資料或事件的時間戳記。大多數 AWS 服務 生成事件,每個服務的事件都是針對其服務的唯一格式化。
由一個服務產生的事件會作為事件來源傳遞至其他服務。例如,放置在 Amazon Simple Storage Service (Amazon S3) 貯體中的項目可以產生事件。然後,此事件可用作 AWS Lambda 函數的事件來源,以進一步處理資料。
您使用產生的事件sam local generate-event
會以與 AWS 服務建立的實際事件相同的結構格式化。您可以修改這些事件的內容,並使用它們來測試應用程式中的資源。
若要使用sam local generate-event
,請完成下列 AWS SAMCLI步驟來安裝:
使用前sam local generate-event
,我們建議對以下內容進行基本了解:
產生範例事件
使用 AWS SAMCLIsam local generate-event
子指令產生受支援 AWS 服務的事件。
若要查看支援的清單 AWS 服務
-
執行下列命令:
$
sam local generate-event
-
AWS 服務 將顯示支援的清單。以下是範例:
$
sam local generate-event
... Commands: alb alexa-skills-kit alexa-smart-home apigateway appsync batch cloudformation ...
產生本機事件
-
執行
sam local generate-event
並提供支援的服務名稱。這將顯示您可以產生的事件類型清單。以下是範例:$
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
-
若要產生範例事件,請執行
sam local generate-event
,並提供服務和事件類型。$
sam local generate-event
<service>
<event>
以下是範例:
$
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": "example-bucket", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::example-bucket" }, "object": { "key": "test/key", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] }s3 put
這些範例事件包含預留位置值。您可以修改這些值以參考應用程式中的實際資源或值,以協助進行本機測試。
若要修改範例事件
-
您可以在命令提示字元中修改範例事件。若要查看您的選項,請執行下列指令:
$
sam local generate-event
<service>
<event>
--help以下是範例:
$
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 -
在命令提示字元中使用這些選項中的任何一個來修改範例事件承載。以下是範例:
$
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 MyBucket
"MyBucket"
, "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::MyBucket" }, "object": { "key": "test/key", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] }
使用產生的事件進行本機測試
在本地保存生成的事件,並使用其他sam local
子命令進行測試。
若要在本機儲存您產生的事件
-
執行下列命令:
$
sam local generate-event
<service> <event> <event-option>
><filename.json>
以下是一個事件被保存為我們項目
s3.json
文件events
夾中的文件的示例。sam-app$
sam local generate-event
s3 put --bucket MyBucket
>events/s3.json
若要使用產生的事件進行本機測試
-
使用
--event
選項將事件與其他sam local
子命令一起傳遞。以下是使用
s3.json
事件在本機叫用 Lambda 函數的範例: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
進一步了解
如需所有sam local generate-event
選項的清單,請參閱sam local
generate-event。
有關使用的演示sam local
,請參AWS SAM 閱本地開發。在 SAM 系列的無伺服器陸地工作階段中,測試來自本機開發環境的 AWS 雲端 YouTube資源