

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 進行測試的簡介 sam local generate-event
<a name="using-sam-cli-local-generate-event"></a>

使用 AWS Serverless Application Model 命令列界面 (AWS SAM CLI) `sam local generate-event`子命令來產生受支援的事件承載範例 AWS 服務。然後，您可以修改這些事件並將其傳遞至本機資源進行測試。
+ 如需 的簡介 AWS SAM CLI，請參閱 [什麼是 AWS SAM CLI？](what-is-sam-overview.md#what-is-sam-cli)
+ 如需`sam local generate-event`命令選項的清單，請參閱 [sam local generate-event](sam-cli-command-reference-sam-local-generate-event.md)。

*事件*是在 AWS 服務 執行動作或任務時產生的 JSON 物件。這些事件包含特定資訊，例如已處理的資料或事件的時間戳記。大多數 AWS 服務 產生事件，每個服務的事件都會針對其服務進行唯一的格式化。

由一個服務產生的事件會做為*事件來源*傳遞給其他 服務。例如，放置在 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的項目可以產生事件。然後，此事件可以用作 AWS Lambda 函數的事件來源，以進一步處理資料。

您使用 產生的事件`sam local generate-event`格式與 AWS 服務建立的實際事件相同。您可以修改這些事件的內容，並使用它們來測試應用程式中的資源。

## 先決條件
<a name="using-sam-cli-local-generate-event-prerequisites"></a>

若要使用 `sam local generate-event`，請完成下列步驟來 AWS SAM CLI安裝 ：
+ [AWS SAM 先決條件](prerequisites.md).
+ [安裝 AWS SAM CLI](install-sam-cli.md).

使用 之前`sam local generate-event`，我們建議您對以下內容有基本的了解：
+ [設定 AWS SAM CLI](using-sam-cli-configure.md).
+ [在 中建立您的應用程式 AWS SAM](using-sam-cli-init.md).
+ [使用 建置 簡介 AWS SAM](using-sam-cli-build.md).
+ [使用 部署簡介 AWS SAM](using-sam-cli-deploy.md).

## 產生範例事件
<a name="using-sam-cli-local-generate-event-generate"></a>

使用 AWS SAM CLI`sam local generate-event`子命令為支援的 產生事件 AWS 服務。

**查看支援的清單 AWS 服務**

1. 執行下列命令：

   ```
   $ sam local generate-event
   ```

1. 支援 的清單 AWS 服務 隨即顯示。以下是範例：

   ```
   $ sam local generate-event
   ...
   Commands:
     alb
     alexa-skills-kit
     alexa-smart-home
     apigateway
     appsync
     batch
     cloudformation
     ...
   ```

**產生本機事件**

1. 執行`sam local generate-event`並提供支援的 服務名稱。這會顯示您可以產生的事件類型清單。以下是範例：

   ```
   $ 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
   ```

1. 若要產生範例事件，請執行 `sam local generate-event`，並提供 服務和事件類型。

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

   以下是範例：

   ```
   $ 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": "sam-s3-demo-bucket",
             "ownerIdentity": {
               "principalId": "EXAMPLE"
             },
             "arn": "arn:aws:s3:::sam-s3-demo-bucket"
           },
           "object": {
             "key": "test/key",
             "size": 1024,
             "eTag": "0123456789abcdef0123456789abcdef",
             "sequencer": "0A1B2C3D4E5F678901"
           }
         }
       }
     ]
   }
   ```

這些範例事件包含預留位置值。您可以修改這些值，以參考應用程式中的實際資源或值，以協助進行本機測試。

**修改範例事件**

1. 您可以在命令提示字元中修改範例事件。若要查看您的選項，請執行下列動作：

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

   以下是範例：

   ```
   $ 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.
   ```

1. 在命令提示字元使用這些選項來修改您的範例事件承載。以下是範例：

   ```
   $ sam local generate-event s3 put--bucket sam-s3-demo-bucket
   
   {
     "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": "sam-s3-demo-bucket",
             "ownerIdentity": {
               "principalId": "EXAMPLE"
             },
             "arn": "arn:aws:s3:::sam-s3-demo-bucket"
           },
           "object": {
             "key": "test/key",
             "size": 1024,
             "eTag": "0123456789abcdef0123456789abcdef",
             "sequencer": "0A1B2C3D4E5F678901"
           }
         }
       }
     ]
   }
   ```

## 使用產生的事件進行本機測試
<a name="using-sam-cli-local-generate-event-use"></a>

在本機儲存您產生的事件，並使用其他`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 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
  ```

## 進一步了解
<a name="using-sam-cli-local-generate-event-learn"></a>

如需所有`sam local generate-event`選項的清單，請參閱 [sam local generate-event](sam-cli-command-reference-sam-local-generate-event.md)。

如需使用 的示範`sam local`，請參閱 [AWS SAM 以取得本機開發。在 上的 *Serverless Land Sessions 中使用 SAM 系列YouTube*測試來自本機開發環境 AWS 雲端 的資源](https://www.youtube.com/watch?v=NzPqMrdgD1s&list=PLJo-rJlep0ED198FJnTzhIB5Aut_1vDAd&index=24)。