本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 進行測試的簡介 sam local generate-event
使用 AWS Serverless Application Model 命令列介面 (AWS SAM CLI) sam local generate-event
子命令,以為支援的 產生事件承載範例 AWS 服務。然後,您可以修改這些事件並將其傳遞至本機資源進行測試。
-
如需 的簡介 AWS SAM CLI,請參閱 什麼是 AWS SAM CLI?
-
如需
sam local generate-event
命令選項的清單,請參閱 sam local generate-event。
事件是在 AWS 服務 執行動作或任務時產生的JSON物件。這些事件包含特定資訊,例如處理的資料或事件的時間戳記。大多數 AWS 服務 產生事件和每個服務的事件都會針對其服務進行唯一的格式化。
由一個 服務產生的事件會作為事件來源 傳遞給其他 服務。例如,放置在 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的項目可以產生事件。然後,此事件可以用作 AWS Lambda 函數的事件來源,以進一步處理資料。
您透過 產生的事件sam local generate-event
格式與 AWS 服務建立的實際事件相同。您可以修改這些事件的內容,並使用它們來測試應用程式中的資源。
若要使用 sam local generate-event
,請安裝 AWS SAM CLI 完成下列操作:
在使用 之前sam local generate-event
,我們建議對以下內容有基本的了解:
產生範例事件
使用 AWS SAM CLI sam 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": "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
這些範例事件包含預留位置值。您可以修改這些值,以參考應用程式中的實際資源或值,以協助進行本機測試。
若要修改範例事件
-
您可以在命令提示中修改範例事件。若要查看您的選項,請執行下列動作:
$
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 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" } } } ] }
使用產生的事件進行本機測試
在本機儲存您產生的事件,並使用其他sam local
子命令進行測試。
在本機儲存產生的事件
-
執行下列命令:
$
sam local generate-event
<service> <event> <event-option>
><filename.json>
以下是將事件儲存為專案
events
資料夾中s3.json
檔案的範例。sam-app$
sam local generate-event
s3 put --bucket amzn-s3-demo-bucket
>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 雲端 的資源