기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS SAM에서 Amazon S3 이벤트 처리
이 예제 애플리케이션을 사용하면 이전 예제에서 학습한 내용을 기반으로 더 복잡한 애플리케이션을 설치합니다. 이 애플리케이션은 Amazon S3 객체 업로드 이벤트 소스에서 간접 호출되는 Lambda 함수로 구성되어 있습니다. 이 연습은 Lambda 함수를 통해 AWS 리소스에 액세스하고 AWS 서비스를 호출하는 방법을 보여줍니다.
이 샘플 서버리스 애플리케이션은 Amazon S3에서 객체 생성 이벤트를 처리합니다. Amazon S3는 버킷에 업로드된 각 이미지에 대해 객체 생성 이벤트를 감지하고 Lambda 함수를 간접 호출합니다. Lambda 함수는 Amazon Rekognition을 간접 호출하여 이미지에 있는 텍스트를 탐지합니다. 그런 다음 Amazon Rekognition에서 반환한 결과를 DynamoDB 테이블에 저장합니다.
참고
이 예제 애플리케이션에서는 이전 예제와 약간 다른 순서로 단계를 수행합니다. 그 이유는 이 예제를 실행하려면 Lambda 함수를 로컬에서 테스트하기 전에 먼저 AWS 리소스를 생성하고 IAM 권한을 구성해야 하기 때문입니다. 리소스를 생성하고 사용자 대신 권한을 구성하는데 CloudFormation을 활용할 것입니다. 그렇지 않으면 Lambda 함수를 로컬에서 테스트하기 전에 이 작업을 수동으로 수행해야 합니다.
이 예제는 더 복잡하므로 이 예제를 실행하기 전에 이전 예제 애플리케이션을 설치하는 데 익숙해야 합니다.
시작하기 전 준비 사항
AWS SAM CLI 설치에서 필요한 설정을 완료했는지 확인하십시오.
1단계: 애플리케이션 초기화
이 단원에서는 AWS SAM 템플릿과 애플리케이션 코드로 구성된 샘플 애플리케이션을 다운로드합니다.
애플리케이션의 초기화
-
AWS SAM CLI 명령 프롬프트에서 다음 명령을 실행합니다.
sam init \ --location https://github.com/aws-samples/cookiecutter-aws-sam-s3-rekognition-dynamodb-python \ --no-input -
명령을 통해 생성된 디렉터리(
aws_sam_ocr/)의 내용을 검토합니다.-
template.yaml– Amazon S3 애플리케이션에 필요한 세 가지 AWS 리소스, 즉 Lambda 함수, Amazon S3 버킷, DynamoDB 테이블을 정의합니다. 또한 템플릿은 이 리소스들 간의 매핑 및 권한을 정의합니다. -
src/디렉터리 – Amazon S3 애플리케이션 코드를 포함합니다. -
SampleEvent.json– 로컬 테스트에 사용되는 샘플 이벤트 소스.
-
2단계: 애플리케이션 패키징
이 애플리케이션을 로컬에서 테스트하려면 귀하는 먼저 AWS SAM CLI를 사용하여 애플리케이션을 AWS 클라우드에 배포하는 데 사용하는 배포 패키지를 만들어야 합니다. 이 배포를 통해 애플리케이션을 로컬에서 테스트하는 데 필요한 AWS 리소스와 권한이 생성됩니다.
Lambda 배포 패키지 생성하기
-
패키징된 코드를 저장할 위치에 S3 버킷을 생성합니다. 기존 S3 버킷을 사용하려면 이 단계를 건너뜁니다.
aws s3 mb s3://bucketname -
다음
packageCLI 명령을 명령 프롬프트에서 실행하여 배포 패키지를 생성합니다.sam package \ --template-file template.yaml \ --output-template-file packaged.yaml \ --s3-bucketbucketname귀하는 다음 단계에서 애플리케이션을 배포할 때 새 템플릿 파일인
packaged.yaml을 지정합니다.
3단계: 애플리케이션 배포
이제 배포 패키지를 생성했으므로 이 패키지를 사용하여 AWS 클라우드에 애플리케이션을 배포합니다. 그런 다음 AWS 클라우드에서 애플리케이션을 호출하여 테스트합니다.
AWS 클라우드에 서버리스 애플리케이션을 배포하려면
-
AWS SAM CLI에서
deploy명령을 사용하여 귀하가 템플릿에서 정의한 모든 리소스를 배포합니다.sam deploy \ --template-file packaged.yaml \ --stack-name aws-sam-ocr \ --capabilities CAPABILITY_IAM \ --regionus-east-1명령에서
--capabilities파라미터를 사용하면 CloudFormation에게 IAM 역할을 생성하도록 허용합니다.CloudFormation은 템플릿에 정의된 AWS 리소스를 생성합니다. 귀하는 CloudFormation 콘솔에서 이러한 리소스의 이름에 액세스할 수 있습니다.
AWS 클라우드에서 서버리스 애플리케이션을 테스트하려면
-
이 샘플 애플리케이션용으로 생성한 Amazon S3 버킷에 이미지를 업로드합니다.
-
DynamoDB 콘솔을 열고 생성된 테이블을 찾습니다. Amazon Rekognition에서 반환한 결과는 표를 잠조하세요.
-
Amazon Rekognition이 업로드한 이미지에서 찾은 텍스트를 포함하는 새 기록이 DynamoDB 테이블에 포함되어 있는지 확인하십시오.
2단계: 애플리케이션 로컬 테스트
애플리케이션을 로컬에서 테스트하려면 먼저 CloudFormation에 의해 생성된 AWS 리소스의 이름을 검색해야 합니다.
-
CloudFormation에서 Amazon S3 키 이름 및 버킷 이름을 검색합니다. 객체 키, 버킷 이름, 버킷 ARN의 값을 대체하여
SampleEvent.json파일을 수정합니다. -
DynamoDB 테이블 이름을 검색합니다. 이 이름은 다음
sam local invoke명령에 사용됩니다.
AWS SAM CLI를 사용하여 샘플 Amazon S3 이벤트를 생성하고 Lambda 함수를 간접 호출합니다.
TABLE_NAME=Table name obtained from CloudFormation consolesam local invoke --event SampleEvent.json
이 TABLE_NAME= 부분은 DynamoDB 테이블 이름을 설정합니다. --event 파라미터는 Lambda 함수에 전달할 테스트 이벤트 메시지가 들어 있는 파일을 지정합니다.
이제 Amazon Rekognition에서 반환한 결과를 기반으로 예상 DynamoDB 기록이 생성되었는지 확인할 수 있습니다.
다음 단계
AWS SAM에 대해 계속 알아보고자 한다면 다음 리소스를 참조하세요.
-
AWS SAM 예제 애플리케이션
– AWS SAM GitHub 리포지토리에는 다운로드하여 실험해 볼 수 있는 추가 예제 애플리케이션이 포함되어 있습니다. -
서버리스 랜드
- AWS SAM 애플리케이션을 위한 서버리스 패턴, 코드 예시 및 학습 리소스를 모아 놓은 사이트입니다.