를 사용한 테스트 소개 sam local generate-event - AWS Serverless Application Model

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

를 사용한 테스트 소개 sam local generate-event

AWS Serverless Application Model 명령줄 인터페이스 (AWS SAMCLI) sam local generate-event 하위 명령을 사용하여 지원되는 이벤트 페이로드 샘플을 생성하십시오. AWS 서비스그런 다음 이러한 이벤트를 수정하여 로컬 리소스로 전달해 테스트를 수행할 수 있습니다.

이벤트는 작업이나 작업을 AWS 서비스 수행할 때 생성되는 JSON 객체입니다. 이러한 이벤트에는 처리된 데이터나 이벤트의 타임스탬프와 같은 특정 정보가 포함됩니다. 대부분의 AWS 서비스 는 이벤트를 생성하고 각 서비스의 이벤트는 해당 서비스에 맞게 고유한 형식으로 지정됩니다.

한 서비스에서 생성된 이벤트는 다른 서비스에 이벤트 소스로 전달됩니다. 예를 들어 Amazon Simple Storage Service(S3) 버킷에 배치된 항목은 이벤트를 생성할 수 있습니다. 그러면 이 이벤트를 AWS Lambda 함수의 이벤트 소스로 사용하여 데이터를 추가로 처리할 수 있습니다.

를 사용하여 생성하는 이벤트는 sam local generate-event 서비스에서 생성한 실제 이벤트와 동일한 구조로 형식이 지정됩니다. AWS 이러한 이벤트의 콘텐츠를 수정하고 이를 사용하여 애플리케이션의 리소스를 테스트할 수 있습니다.

sam local generate-event를 사용하려면 다음을 완료하여 AWS SAM CLI를 설치합니다.

sam local generate-event를 사용하기 전에 다음 사항에 대한 기본적인 이해를 하는 것이 좋습니다.

샘플 이벤트 생성

AWS SAMCLIsam local generate-event하위 명령을 사용하여 지원되는 AWS 서비스이벤트를 생성하십시오.

지원되는 목록을 보려면 AWS 서비스
  1. 다음을 실행합니다.

    $ sam local generate-event
  2. 지원되는 목록이 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
  2. 샘플 이벤트를 생성하려면 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": "example-bucket", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::example-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.
  2. 명령 프롬프트에서 이러한 옵션 중 하나를 사용하여 샘플 이벤트 페이로드를 수정합니다. 다음은 그 예제입니다.

    $ sam local generate-event s3 put--bucket MyBucket { "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": "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>

    다음은 프로젝트 events 폴더에 s3.json 파일로 저장되는 이벤트에 대한 예시입니다.

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

자세히 알아보기

sam local generate-event 옵션 목록은 sam local generate-event 섹션을 참조하세요.

sam local 사용 데모는 로컬 개발용AWS SAM 섹션을 참조하세요. SAM을 사용한 서버리스 랜드 세션 시리즈에서 YouTube 로컬 개발 환경의 AWS 클라우드 리소스를 테스트해 보세요.