끄적끄적 아무기록

AWS_AWS 관리형 서비스로 서버 없는 아키텍처 구현(1)

by 현생사는갓생지망생
반응형

AWS 관리형 서비스로 서버 없는 아키텍처 구현

 


본 실습에서는 AWS 관리형 서비스를 사용하여 서버 없는 아키텍처를 구현한다.

시스템이 트랜잭션 파일을 수신한 뒤 자동으로 그 콘텐츠를 데이터베이스에 로드하고 알림을 보낸다.

이러한 작업이 Amazon EC2 서버를 전혀 사용하지 않고 이루어진다.



시나리오





1.  트랜잭션 파일을 Amazon S3 버킷으로 업로드한다.


2.  AWS Lambda 함수를 트리거한다. AWS Lambda 함수는 파일을 읽고 레코드를 두 개의

Amazon DynamoDB 테이블에 삽입한다.


3.  또 다른 AWS Lambda 함수를 트리거한다. AWS Lambda 함수는 고객 총계를 계산하고,

계정 잔액이 1,500 USD 이상이면 SNS 주제로 메시지를 전송한다.


4.  그런 다음 Amazon SNS가 이메일 알림을 전송하고 Amazon Simple Queue Service(SQS)

대기열에 메시지를 저장하여 고객과 채권 추심 부서에 알린다.

 


 

목표


1. AWS 관리형 서비스를 사용하여 서버 없는 아키텍처 구현

2. Amazon S3 Amazon DynamoDB로부터 AWS Lambda 함수 트리거

 



작업 1: Lambda 함수를 생성하여 트랜잭션 파일 처리

 



이번 작업에서는 AWS Lambda 함수를 생성하여 트랜잭션 파일을 처리한다.

Lambda 함수는 파일을 읽고 *CustomerTransactions DynamoDB 테이블에 정보를 삽입한다.

 




AWS Management ConsoleServices 메뉴에서 Lambda를 선택 후 Create a function를 클릭한다.

 




Name : TransactionProcessor

Runtime : Python 2.7

Role : Choose an existing role

Existing role : TransactionProcessorRole

이 역할을 사용하면 Lambda 함수에 Amazon S3Amazon DynamoDB에 접근할 수 있는 권한을 제공한다.

설정을 완료했다면 Create function을 클릭한다.

 




Function code 섹션에서 섹션 아래에 보이는 사전에 제공된 모든 코드를 제거하고 아래의 코드를 적어준다.

 





1.  이벤트를 트리거 한 Amazon S3에서 파일 다운로드

2.  파일 내 각 줄 반복 처리

3.  데이터를 Customer Transactions DynamoDB 테이블에 삽입

 





페이지 아래쪽의 Basic settings 섹션에서 위와 같이 구성한다.

Description : Process data and send to DynamoDB tables

Timeout : 20 sec

 





이제 람다 함수를 시작할 트리거를 정의할 것이다.

페이지 상단의 Add triggers로 스크롤하여 S3를 클릭한다.

 




Configure triggers로 스크롤을 내려서 위와 같이 구성한다.

Bucket : inputs3bucketfortransact 라는 문자열이 포함된 버킷을 선택한다.

Event type : Object Created(All)

Amazon S3 버킷에 오브젝트가 생성될 때마다 Lambda 함수가 실행된다.

설정을 완료하였다면 Add를 클릭 후 화면 상단의 Save를 클릭한다.




 


이제 선택한 Amazon S3 버킷에 파일이 업로드 될 때마다 이 Lambda 함수가 실행된다.

함수는 업로드 된 파일에서 데이터를 읽고 찾아낸 데이터를 DynamoDBCustomer Transactions 테이블에 저장한다.

 



작업 2: Lambda 함수를 생성하여 트랜잭션 총계를 계산하고 계정 잔액이 높으면 알림



이번 작업에서는 AWS Lambda 함수를 생성하여 트랜잭션 총계를 계산하고 계정 잔액이

1,500 USD를 초과하면 Simple Notification Service 알림을 전송한다.

 





왼쪽 탐색 창에서 Functions를 클릭하여 Create function을 클릭한다.

Name : TotalNotifier

Runtime : Python 2.7

Role : Choose an existing role

Existing role : TotalNotifierRole

이 역할은 Amazon DynamoDB Amazon Simple Notification Service(SNS)에 액세스하는 데

필요한 실행 권한을 AWS Lambda에 부여한다.

설정을 완료하였다면 Create function을 클릭한다.

 




Function code 섹션에서 섹션 아래에 보이는 사전에 제공된 모든 코드를 제거 후

아래의 코드를 적어준다.







1.  Amazon SNSAmazon DynamoDB에 연결

2.  트랜잭션 총계를 계산하고 TransactionTotalDynamoDB 테이블에 저장

3.  트랜잭션 총계가 1,500 USD 이상이면 Amazon SNS로 알림 전달





페이지 아래쪽의 Basic settings 섹션에서 위와 같이 구성한다.

Description : Update total, send notification for balance exceeding $1500

Timeout : 20 sec

 





페이지 상단의 Add triggers로 스크롤하여 DynamoDB를 클릭한다.

 




DynamoDB table : Transactions

Starting position : Latest

Starting positionDynamoDB에 추가된 최신 정보를 처리할지 아니면, 사용 가능한 가장 예전

데이터(Trim Horizon이라고 함)를 처리할지를 Lambda에 알려준다. 이 함수는 Latest 정보를 사용한다.

설정을 완료하였다면 Add를 클릭하고 화면 상단의 Save를 클릭한다.

이제 Transactions DynamoDB 테이블이 업데이트될 때마다 이 함수가 각 고객의 트랜잭션 총계를

계산하고 TransactionTotalDynamoDB 테이블에 저장한다. 총계가 1,500 USD를 초과하면 Simple

Notification Service 주제에 메시지를 전송하여 고객과 채권 추심 부서에 알린다.

 

 


작업 3: Simple Notification Service(SNS) 주제 생성



이번 작업에서는 계정 잔액이 1,500 USD를 초과하면 Lambda 함수로부터 알림을 받을 SNS

topic을 생성한다. 또한, 이메일 주소나 SMS(선택 사항)로 주제를 구독한다.

 




Services 메뉴에서 Simple Notification Service를 클릭 후 Get started를 클릭한다.

 





Create topic을 클릭한다.

 




Topic name : HighBalanceAlert

Display : HighAlert

설정을 완료했다면 Create topic을 클릭한다.

 





Create subscription을 클릭한다.

 




Protocol : Email

Endpoint에는 자주 사용하는 이메일 주소를 입력한다. 실습에서 생성한 SNS 주제가 입력한 이메일로 알림을 전송한다.

Create subscription을 클릭하면 확인 요청이 입력한 이메일 주소로 발송된다

알림을 받으려면 구독 확인을 해야 한다.

 







방금 제공한 이메일 계정에서 HighAlert으로부터 받은 새 이메일을 확인한다. 이메일이 도착하면,

본문에 있는 Confirm subscription 링크를 클릭한다.

이제 Simple Notification Service 주제가 메시지를 받을 때마다 이메일로 알림을 전송한다.


선택 사항: SMS를 통해 휴대폰으로 메시지를 수신할 수도 있다.

-       Create subscription 클릭

-       Protocol에서 SMS 선택

-       Endpoint에 국제 번호 형식으로 휴대폰 번호 입력(: +14155557000)

-       Create subscription 클릭

 





링크를 클릭하면 위와 같은 화면이 보인다.





반응형

블로그의 정보

현생이네

현생사는갓생지망생

활동하기