BE전문가 프로젝트

2. AWS에서 웹 애플리케이션 배포 본문

AWS 실습

2. AWS에서 웹 애플리케이션 배포

원호보고서 2021. 12. 15. 01:03
실습목표
Amazon RDS를 사용하여 데이터베이스 시작
Amazon EC2를 사용하여 애플리케이션 서버 시작
EC2 인스턴스에 애플리케이션 자동설치

보안구성

아키택처의 각 계층, 즉 애플리케이션, 서버, 네트워크를 비롯해 인터넷에 연결할 때도 보안을 구현해야한다.

 

 

1. ec2 클릭후 왼쪽 상단에 New EC2 Experience가 되어있는지 확인한다.

 

2. 왼쪽 탭에 보안그룹을 선택 후 새 보안그룹 생성을 클릭한다.

 

3. 기본 세부 정보에 정보를 넣는다.

이번에는 그룹이름 : APP-SG

            설명 : Allow Http Access

            VPC : LAB VPC

 

4. 인바운드 규칙을 설정해준다. Http, Anywhere-IPv4

 

5. 보안그룹 선택을 누른다.

- 이후 실습에서 앱서버를 시작할 때 이 보안 그룹을 사용할 예정이다.

 

데이터베이스 보안 그룹을 구성하고 앱 서버에서 수신되는 데이터베이스 연결을 허용하도록하는 작업

6. 왼쪽 탭에 보안그룹 선택 후 보안그룹생성을 클릭한다.

 

7. 기본 세부 정보에 정보를 넣는다.

이번에는 그룹이름 : DB-SG

            설명 : Allow DB Access

            VPC : LAB VPC

 

8. 인바운드 규칙을 설정한다. 유형 : MY SQL 소스는 돋보기 버튼을 누른 후 Http에서 만든 보안그룹인 APP_SG를 선택한다.

-한 보안그룹이 다른 보안 그룹을 참조하는 기능이며 강력한 보안을 가지고 있다. 따라서 추가 EC2 I를 애플리케이션 보안 그룹과 연결하여 데이터베이스에 엑세스할 수 있는 권한을 부여해준다. 쉽게 말하면 통신이 가능하다는 것이다.

 

Amazon RDS 데이터베이스 생성

 

- VPC에서 MySQL 데이터베이스를 생성한다.

1. 서비스에서 RDS를 클릭 후 데이터베이스 생성을 클릭한다.

 

2. 데이터베이스 생성 방식 선택에서 표준생성을 클릭하고 엔진유형은 MY SQL을 선택한다. 템플릿은 개발/테스트를 선택한다.

- 자격증명, 인스턴스 크기, 스토리지 유형 및 양과 같은 데이터베이스 설정 구성을 할 수 있다.

 

3. Setting에서 세부사항을 적어준다.

이번에는 DBinstance identifier : Allow DB access

            Master username : dbadmin

            password : lab-password

 

4. DB사이즈를 선택해준다. Bustable classes (includes t classes) - db.t2.micro를 선택해준다.

 

5. Connectivity에서 vpc 선택 하고 Security 그룹을 선택해준다.

vpc - Lab VPC

security group : DB-SG

 

6. Additional configuration(추가구성)을 확장 후 작성해준다

initial database name(초기 데이터베이스 이름) :inventory 

Enable Enhanced monitoring(Enhanced 모니터링활성화) : 선택 취소

 

7. 생성을 누른다.

 

Amazon EC2를 사용하여 애플리케이션 서버 시작

EC2 I를 시작하여 애플리케이션을 실행할 준비가 다 되었고 시작할 때 애플리케이션을 자동으로 설치하는 구성 스크립트가 제공된다. 이전에 DB보안그룹과 HTTP보안그룹을 연결했으니 인터넷에서 액세스가 허용될 것이다.

 

1. EC2 클릭 후 Launch instance 섹션으로 이동 후 주황색 버튼을 클릭한다.

 

1단계 : AMI 선택

2. Amazon Linux 2 AMI에서 Select를 클릭한다.

 

2단계 : 인스턴스 유형 선택

-이제 인스턴스 유형을 선택할 수 있으며 각 인스턴스 유형은 가상 CPU, 메모리, 디스크 스토리지, 네트워크 성능 조합을 할당한다. 

3. t2.micro를 선택 후 next를 누른다.

 

3단계 : 인스턴스 구성

인스턴스 수와 네트워크 구성같은 인스턴스 세부 정보를 구성하는 단계이다.

 

4. network : Lab VPC

   subnet : Public Subnet 1

   IAM role : inventory-App-Role

  IAM Role에 다음 정책을 연결되어 인스턴스에서 실행중인 애플리케이션이 AWS서비스로 요청할 권한을 부여한다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "ssm:*",
            "Resource": "arn:aws:ssm:*:*:parameter/inventory-app/*",
            "Effect": "Allow"
        }
    ]
}

이 역할은 AWS Systems Manger Parameter Store 내에 있는 inventory-App설정에 액세스할 권한을 부여한다. 구성 설정을 저장할 때 사용된다.

 

5. Advenced Details섹션확장 후 userdata필드를 본다.

  - 인스턴스 시작 시 UserData를 통해 구성 스크립트를 전달 할 수 있다. 다음 스크립트를 통해 구성작업을 수행하고 소프트 웨어를 설치할 수 있다.

 

6. User data에 아래 스크립트를 복사하여 붙여넣고 Next : add storage를 클릭한다

#!/bin/bash
# Install Apache Web Server and PHP
yum install -y httpd mysql
amazon-linux-extras install -y php7.2
# Download Lab files
wget https://us-west-2-tcprod.s3.amazonaws.com/courses/ILT-TF-200-ARCHIT/v6.8.27/lab-2-webapp/scripts/inventory-app.zip
unzip inventory-app.zip -d /var/www/html/
# Download and install the AWS SDK for PHP
wget https://github.com/aws/aws-sdk-php/releases/download/3.62.3/aws.zip
unzip aws -d /var/www/html
# Turn on web server
chkconfig httpd on
service httpd start

- Aphache 웹서버와 PHP언어 설치

- Inventory 애플리케이션 및 AWS 소프트웨어 개발키트(SDK) 다운로드

- 웹서버를 활성화하여 부팅 시 자동으로 시작되도록 구성

 

이러한 작업으로 인해 로그인하여 수동으로 소프트웨어를 구성할 필요없이 새 인스턴스를 구성할 수 있다.

 

4단계 : 스토리지 추가

- EBS 디스크 볼륨을 추가하고 크기와 성능을 구성할 수 있다.

이번과정에서는 기본 디스크 크기를 사용하기때문에 바로 태그추가로 넘어간다.

 

5단계 : 태그 추가

- 태그를 사용하여 목적, 소유자 및 환경 등 다양한 방식으로 AWS 리소스를 분류할 수 있다. 특히 동일한 유형의 리소스가 여러개일 때 유용하며 특정 리소스를 태그를 통해 쉽게 찾을 수 있다. 각 태그는 키, 값으로 구성되어있다.

 

7. Add Tag를 클릭후 내용을 넣은 다음 Configure Security Group을 클릭한다.

key : Name

Value : App Server

 

6단계 보안 그룹 구성

- App-SG인스턴스를 연결하는 작업이다.

 

8. Assign a security Group에서 existing security group을 클릭한다음 App-SG를 선택한다.

- 인바운드 규칙이 표시되고 인터넷 상의 모든 곳(0.0.0.0/0)에서 오는 HTTP 트래픽이 허용됨을 확인한다.

 

9. Review and Launch를 클릭한다.

 

7단계 검토

 

10. launch를 클릭 후 proceed without keypair을 선택한다. 그 후 l acknowledge that..을 선택한다 launch instances를 클릭한다.

 

 

애플리케이션 테스트

- 애플리케이션이 작동하는지 확인하는 단계이다. EC2 인스턴스의 IP주소를 통해 웹 애플리케이션에 액세스 할 수 있다.

 

11. EC2 Management Console에서 AppServer를 클릭한다.

 

12 Details 탭에서 ipv4 public ip를 클립보드에 복사한다.

 

13. 복사한 ip를 url에 넣고 결과를 확인한다.

- 아직 애플리케이션이 DB에 연결되지 않았기 때문에 표시되는 정보는 거의 없는 상태이다.

 

14. AWS Mangement Console로 돌아가 RDS를 선택한 후 왼쪽 탐색창 Database를 클릭한다.

 

15. inventory-db식별자를 클릭한다.

 

16. Connectivity & security 섹션으로 스크롤 한 다음 Endpoint를 클립보드에 복사한다.

 

17. 다시 웹 브라우저를 선택하고 Setting을 클릭하고 다음을 구성한 후 Save를 누른다.

endpoint : 클립보드 복사한 것 붙여넣기

DataBase : inventory

UserName : dbabin

Password : lab-password

 

- 이 애플리케이션을 사용하면 매장 재고에서 품목을 추가, 편집 또는 삭제할 수 있다. 

- 재고정보는 앞에서 생성한 Amazon RDS MYSQL Database에 저장된다. 따라서 서버에 장애가 발생하더라도 데이터가 손실되지 않는 것을 의미하며 여러 애플리케이션 서버에서 동일한 데이터에 액세스 할 수 있다.

 

 

 

Comments