RDS
• RDS(Relational Database service, 관계형 데이터베이스)
‣ AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스
‣경제적이고 크기 조절이 가능한 용량을 제공하고 공통 데이터베이스 관리 작업을 관리
• 스토리지 유형
‣ 범용(SSD) : 일반적으로 사용하는 SSD(무난, 가격도 적당함)
‣ 프로비저닝된 IOPS(PIOPS) : 응답 시간이 빠르고 고성능 SSD ex) 고객이 요구하는 경우, 금융(은행, 증권, 카드 등)
‣ Magnetic : 매우매우 느리고 저렴 ex) 테이프, 장기보관(병원 진료기록, 법정에서 의무 보유기간 등)
* 베포유형
‣ 단일 AZ(가용 영역)에 베포 : 가격은 저렴하지만, 가용성이 떨어짐
‣ 다중 AZ(가용영역)에 베포 : 가격은 비싸지만, 가용성이 높아짐
• 리전 및 가용 영역에 베포
‣ Local Zones를 통해 사용자에게 가까운 여러 위치에서 컴퓨팅, 스토리지 등의 리소스를 배치
‣ 모든 Amazon RDS 활동은 현재 기본 AWS 리전에서만 실행
‣ DB 인스턴스를 생성할 때 가용 영역을 선택하거나 Amazon RDS가 무작위로 가용 영역을 선택하도록 결정
‣ 다중 AZ DB 베포에서는 기본 및 세컨더리 DB 인스턴스의 가용 영역을 선택할 수 없음
• Local Zones
‣ 로컬 영역은 사용자와 지리적으로 가까운 AWS 리전의 확장
‣ 현재는 오레곤 리전에서 LA에서만 RDS 로컬
RDS를 활용하여 웹 서버와 연결하기
실습 준비 1. Private Subnet 02을 하나 더 만들고, Private Subnet 01 과 다르게 해서 생성하기 |
‣ Web Server EC2 생성
‣ DB 서버 생성
‣ Web Server 설정
<?php define('DB_SERVER', 'db_instance_endpoint'); define('DB_USERNAME', 'tutorial_user'); define('DB_PASSWORD', 'master password'); define('DB_DATABASE', 'sample'); ?> |
<?php include "../inc/dbinfo.inc"; ?> <html> <body> <h1>Sample page</h1> <?php /* Connect to MySQL and select the database. */ $connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD); if (mysqli_connect_errno()) echo "Failed to connect to MySQL: " . mysqli_connect_error(); $database = mysqli_select_db($connection, DB_DATABASE); /* Ensure that the EMPLOYEES table exists. */ VerifyEmployeesTable($connection, DB_DATABASE); /* If input fields are populated, add a row to the EMPLOYEES table. */ $employee_name = htmlentities($_POST['NAME']); $employee_address = htmlentities($_POST['ADDRESS']); if (strlen($employee_name) || strlen($employee_address)) { AddEmployee($connection, $employee_name, $employee_address); } ?> <!-- Input form --> <form action="<?PHP echo $_SERVER['SCRIPT_NAME'] ?>" method="POST"> <table border="0"> <tr> <td>NAME</td> <td>ADDRESS</td> </tr> <tr> <td> <input type="text" name="NAME" maxlength="45" size="30" /> </td> <td> <input type="text" name="ADDRESS" maxlength="90" size="60" /> </td> <td> <input type="submit" value="Add Data" /> </td> </tr> </table> </form> <!-- Display table data. --> <table border="1" cellpadding="2" cellspacing="2"> <tr> <td>ID</td> <td>NAME</td> <td>ADDRESS</td> </tr> <?php $result = mysqli_query($connection, "SELECT * FROM EMPLOYEES"); while($query_data = mysqli_fetch_row($result)) { echo "<tr>"; echo "<td>",$query_data[0], "</td>", "<td>",$query_data[1], "</td>", "<td>",$query_data[2], "</td>"; echo "</tr>"; } ?> </table> <!-- Clean up. --> <?php mysqli_free_result($result); mysqli_close($connection); ?> </body> </html> <?php /* Add an employee to the table. */ function AddEmployee($connection, $name, $address) { $n = mysqli_real_escape_string($connection, $name); $a = mysqli_real_escape_string($connection, $address); $query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');"; if(!mysqli_query($connection, $query)) echo("<p>Error adding employee data.</p>"); } /* Check whether the table exists and, if not, create it. */ function VerifyEmployeesTable($connection, $dbName) { if(!TableExists("EMPLOYEES", $connection, $dbName)) { $query = "CREATE TABLE EMPLOYEES ( ID int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(45), ADDRESS VARCHAR(90) )"; if(!mysqli_query($connection, $query)) echo("<p>Error creating table.</p>"); } } /* Check for the existence of a table. */ function TableExists($tableName, $connection, $dbName) { $t = mysqli_real_escape_string($connection, $tableName); $d = mysqli_real_escape_string($connection, $dbName); $checktable = mysqli_query($connection, "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t' AND TABLE_SCHEMA = '$d'"); if(mysqli_num_rows($checktable) > 0) return true; return false; } ?> |
'Rookies 9기 > 클라우드 보안 컨설팅 실무' 카테고리의 다른 글
클라우드 보안 컨설팅 실무 2일차 (0) | 2022.11.08 |
---|---|
클라우드 보안 컨설팅 실무 1일차 (0) | 2022.11.07 |