Beanstalk은 도커 컨테이너 기반으로 애플리케이션을 쉽게 배포할 수 있고 운영 및 곤리를 지원하는 AWS 서비스이다. EC2 유형 변경, AutoScaling, Load Balancing 등을 자동으로 관리해준다. Beanstalk은 애플리케이션과 환경으로 구성되며 애플리케이션은 인스턴스의 논리적인 집합, 하위 애플리케이션 버전의 관리이고, 환경은 EC2 인스턴스, 로드밸런서, 오토스케일링 그룹 등으로 이루어진다
이번 실습에서는 beanstalk 애플리케이션이 사용자로부터 데이터를 받아 DynamoDB에 저장한 후, 다시 SNS 주제로 데이터를 보내는 기능을 할 것이다
우선 Beanstalk에게 DynamoDB, SNS에 접근할 권한을 부여해야한다
정책생성에 들어가서 DynamoDB의 모든 작업과 모든 리소스에 체크한다
권한 추가를 누르고 입력창에 "SNS"을 입력하여 DynamoDB와 동일하게 모든 작업, 모든 리소스에 체크한다
정책 이름(policy_for_beanstalk_mailing)을 설정하고 권한이 잘 선택되었는지 확인하고 [정책 생성]을 클릭한다
생성된 정책을 Beanstalk과 연결해야한다. 역할 목록에 보면 'aws-elasticbeanstalk-ec2-role'(빈스톡에서 구동되는 프로그램이 서비스에 접근할 때 사용)과 'aws-elasticbeanstalk-service-role(로그나 관리적 측면에서 사용)' 두 가지가 있는데 이 역할들은 Beanstalk을 사용하는 과정에서 생성된다. 'aws-elasticbeanstalk-ec2-role'를 클릭한다
앞서 만든 DynamoDB, SNS에 접근할 수 있는 정책(policy_for_beanstalk_mailing)과 연결한다
정책이 잘 연결되었는지 확인한다
Beanstalk 대시보드로 와서 [create Application]을 클릭한다
애플리케이션 이름을 입력한다
이번 실습은 'Node.js' 기반의 소스코드를 사용하므로 플랫폼은 Node.js를 선택한다
플랫폼 브랜치는 맨 아래 'Node.js running on 64bit Amazon Linux'를 선택한다(다른 브랜치를 선택할 경우 업로드한 애플리케이션 코드와 안맞아서 안될 수가 있다)
플랫폼 선택이 끝났으면 애플리케이션 코드 메뉴에서 '코드 업로드'를 클릭한다
로컬 파일을 클릭하고 아래에 [파일 선택] 버튼이 생기면 첨부된 압축폴더를 해제하지 말고 그대로 업로드한다
파일이 정상적으로 업로드되었으면 [애플리케이션 생성]을 클릭한다
검은색 생성화면이 나오는데 몇 분정도 기다리면 완료될 것이다
좌측 [애플리케이션] 메뉴를 클릭하면 생성된 애플리케이션을 확인할 수 있다
애플리케이션 이름을 클릭하면 아래와 같은 화면에 애플리케이션의 URL주소가 생성되어있는 것을 볼 수 있다
URL 주소를 클릭한다
웹 사이트가 뜨면 [Sign up today]를 클릭한다. 아래와 같이 입력폼이 뜨는데 여기에 입력한 데이터가 DynamoDB에 저장되는 것이다. 양식에 맞게 입력한 후 DB에 저장되는지 확인해보자
웹 사이트에서 입력한 데이터가 DB에 저장되는 것을 확인할 수 있다
이제 SNS 서비스로 이메일 주소로 데이터를 받아보자
SNS 대시보드 좌측에 [주제]를 클릭하면 'awseb-'로 시작하는 주제가 미리 생성되어 있을 것이다. 이 주제는 웹 사이트에서 사용자가 입력한 데이터를 DynamoDB에 저장하고 그 데이터를 사용자에게 보내기 위해 이용하는 SNS 주제라고 생각하면 된다
좌측에 [구독] 메뉴에 들어와서 [구독 생성]을 클릭한다
[주제 ARN]에는 방금 전 확인한 주제를 선택하고 프로토콜에는 '이메일', 엔드포인트에는 '이메일을 받을 자신의 이메일 주소'를 입력한다
설정을 마쳤으면 [구독 생성]을 클릭한다
구독자(자신의 이메일 주소)가 생성되었는지 확인한다
이메일 수신함에 가보면 AWS에서 보낸 구독 확인 메일이 왔을 것이다. 메일에 들어가서 'Confirm subscription'을 클릭하여 구독 승인을 한다
구독 승인이 완료 화면이 출력된다
'AWS' 카테고리의 다른 글
Bitnami를 이용한 gnuboard 사이트 구축 (0) | 2021.02.19 |
---|---|
EC2 인스턴스 연결 (0) | 2021.02.18 |
번역 웹 서비스(POST) (0) | 2021.02.17 |
Lambda 함수 기반 문자 알림 서비스 (0) | 2021.02.17 |
Dynamo DB CRUD (0) | 2021.02.16 |