

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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(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 시리즈를 사용하여 서버리스 토지 세션의 로컬 개발 환경에서 AWS 클라우드 리소스를 테스트](https://www.youtube.com/watch?v=NzPqMrdgD1s&list=PLJo-rJlep0ED198FJnTzhIB5Aut_1vDAd&index=24)합니다. * YouTube* 