Elastic Beanstalk_실습
by 현생사는갓생지망생AWS Elastic Beanstalk 활용하여 웹 앱 배포
이번 실습에서는 고객들이 연락처 정보를 제출하고, 개발 중인 가상 앱의 미리 보기에
대한 관심을 표시하도록 하는 예제 앱을 배포한다.
서버 측 JavaScript를 이용해 네트워크 애플리케이션을 구축하는 플랫폼인 Node.js를 기반으로 구축한다.
먼저 앱을 위한 코드를 다운로드한다. AWS Labs GitHub 리포지토리에서 다운로드 가능하다.
https://github.com/aws-samples/eb-node-express-signup
1. IAM 정책 및 역할 생성
앱이 Amazon SNS 통지를 게시하고 DynamoDB 테이블에 항목을 집어넣을 수 있도록
권한을 부여하는 IAM 역할을 생성해야 한다.
Elastic Beanstalk 환경을 생성할 때 사용자의 애플리케이션을 실행하는 EC2 인스턴스에 이 역할을 적용한다.
IAM 콘솔을 열어 탐색 창에서 정책을 클릭한다.
정책은 사용자, 그룹, 또는 역할에 할당할 수 있는 AWS 권한을 정의한다.
시각적 편집기에서 JSON을 사용하여 정책을 생성하고 편집할 수 있다.
Create policy를 클릭하고 JSON을 선택한다.
위에서 다운로드 받은 코드 중 iam_policy.json 파일을 복사하여 붙여넣기한다.
정책의 이름을 지정하고 Create policy를 클릭한다.
IAM 역할을 생성하여 여기에 정책을 연결한다.
탐색 창에서 역할을 선택 후 Create role을 클릭한다.
EC2를 선택하여 EC2 인스턴스가 이 역할을 사용하여 사용자를 대신해 AWS 서비스를 호출하도록 한다.
[권한 정책 연결] 페이지에서 위에서 만들어주었던 정책과 'AWSElasticBeanstalkWebTier' 정책을 선택한다.
사용자의 환경에서 인스턴스가 로그를 Amazon S3에 업로드하게 해주는 역할이다.
태그 추가는 선택 사항이니 건너뛴다.
IAM 태그는 사용자 역할에 추가할 수 있는 키-값 페어이다. 태그는 이메일 주소와 같은 사용자 정보를
포함하거나 직책과 같은 내용일 수 있다. 태그를 사용하여 이 역할에 대한 액세스를 구성, 추적 또는 제어할 수 있다.
역할 이름을 지정하고 역할을 생성한다.
2. DynamoDB 테이블 만들기
Amazon DynamoDB는 규모와 관계없이 10밀리초 미만의 지연 시간이 일관되게 요구되는
모든 애플리케이션을 위한 빠르고 유연성이 뛰어난 NoSQL 데이터베이스 서비스이다.
특히, 유연한 데이터 모델과 안정적인 성능을 갖추고 있어 모바일, 웹, 게임, 광고 기술, IoT를
비롯한 그 밖의 많은 애플리케이션에 매우 적합하다.
DynamoDB을 사용해 사용자들이 제출하는 연락처 정보를 저장한다.
기본 키는 파티션 키(해시 키)와 정렬 키(선택 사항)으로 구성된다.
파티션 키는 확장성과 가용성을 위해 호스트에 대해 데이터를 분할하는 데 사용된다.
값 범위가 광범위하고 균일하게 분산된 액세스 패턴을 가진 속성을 선택한다.
애플리케이션 구성 업데이트를 위해
위에서 다운받았던 코드 중 app_config.json 파일을 열어 아래와 같이 수정한다.
"STARTUP_SIGHUP_TABLE" : "테이블 이름",
"AWS_REGION" : "리전"
예) "AWS_REGION": "ap-southeast-2", "STARTUP_SIGNUP_TABLE": "hh-gsg-signup-table",
3. SNS 주제 생성
고객들이 양식을 제출할 때 알림을 받기를 원하므로, 다양한 프로토콜을 통해 알림을 전송할 수
있는 푸시 메시징 서비스인 Amazon SNS을 사용한다.
가입 양식의 데이터가 DynamoDB 표에 기록되면, 앱이 SNS 알림을 전송한다.
먼저, 알림을 위한 스트림인 SNS 주제를 생성한 다음 알림을 어디로 전송할 것인지 SNS에게 지시하는 구독을 생성한다.
SNS 콘솔을 열어 Create topic을 클릭하여 주제 이름을 지정한다.
Amazon SNS는 기본적으로 전송 중 암호화를 제공한다.
서버 측 암호화를 사용하면 주제에 유휴 시 암호화가 추가된다. Amazon SNS는 메시지를
수신하자마자 이를 암호화한다. 메시지 암호화는 전송되기 직전에 해제된다.
탐색 창에서 구독을 선택하여 Create subscription을 클릭한다.
주제 ARN은 방금 생성한 주제의 ARN을 복사하여 입력하고, 프로토콜은 Email, 엔드포인트에는
알림을 받을 이메일을 입력한다.
주제 세부 정보를 보면 주제 ARN을 확인 가능하다.
구독을 확인하기 위해 Amazon SNS는 [AWS Notification - Subscription Confirmation]
이라는 제목의 이메일을 사용자에게 전송한다.
이메일에 포함된 링크를 열어서 구독을 확인한다.
링크를 클릭하면 위와 같은 화면이 뜬다.
애플리케이션 구성 업데이트를 위해 주제 ARN의 문자열을 복사하여
app_config.json 파일의 "NEW_SIGHUP_TOPIC" 에 입력한다.
4. AWS Elastic Beanstalk을 이용한 앱 배포
Elastic Beanstalk를 이용해 가입 앱을 쉽게 배포할 수 있다. 앱 버전을 Elastic Beanstalk에
업로드한 다음, 앱에 대한 일부 정보를 제공한다. Elastic Beanstalk가 환경을 실행하고
코드 실행에 필요한 AWS 리소스를 프로비저닝한다.
애플리케이션 이름 및 환경 이름을 지정한다.
플랫폼은 [미리 구성된 플랫폼]을 선택하여 Node.js를 선택한다.
샘플 애플리케이션 코드를 사용하여 바로 시작하도록 구성한다.
[보안] 카드에서 수정을 클릭한다.
[IAM 인스턴스 프로파일]에는 위에서 생성한 역할을 선택한다.
설정을 완료했다면 Create app을 클릭한다.
5. 원본 번들 생성
Elastic Beanstalk는 앱을 한 개의 ZIP 파일로 번들링하도록 요구한다.
최상위 폴더를 제외하고, 하위 폴더를 포함하여 폴더 내 모든 항목들을 선택 후 압축한다.
가입 애플리케이션은 Node.js 플랫폼 설정을 구성하는 구성 파일이 있는 .ebextensions 라는 이름의
숨겨진 파일을 꼭 포함해야 한다.
6. 가입 애플리케이션 배포
Elastic Beanstalk 환경에 원본 빌드를 배포한다.
Elastic Beanstalk 콘솔에서 생성한 환경으로 들어가 [업로드 및 배포]를 클릭한다.
압축한 파일을 선택한다.
7. 앱 테스트
배포가 끝나고 환경 상태가 '녹색'으로 표시되면 앱의 URL을 복사하여 새 창에서 연다.
웹 페이지가 뜨며, [Sigh up today]를 클릭한다.
양식을 채우고 알림 수신을 확인하면 가입 앱을 테스트할 수 있다.
환경 탐색 창에서 [Configuration]을 선택하여 [환경 속성]을 연다.
THEME 환경 변수의 값을 amelia, default, slate, united 중 하나를 입력해본다.
Elastic Beanstalk가 환경 업데이트를 완료 후 새로 고침 해보면 앱의 모습이 새로워진다.
'AWS 공부기록 > Compute' 카테고리의 다른 글
Amazon Elastic Compute Cloud (0) | 2019.01.22 |
---|---|
Elastic Load Balancing(ELB) (0) | 2019.01.22 |
Amazon Elastic Block Store(EBS) (0) | 2019.01.22 |
AWS Elastic Beanstalk (0) | 2019.01.22 |
AWS Service - Lightsail (0) | 2019.01.10 |
블로그의 정보
현생이네
현생사는갓생지망생