

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

# 를 사용하여 DynamoDB 이벤트 처리 AWS SAM
<a name="serverless-example-ddb"></a>



이 예제 애플리케이션을 사용하면 개요 및 Quick Start 가이드에서 학습한 내용을 토대로 다른 예제 애플리케이션을 설치합니다. 이 애플리케이션은 DynamoDB 테이블 이벤트 소스에서 간접 호출되는 Lambda 함수로 구성되어 있습니다. Lambda 함수는 매우 간단합니다. 즉, 이벤트 소스 메시지를 통해 전달된 데이터를 기록합니다.

이 연습에서는 Lambda 함수가 간접 호출될 때 Lambda 함수로 전달되는 이벤트 소스 메시지를 모방하는 방법을 보여줍니다.



## 시작하기 전 준비 사항
<a name="gs-ex2-prereq"></a>

[AWS SAM CLI 설치](install-sam-cli.md)에서 필요한 설정을 완료했는지 확인하십시오.

## 1단계: 애플리케이션 초기화
<a name="gs-ex2-setup-local-app"></a>

이 섹션에서는 AWS SAM 템플릿과 애플리케이션 코드로 구성된 애플리케이션 패키지를 다운로드합니다.

**애플리케이션의 초기화**

1.  AWS SAM CLI 명령 프롬프트에서 다음 명령을 실행합니다.

   ```
   sam init \
   --location gh:aws-samples/cookiecutter-aws-sam-dynamodb-python \
   --no-input
   ```

   참고로 위 명령어 내 `gh:`는 GitHub URL `https://github.com/`로 확장됩니다.

1. 명령을 통해 생성된 디렉터리(`dynamodb_event_reader/`)의 내용을 검토합니다.
   + `template.yaml` - 읽기 DynamoDB 애플리케이션에 필요한 두 가지 AWS 리소스, 즉 Lambda 함수와 DynamoDB 테이블을 정의합니다. 또한 템플릿은 두 리소스 간의 매핑을 정의합니다.
   + `read_dynamodb_event/` 디렉터리 - DynamoDB 애플리케이션 코드를 포함합니다.

## 2단계: 애플리케이션 로컬 테스트
<a name="gs-ex2-test-locally"></a>

로컬 테스트의 경우 AWS SAMCLI를 사용하여 샘플 DynamoDB 이벤트를 생성하고 Lambda 함수를 간접 호출합니다.

```
sam local generate-event dynamodb update | sam local invoke --event - ReadDynamoDBEvent
```

`generate-event` 명령은 모든 구성 요소가 AWS 클라우드에 배포될 때 생성되는 메시지와 같은 테스트 이벤트 소스 메시지를 생성합니다. 이 이벤트 소스 메시지는 Lambda 함수 ReadDynamodBevent로 파이프됩니다.

`app.py` 내 소스 코드를 기반으로 예상 메시지가 콘솔에 인쇄되는지 확인합니다.

## 3단계: 애플리케이션 패키징
<a name="gs-ex2-setup-pacakge-app"></a>

애플리케이션을 로컬에서 테스트한 후를 AWS SAM CLI 사용하여 배포 패키지를 생성하고,이 패키지를 사용하여 애플리케이션을 AWS 클라우드에 배포합니다.

**Lambda 배포 패키지 생성하기**

1. 패키징된 코드를 저장할 위치에 S3 버킷을 생성합니다. 기존 S3 버킷을 사용하려면 이 단계를 건너뜁니다.

   ```
   aws s3 mb s3://bucketname
   ```

1. 다음 `package` CLI 명령을 명령 프롬프트에서 실행하여 배포 패키지를 생성합니다.

   ```
   sam package \
       --template-file template.yaml \
       --output-template-file packaged.yaml \
       --s3-bucket bucketname
   ```

   귀하는 다음 단계에서 애플리케이션을 배포할 때 새 템플릿 파일인 `packaged.yaml`을 지정합니다.

## 4단계: 애플리케이션 배포
<a name="gs-ex2-setup-deploy-app"></a>

이제 배포 패키지를 생성했으므로 이를 사용하여 애플리케이션을 AWS 클라우드에 배포합니다. 그런 다음 애플리케이션을 테스트합니다.

**서버리스 애플리케이션을 AWS 클라우드에 배포하려면**
+ 에서 `deploy` CLI 명령을 AWS SAM CLI사용하여 템플릿에 정의한 모든 리소스를 배포합니다.

  

  ```
  sam deploy \
      --template-file packaged.yaml \
      --stack-name sam-app \
      --capabilities CAPABILITY_IAM \
      --region us-east-1
  ```

  명령에서 `--capabilities` 파라미터는 AWS CloudFormation이 IAM 역할을 생성하도록 허용합니다.

  CloudFormation 는 템플릿에 정의된 AWS 리소스를 생성합니다. CloudFormation 콘솔에서 이러한 리소스의 이름에 액세스할 수 있습니다.

**AWS 클라우드에서 서버리스 애플리케이션을 테스트하려면**

1. DynamoDB 콘솔을 엽니다.

1. 방금 귀하가 생성한 테이블에 기록을 삽입합니다.

1. 표의 **지표** 탭으로 이동하여 **모든 CloudWatch 지표 보기**를 선택합니다. CloudWatch 콘솔에서 **로그**를 선택하여 로그 출력을 볼 수 있도록 합니다.

## 다음 단계
<a name="gs-ex2-setup-deploy-app-next-steps"></a>

계속 알아보려면 다음 리소스를 AWS SAM참조하세요.
+ **[서버리스 랜드](https://serverlessland.com/patterns?framework=AWS+SAM)** - AWS SAM 애플리케이션 전용 서버리스 패턴, 코드 예제 및 학습 리소스를 결합하는 사이트입니다.