끄적끄적 아무기록

AWS_SNS 주제로 알림을 사용하여 AWS Lambda 트리거

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

알림을 사용하여 AWS Lambda 트리거

 


상당수의 AWS 서비스는 이벤트가 발생하면 자동으로 알림을 생성할 수 있다. 이러한 알림을

사용하여 사람이 개입하지 않고도 자동화된 동작을 수행할 수 있다.

이번 실습에서는 AWS Lambda 함수를 생성한다. AWS Lambda 함수는 자동으로 Auto Scaling

실행하는 새 Amazon EC2 인스턴스를 태그하고 스냅샷을 남긴다.

 


실습 시나리오


1. 이미 구성해 둔 Auto Scaling group이 있다.


2. Auto Scaling을 트리거 하여 스케일아웃하고 새로운 Amazon EC2 인스턴스를 실행한다.


3. 이 인스턴스가 Amazon Simple Notification Service(SNS) 주제로 알림을 전송한다.


4. SNS 주제는 다음 작업을 수행하는 AWS Lambda 함수를 트리거 한다.

a) 인스턴스에 연결된 Amazon EBS 볼륨의 스냅샷을 생성한다.

b) 인스턴스에 태그를 추가한다.

c) Amazon CloudWatch 로그에 로그 정보를 전송한다.

 




본 실습에서는 다음 작업을 수행한다.

- Auto Scaling 이벤트에 대한 알림의 대상이 되는 Amazon Simple Notification Service(SNS) 주제를 생성한다.

- 새 Amazon EC2 인스턴스가 시작되면 알림을 전송하도록 Auto Scaling 그룹을 구성한다.

- Lambda 함수가 필요한 권한을 보유한 IAM 역할을 구성한다.

- Amazon SNS 주제로부터 Auto Scaling 이벤트가 발생했다는 메시지를 수신하면 호출되는 AWS Lambda 함수를 생성한다.

 



목표


1.     알림을 전송하도록 Auto Scaling을 구성한다.

2.     알림에 응답하도록 AWS Lambda 함수를 생성한다.

 



작업 1: SNS 주제 생성


Auto Scaling 그룹이 알림 대상으로 사용할 Amazon Simple Notification Service(SNS) 주제를 생성한다.

 




AWS Management ConsoleService 메뉴에서 Simple Notification Service를 선택한다.

Get started를 클릭한다.

 





Create topic을 클릭한다.





Topic name : ScaleEvent

Display name : ScaleEvent

이제 주제가 알림을 받을 준비가 되었다.

 



작업 2: Auto Scaling을 구성하여 이벤트 전송


Auto Scaling 그룹을 구성하여 새로운 Amazon EC2 인스턴스가 그룹에서 시작될 때 SNS 주제에 알림을 전송한다.

 



Services 메뉴에서 EC2을 선택 후 왼쪽 탐색 창에서 Auto Scaling Groups를 클릭한다.

Notifications 탭의 Create notification을 클릭한다.

Sent a notification to: 에서 ScaleEvent를 선택하고 옵션은 launch만 선택한다.

이제 Auto Scaling 그룹에서 새 인스턴스가 시작될 때마다 Auto ScalingSNS 주제에 메시지를 전송한다.

 



작업 3: Lambda 함수를 위한 IAM 역할 생성


EC2 인스턴스에서 작업을 수행하고 Amazon CloudWatch 로그에 메시지를 기록할 권한이 있는

IAM role을 생성한다. 추후 이 역할은 Lambda 함수와 연결할 것이다.

 



Services 메뉴에서 IAM을 선택하여 왼쪽 탐색 창에서 Roles를 클릭한다.

Create role을 클릭한다.

 





AWS service를 선택한 후 Lambda를 클릭한다.

Lambda 함수가 사용자를 대신하여 AWS 서비스에 접근하는 것을 허용한다.

 






실습에서는 Amazon EC2 명령을 호출하는 모든 권한을 포함하여 사전에 구성한 정책을 사용할

것이다. 이러한 유형의 정책은 시스템 관리자가 유지 관리할 수 있다.

또한 나중에 LambdaCloudWatch 로그에 로그 파일을 보낼 수 있는 권한을 부여하는 정책을 첨부할 것이다.

AmazonEC2FullAccess, AWSLambdaExecute 2가지를 체크한다.

완료했다면 Next: Review를 클릭한다.





 

Role name : Snap_and_Tag

 






이제 IAM 역할에는 스냅샷 생성이나 태그 추가와 같은 Amazon EC2 인스턴스에서의 작업을 

수행할 권한과, Lambda 함수의 디버깅을 위해 Amazon CloudWatch에 로그 저장을 수행할 권한이 있다.

이 역할(Role)은 다음 작업 단계에서 Lambda 함수에 사용할 것이다.




작업 4: Lambda 함수 생성



이번 작업에서는 Auto Scaling이 새 EC2 인스턴스를 시작할 때 Amazon SNS가 호출할 AWS

Lambda 함수를 생성한다. Lambda 함수는 인스턴스에 연결된 Amazon EBS 볼륨의 스냅샷을

생성한 뒤 인스턴스에 태그를 추가한다.

 




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

 





Name : Snap_and_Tag

Runtime : Python 2.7

Role : Choose an existing role

Existing role : Snap_and_Tag

이 역할은 Lambda 함수가 EC2 인스턴스의 태그와 스냅샷을 생성할 수 있도록 권한을 부여한다.

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

 





함수를 설정하기 위한 페이지가 보여진다.

Function code 섹션의 코드 에디터에서 사전에 표시된 코드를 지우고 아래의 코드를 붙여 넣는다.

 




1. 알림 메시지로부터 EC2 인스턴스 ID 추출

2. 인스턴스에 연결된 모든 EBS 볼륨의 스냅샷 생성

3. 인스턴스에 태그를 추가하여 스냅샷이 생성된 것을 나타냄.

 





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

Description : Snapshot and tag EC2 instance

Timeout : 3 min 0 sec

 






페이지 상단의 Add triggers에서 SNS를 클릭한다.






Configure triggers로 스크롤하여 SNS topicScaleEvent를 선택한다.

Amazon SNSScaleEvent 주제가 Auto Scaling으로부터 알림을 받을 때 이 Lambda 함수를 호출한다.

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

이제 Auto Scaling이 새 인스턴스를 시작하면 Lambda 함수가 자동으로 실행된다.

 



작업 5: Auto Scaling 그룹을 스케일아웃하여 Lambda 함수 트리거


이번 작업에서는 Auto Scaling 그룹의 desired 용량을 증가시킨다.

이렇게 하면 Auto Scaling 그룹은 증가한 용량 요구 사항을 충족하기 위해 Amazon EC2 인스턴스를 시작한다.

그런 다음 Auto ScalingScaleEvent SNS 주제에 알림을 전송한다.

알림을 전송하고 나면 Amazon SNS Snap_and_Tag Lambda 함수를 호출한다.

 



Services 메뉴에서 EC2 선택 후 Auto Scaling Groups를 클릭한다.

화면 아래쪽의 Details 탭에서 Edit를 클릭하고 Desired Capacity2를 입력한다.

그러면 Auto Scaling이 추가 Amazon EC2 인스턴스를 시작한다.

 





Activity History 탭에서 시작한 새 EC2 인스턴스 진행률을 모니터링한다.

상태가 변경되어 Successful로 될 때까지 대기한다. 상태가 업데이트되면 Lambda 함수가

제대로 실행되었는지 확인 가능하다.

 







왼쪽 탐색 창에서 Instances를 클릭하고 시작 시간이 가장 최근인 인스턴스의 행을 클릭한다.

인스턴스의 Launch Time 열을 보려면 오른쪽으로 스크롤해야 한다.

화면 아래쪽의 Tags 탭을 클릭하면 KeySnapshots이고 ValueCreated인 태그가 보인다.

Lambda 함수가 EC2 인스턴스에 추가한 태그이다.

 






왼쪽 탐색 창에서 Snapshots를 클릭하면 스냅샷 창에서 Lambda 함수가 생성한 두 개의

스냅샷이 보일 것이다. 태그나 스냅샷이 생성되지 않았다면, Lambda 함수에 오류가 발생했거나

실행되지 않은 것이다.

 



반응형

블로그의 정보

현생이네

현생사는갓생지망생

활동하기