서버리스 애플리케이션 구축

Amazon Aurora 서버리스 사용

Amazon Aurora는 기존 엔터프라이즈 데이터베이스의 성능과 가용성에 오픈 소스 데이터베이스의 간편성과 비용 효율성을 결합한 MySQL 및 PostgreSQL 호환 관계형 데이터베이스입니다. Amazon Aurora 서버리스는 Amazon Aurora(MySQL 및 PostgreSQL 호환 버전)를 위한 온디맨드 Auto Scaling 구성입니다. 이를 통해 데이터베이스를 자동으로 시작 및 종료하고, 애플리케이션의 필요에 따라 용량을 늘리거나 줄일 수 있습니다. Aurora 서버리스를 사용하면 데이터베이스 인스턴스를 관리하지 않고도 클라우드에서 데이터베이스를 실행할 수 있습니다. Aurora 서버리스는 사용 빈도가 낮거나 간헐적이거나 예측할 수 없는 워크로드를 위한 간단하고 비용 효율적인 옵션입니다.

이 자습서에서는 Amazon Aurora 서버리스(PostgreSQL 호환 버전), Aurora 서버리스용 Data API, Amazon Lambda 및 Amazon Simple Notification Service(SNS)를 사용하여 서버리스 메시지 처리 애플리케이션을 생성하는 방법을 알아봅니다. 이 자습서에서는 Aurora 서버리스 데이터베이스를 생성하고, Data API를 사용하여 Amazon SNS에서 메시지를 소비하는 Amazon Lambda 함수와 이 데이터베이스를 연결하고, Aurora 서버리스 데이터베이스에 메시지를 저장하는 단계별 지침을 제공합니다.

자습서 소개
시간 10-20분      
요금 1 USD 미만
사용 사례 데이터베이스
제품 Amazon Aurora, Amazon SNS, AWS Lambda
레벨 100
최종 업데이트 날짜 2019년 9월 24일

1단계: Aurora 서버리스 데이터베이스 생성

1.1 - 브라우저를 열고 Amazon RDS 콘솔로 이동합니다. 이미 AWS 계정이 있을 경우 콘솔에 로그인합니다. 그렇지 않으면 새 AWS 계정을 생성한 후 시작합니다.

계정이 있습니까? 계정에 로그인

1.2 - 오른쪽 상단 모서리에서 Aurora DB 클러스터를 시작할 리전을 선택합니다.

1.3 - Amazon Aurora 창에서 [데이터베이스 생성]을 클릭합니다.

계속하기 전에 새 데이터베이스 생성 흐름으로 전환합니다.

엔진 옵션

1.4 - [데이터베이스 엔진]에서 [Amazon Aurora]를 선택합니다.

1.5 - [에디션]에서 [PostgreSQL 호환성이 추가된 Amazon Aurora]를 선택합니다.

데이터베이스 기능

1.6 - [서버리스]를 선택합니다.

설정

1.7 - Aurora DB 클러스터에 대한 식별자(예: ‘database-1’)를 선택합니다.

자격 증명 설정

1.8 - 데이터베이스의 사용자 이름 및 암호를 선택합니다.

용량 설정

1.9 - 최대 Aurora 용량 단위로 2를 선택합니다.

연결

1.10 - 데이터베이스를 생성할 VPC를 선택합니다.

생성한 이후에는 다른 VPC로 마이그레이션할 수 없음에 유의하십시오.

1.11 - [추가 연결 구성]을 클릭합니다.

1.12 - 서브넷 그룹에 대한 기본값을 선택합니다.

1.13 - VPC 보안 그룹에서 [새로 만들기]를 선택합니다. 3306 포트에서 수신 TCP 연결을 허용하는 보안 그룹이 있는 경우에는 이 그룹을 대신 사용해도 됩니다.

1.14 - 새 VPC 보안 그룹 이름으로 ‘aurora-tutorial’을 입력합니다.

1.15 - Data API를 활성화합니다.

추가 구성

1.16 - [삭제 보호]에서 [삭제 보호 사용]의 선택을 해제합니다.

모범 사례는 삭제 보호를 사용하는 것이지만, 자습서의 마지막에 데이터베이스를 삭제하려면 이 옵션을 선택 해제 상태로 유지합니다.

검토 및 생성

양식의 모든 필드를 빠르게 검토한 후 계속 진행합니다.

1.17 - [데이터베이스 생성]을 클릭합니다.

인스턴스가 생성되는 동안 자격 증명을 얻을 수 있는 방법을 설명하는 배너가 표시됩니다. 이때만 이 암호를 볼 수 있기 때문에 자격 증명을 저장할 수 있는 좋은 기회입니다.

클러스터 ARN 가져오기

1.18 - 데이터베이스 이름을 클릭합니다.

1.19 - [구성] 탭에서 클러스터 ARN을 복사하여 보관합니다. 나중에 이 ARN이 필요합니다.

데이터베이스에 연결

1.20 - 왼쪽 패널을 열고 [쿼리 편집기]를 클릭합니다.

1.21 - ‘database-1’을 선택하고 데이터베이스 사용자 이름 ‘postgres’와 앞에서 생성한 데이터베이스 암호를 입력한 후 데이터베이스 이름으로 ‘postgres’를 입력합니다.

1.22 - [데이터베이스에 연결]을 클릭합니다.

1.23 - 이제 [실행]을 클릭하고 샘플 쿼리를 실행할 수 있습니다.

1.24 - 다음 쿼리를 실행하여 데이터베이스를 생성합니다.

CREATE DATABASE tutorial;

1.25 - [데이터베이스 변경]을 클릭합니다.

1.26 - 데이터베이스를 방금 생성한 데이터베이스로 변경합니다.

1.27 - 다음 쿼리를 사용하여 테이블을 생성합니다.

CREATE TABLE sample_table(received_at TIMESTAMP, message VARCHAR(255));

쿼리 편집기를 사용하여 데이터베이스에 연결하면 나중에 Lambda 함수에서 사용할 보안 정보가 생성됩니다. 이 자습서의 끝부분에서 몇몇 쿼리를 실행하는 데 필요하므로 이 탭은 열어 둡니다.

보안 정보 ARN 복사

새 탭을 열고 AWS Secrets Manager로 이동합니다. 그런 다음 아래 단계를 따라 보안 정보 ARN을 가져옵니다. 

1.28 - “RDS database postgres credentials for database-1”이 포함된 보안 정보를 찾습니다.

1.29 - 보안 정보 이름을 클릭한 후 보안 정보 ARN을 복사하여 보관합니다.

2단계: AWS Cloud9 환경 생성

새 탭을 열고 AWS Cloud9 콘솔로 이동합니다. 그리고 아래 단계를 따라 새로운 환경을 생성합니다. 

2.1 - [환경 생성]을 클릭합니다.

2.2 - 새 환경의 이름을 입력하고 [다음 단계]를 클릭합니다.

2.3 - 아래로 스크롤하고 [다음 단계]를 클릭합니다.

2.4 - [환경 생성]을 클릭합니다.

2.5 - 환경이 준비되면 [Lambda 함수 생성]을 클릭합니다.

2.6 - 함수의 이름으로 “auroratest”를 입력합니다. [다음]을 클릭합니다.

2.7 - [비어 있는 python] 블루프린트를 선택하고 [다음]을 클릭합니다.

2.8 - 다음 화면에서 [다음], [다음], [종료]의 순서로 클릭합니다.

이제 환경이 준비되었으며 Lambda 함수에 대한 블루프린트를 확인할 수 있습니다.

코딩을 시작하기 전, 3단계의 설명과 같이 권한을 구성해야 합니다. 이 환경을 개방형으로 유지하고 다른 탭을 사용하여 향후 단계를 완료하십시오.

3단계: 권한 구성

새 탭을 열고 AWS IAM 콘솔로 이동합니다. 그런 다음 아래 단계를 따라 Lambda 함수에 권한을 할당합니다.

3.1 - [역할]을 클릭하고 ‘cloud9-’으로 시작하는 역할을 검색합니다.

3.2 - 역할 이름을 클릭한 후 [정책 연결]을 클릭합니다.

3.3 - ‘AmazonRDSDataFullAccess’ 정책을 선택한 후 [정책 연결]을 클릭합니다.

정책이 성공적으로 연결되었음을 설명하는 연한 녹색 배너가 포함된 화면이 표시됩니다.

4단계: AWS Lambda 함수 생성

2단계에서 생성한 Cloud9 환경으로 이동한 후 아래 지침을 따릅니다.

4.1 - 콘솔에서 다음 명령을 실행하여 auroratest 디렉터리로 이동합니다.

$ cd auroratest

4.2 - 콘솔에서 다음 명령을 실행하여 boto3 종속 항목을 설치합니다.

$ pip install boto3 -t boto3

4.3 - lambda_function 파일의 코드를 삭제하고 대신 이 샘플 코드를 복사합니다.

4.4 - cluster_arn 및 secret_arn 값을 이전 단계에서 얻은 클러스터 ARN 및 보안 정보 ARN 값으로 바꿉니다.

4.5 - [파일] > [저장]을 클릭한 다음 오른쪽 패널에서 Lambda 함수를 선택합니다.

4.6 - 위쪽 화살표를 클릭하여 Lambda 함수를 배포합니다.

5단계: Amazon SNS 주제 생성

Lambda 함수는 마이크로서비스 및 서버리스 애플리케이션을 위한 pub/sub 메시징을 제공하는 Amazon Simple Notification Service(SNS)의 메시지를 처리합니다.

새 탭에서 SNS 대시보드를 방문하고 다음 지침을 따릅니다.

5.1 - [주제 이름]에 aurora-lambda-sns-test를 입력한 후 [다음 단계]를 클릭합니다.

5.2 - 기본값을 모두 그대로 두고 [주제 생성]을 클릭합니다.

주제가 성공적으로 생성되었음을 나타내는 녹색 배너가 표시됩니다.

5.3 - SNS ARN을 복사하여 보관합니다.

Lambda 함수가 방금 생성한 주제에서 읽도록 구성된 후 이 탭을 사용하여 메시지를 게시해야 하므로 이 탭을 열어 두십시오.

6단계: Amazon SNS 주제에 AWS Lambda 함수 추가

AWS Lambda 관리 콘솔로 이동한 후 다음 지침을 따릅니다.

6.1 - 4단계에서 생성한 Lambda 함수의 이름을 클릭합니다.

6.2 - [트리거 추가]를 클릭합니다.

6.3 - ‘SNS’를 입력하고 드롭다운 메뉴에서 [SNS]를 선택합니다.

6.4 - [SNS 주제] 필드에 SNS ARN을 입력합니다.

6.5 - 트리거를 활성화하고 [추가]를 클릭합니다.

7단계: 테스트 메시지 게시

SNS 대시보드로 이동하고 다음 지침을 따릅니다.

7.1 - [메시지 게시]를 클릭합니다.

7.2 - [제목] 필드의 값을 입력합니다.

7.3 - [본문] 필드의 값을 입력합니다.

7.4 - 아래로 스크롤하고 [메시지 게시]를 클릭합니다.

메시지가 게시되면 Lambda 함수가 해당 메시지를 소비하고 처리합니다. 다음 섹션에서는 Aurora 데이터베이스에 데이터가 기록된 방식을 확인합니다.

데이터베이스 변경 사항 확인

7.5 - 쿼리 편집기를 열어 둔 탭으로 이동합니다. 이 탭을 닫았으면 RDS 대시보드를 방문해서 1.20에 설명된 대로 쿼리 편집기에 연결합니다.

7.6 - ‘tutorial’ 데이터베이스에 연결합니다.

7.7 - 샘플 테이블의 모든 레코드를 선택합니다.

SELECT * FROM sample_table;

7.8 - [실행]을 클릭하고 아래로 스크롤하여 결과를 봅니다.

이제 모두 제대로 작동해야 합니다. SNS를 통해 전송하는 메시지를 변경해 보거나, 원하는 방식으로 lambda_handler 함수를 변경할 수 있습니다.

8단계: 정리

이 자습서의 마지막으로 Lambda 함수, Cloud9 환경, 데이터베이스를 연결하기 위한 암호 및 기타 모든 남은 항목과 함께 더 이상 필요하지 않은 Aurora DB 클러스터를 삭제하는 방법에 대해 학습합니다.

Lambda 함수 삭제

8.1 - AWS Lambda 관리 콘솔로 이동하여 Lambda 함수를 선택합니다.

8.2 - [작업] > [삭제]를 클릭합니다.

SNS 주제 삭제

8.3 - SNS 대시보드로 이동하여 왼쪽 창에 있는 [주제]를 클릭합니다.

8.4 - 5단계에서 생성한 주제를 선택하고 [삭제]를 클릭합니다.

8.5 - 확인을 요청하는 메시지가 표시됩니다. “delete me”를 입력하여 확인하고 [삭제]를 클릭합니다.

Cloud9 환경 삭제

8.6 - AWS Cloud9 콘솔로 이동하여 이 자습서에서 생성한 환경을 선택합니다.

8.7 - [삭제]를 클릭합니다.

8.8 - 확인을 요청하는 메시지가 표시되면 “Delete”를 입력하고 [삭제] 버튼을 클릭합니다.

Aurora 서버리스 데이터베이스 삭제

8.9 - Amazon RDS 콘솔로 이동하여 이 자습서용으로 생성한 데이터베이스를 선택합니다.

8.10 - [작업] > [삭제]를 클릭합니다.

최종 스냅샷 생성 여부를 묻는 메시지가 표시됩니다. 최종 스냅샷을 생성하는 것은 권장되지만, 이 자습서에서는 필요하지 않습니다.

8.11 - 확인을 요청하는 메시지가 표시되면 최종 스냅샷 생성 여부를 묻는 질문에서 [아니요]를 선택합니다. 그리고 [확인]을 선택하고 [DB 클러스터 삭제]를 클릭합니다.

암호 삭제

8.12 - AWS Secrets Manager로 이동하여 [데이터베이스-1에 대한 RDS 데이터베이스 관리자 자격 증명]이 포함된 암호를 찾은 후 암호의 이름을 클릭합니다.

8.13 - [작업] > [암호 삭제]를 클릭합니다.

8.14 - 암호는 즉시 삭제할 수 없습니다. 예약된 삭제의 최소 대기 기간은 7일입니다. 7일을 선택하고 [삭제 예약]을 클릭합니다.

IAM 역할 삭제

8.15 - AWS IAM 콘솔로 이동합니다. [역할]을 클릭하고 “cloud9-”으로 시작하는 역할을 찾습니다.

8.16 - 역할을 선택하고 [역할 삭제]를 클릭합니다.

8.17 - 확인을 요청하는 메시지가 표시되면 “예, 삭제합니다.”를 클릭합니다.

축하합니다!

Aurora의 Data API를 통해 Aurora 서버리스 데이터베이스를 생성하여 AWS Lambda 함수와 연결했습니다. Amazon Simple Notification Service(SNS)를 Lambda 함수의 트리거로 구성했으며, SNS를 통해 전송한 메시지가 처리되어 Aurora 서버리스 데이터베이스에 저장되었습니다.

이 자습서가 유용했습니까?

감사합니다.
좋아하는 사항을 알려주세요.
실망을 드려 죄송합니다.
오래되었거나 혼란스럽거나 부정확한 사항이 있습니까? 피드백을 제공하여 이 자습서를 개선할 수 있도록 도와주십시오.

Amazon Aurora 기능에 대해 자세히 알아보기

Amazon Aurora 사용 설명서를 참조하여 Amazon Aurora의 기능에 대해 자세히 알아보십시오.

Amazon Aurora 모범 사례

데이터를 사용하거나 Amazon Aurora 데이터베이스 클러스터로 마이그레이션하기 위한 일반적인 모범 사례와 옵션에 대해서 설명합니다.

서버리스에 대해 자세히 알아보기

서버리스 애플리케이션에 대해 자세히 알아보려면 AWS Lambda 설명서Aurora 사용 설명서를 참조하십시오.