다음을 사용하여 Amazon S3 이벤트를 처리합니다. AWS SAM - AWS Serverless Application Model

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

다음을 사용하여 Amazon S3 이벤트를 처리합니다. AWS SAM

이 예제 애플리케이션을 사용하면 이전 예제에서 학습한 내용을 기반으로 더 복잡한 애플리케이션을 설치합니다. 이 애플리케이션은 Amazon S3 객체 업로드 이벤트 소스에서 호출되는 Lambda 함수로 구성되어 있습니다. 이 연습은 Lambda 함수를 통해 AWS 리소스에 액세스하고 AWS 서비스를 호출하는 방법을 보여줍니다.

이 샘플 서버리스 애플리케이션은 Amazon S3에서 객체 생성 이벤트를 처리합니다. Amazon S3는 버킷에 업로드된 각 이미지에 대해 객체 생성 이벤트를 감지하고 Lambda 함수를 호출합니다. Lambda 함수는 Amazon Rekognition을 호출하여 이미지에 있는 텍스트를 탐지합니다. 그런 다음 Amazon Rekognition에서 반환한 결과를 DynamoDB 테이블에 저장합니다.

참고

이 예제 애플리케이션에서는 이전 예제와 약간 다른 순서로 단계를 수행합니다. 그 이유는 이 예제를 실행하려면 먼저 AWS 리소스를 생성하고 IAM 권한을 구성해야 Lambda 함수를 로컬에서 테스트할 수 있기 때문입니다. 리소스를 생성하고 사용자 대신 권한을 구성하는 AWS CloudFormation 데 활용할 것입니다. 그렇지 않으면 Lambda 함수를 로컬에서 테스트하기 전에 이 작업을 수동으로 수행해야 합니다.

이 예제는 더 복잡하므로 이 예제를 실행하기 전에 이전 예제 애플리케이션을 설치하는 데 익숙해야 합니다.

시작하기 전 준비 사항

  설치 AWS SAM CLI에서 필요한 설정을 완료했는지 확인하십시오.

1단계: 애플리케이션 초기화

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

애플리케이션의 초기화
  1. AWS SAM CLI 명령 프롬프트에서 다음 명령을 실행합니다.

    sam init \ --location https://github.com/aws-samples/cookiecutter-aws-sam-s3-rekognition-dynamodb-python \ --no-input
  2. 명령을 통해 생성된 디렉터리(aws_sam_ocr/)의 내용을 검토합니다.

    • template.yaml— Amazon S3 애플리케이션에 필요한 세 가지 AWS 리소스, 즉 Lambda 함수, Amazon S3 버킷, DynamoDB 테이블을 정의합니다. 또한 템플릿은 이 리소스들 간의 매핑 및 권한을 정의합니다.

    • src/ 디렉터리 – Amazon S3 애플리케이션 코드를 포함합니다.

    • SampleEvent.json – 로컬 테스트에 사용되는 샘플 이벤트 소스.

2단계: 애플리케이션 패키징

이 애플리케이션을 로컬에서 테스트하려면 먼저 를 사용하여 애플리케이션을 클라우드에 AWS SAMCLI 배포하는 데 사용하는 배포 패키지를 생성해야 합니다. AWS 이 배포를 통해 애플리케이션을 로컬에서 테스트하는 데 필요한 AWS 리소스와 권한이 생성됩니다.

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

    aws s3 mb s3://bucketname
  2. 명령 프롬프트에서 다음 package CLI 명령을 실행하여 배포 패키지를 생성합니다.

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

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

3단계: 애플리케이션 배포

배포 패키지를 만들었으니 이제 이 패키지를 사용하여 애플리케이션을 AWS 클라우드에 배포합니다. 그런 다음 AWS 클라우드에서 애플리케이션을 호출하여 테스트합니다.

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

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

    명령에서 --capabilities 매개 변수를 사용하여 AWS CloudFormation IAM 역할을 생성할 수 있습니다.

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

클라우드에서 서버리스 애플리케이션을 테스트하려면 AWS
  1. 이 샘플 애플리케이션용으로 생성한 Amazon S3 버킷에 이미지를 업로드합니다.

  2. DynamoDB 콘솔을 열고 생성된 테이블을 찾습니다. Amazon Rekognition에서 반환한 결과는 표를 잠조하세요.

  3. Amazon Rekognition이 업로드한 이미지에서 찾은 텍스트를 포함하는 새 기록이 DynamoDB 테이블에 포함되어 있는지 확인하십시오.

2단계: 애플리케이션 로컬 테스트

애플리케이션을 로컬에서 테스트하려면 먼저 에서 만든 AWS AWS CloudFormation리소스의 이름을 검색해야 합니다.

  • 에서 Amazon S3 키 이름 및 버킷 이름을 AWS CloudFormation검색합니다. 객체 키, 버킷 이름 및 버킷의 값을 교체하여 SampleEvent.json 파일을 ARN 수정합니다.

  • DynamoDB 테이블 이름을 검색합니다. 이 이름은 다음 sam local invoke 명령에 사용됩니다.

AWS SAMCLI를 사용하여 샘플 Amazon S3 이벤트를 생성하고 Lambda 함수를 호출합니다.

TABLE_NAME=Table name obtained from AWS CloudFormation console sam local invoke --event SampleEvent.json

TABLE_NAME= 부분은 DynamoDB 테이블 이름을 설정합니다. --event 파라미터는 Lambda 함수에 전달할 테스트 이벤트 메시지가 들어 있는 파일을 지정합니다.

이제 Amazon Rekognition에서 반환한 결과를 기반으로 예상 DynamoDB 기록이 생성되었는지 확인할 수 있습니다.

다음 단계

AWS SAM GitHub 저장소에는 다운로드하여 실험해 볼 수 있는 추가 예제 애플리케이션이 포함되어 있습니다. 이 리포지토리에 액세스하려면 AWS SAM 예제 애플리케이션을 잠조하세요.