

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 のサービス はイベントを生成し、各サービスのイベントはそのサービスに合わせて独自にフォーマットされます。

1 つのサービスによって生成されたイベントは、イベントソースとして他のサービスに渡されます。例えば、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>

`sam local generate-event` サブコマンドを使用して AWS SAM CLI、サポートされている のイベントを生成します 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 」を参照してください。での *SAM シリーズを使用した Serverless Land Sessions YouTube*のローカル開発環境からの AWS クラウド リソースのテスト](https://www.youtube.com/watch?v=NzPqMrdgD1s&list=PLJo-rJlep0ED198FJnTzhIB5Aut_1vDAd&index=24)。