Amazon RDS DB 인스턴스를 PHP 애플리케이션 환경에 추가
Amazon Relational Database Service(Amazon RDS) DB 인스턴스를 사용하여 애플리케이션이 수집하고 수정하는 데이터를 저장할 수 있습니다. 데이터베이스를 환경에 연결하고 Elastic Beanstalk에서 관리하도록 하거나 외부에서 만들고 관리할 수 있습니다.
Amazon RDS를 처음 사용하는 경우 Elastic Beanstalk 콘솔을 사용하여 테스트 환경에 DB 인스턴스를 추가하고 애플리케이션을 인스턴스에 연결할 수 있는지 확인합니다.
데이터베이스에 연결하려면 애플리케이션에 드라이버를 추가하고 드라이버 클래스를 코드로 로드한 후 Elastic Beanstalk에서 제공하는 환경 속성으로 연결 객체를 생성합니다. 사용 중인 데이터베이스 엔진 및 프레임워크에 따라 구성 및 연결 코드가 달라집니다.
환경에 DB 인스턴스 추가
환경에 DB 인스턴스를 추가하려면
Elastic Beanstalk 콘솔
을 연 다음 리전(Regions) 목록에서 해당 AWS 리전을 선택합니다. -
탐색 창에서 환경을 선택한 다음 목록에서 환경의 이름을 선택합니다.
참고 환경이 많은 경우 검색 창을 사용하여 환경 목록을 필터링합니다.
탐색 창에서 구성을 선택합니다.
-
[데이터베이스] 구성 범주에서 [편집]을 선택합니다.
-
DB 엔진을 선택하고 사용자 이름과 암호를 입력합니다.
-
페이지 하단에서 적용(Apply)을 선택합니다.
DB 인스턴스를 추가하는 데 약 10분이 걸립니다. 환경 업데이트가 완료되면 다음 환경 속성을 통해 애플리케이션에서 DB 인스턴스의 호스트 이름과 기타 연결 정보를 사용할 수 있습니다.
속성 이름 | 설명 | 속성 값 |
---|---|---|
|
DB 인스턴스의 호스트 이름입니다. |
Amazon RDS 콘솔의 연결 및 보안 탭에 있는 엔드포인트입니다. |
|
DB 인스턴스가 연결을 허용하는 포트입니다. 기본값은 DB 엔진마다 다릅니다. |
Amazon RDS 콘솔의 연결 및 보안 탭에 있는 포트입니다. |
|
데이터베이스 이름 |
Amazon RDS 콘솔의 구성 탭에 있는 DB 이름입니다. |
|
데이터베이스에 대해 구성된 사용자 이름입니다. |
Amazon RDS 콘솔의 구성 탭에 있는 마스터 사용자 이름입니다. |
|
데이터베이스에 대해 구성된 암호입니다. |
Amazon RDS 콘솔에서는 참조용으로 사용할 수 없습니다. |
내부 DB 인스턴스 구성에 대한 자세한 내용은 Elastic Beanstalk 환경에 데이터베이스 추가를 참조하세요.
드라이버 다운로드
PDO(PHP Data Object)를 사용하여 데이터베이스에 연결하려면 선택한 데이터베이스 엔진과 일치하는 드라이버를 설치합니다.
-
MySQL –
PDO_MYSQL
-
PostgreSQL –
PDO_PGSQL
-
Oracle –
PDO_OCI
-
SQL Server –
PDO_SQLSRV
자세한 내용은 http://php.net/manual/en/pdo.installation.php
PDO 또는 MySQLi를 사용하여 데이터베이스에 연결
$_SERVER[`
을 사용하여 환경에서 연결 정보를 읽을 수 있습니다.VARIABLE
`]
PDO의 경우 호스트, 포트 및 이름의 DSN(Data Source Name)를 생성합니다. 데이터베이스 사용자 이름 및 암호와 함께 DSN을 PDO의 생성자
예 PDO - MySQL을 사용해 RDS 데이터베이스에 연결하려면
<?php $dbhost = $_SERVER['RDS_HOSTNAME']; $dbport = $_SERVER['RDS_PORT']; $dbname = $_SERVER['RDS_DB_NAME']; $charset = 'utf8' ; $dsn = "
mysql
:host={$dbhost};port={$dbport};dbname={$dbname};charset={$charset}"; $username = $_SERVER['RDS_USERNAME']; $password = $_SERVER['RDS_PASSWORD']; $pdo = new PDO($dsn, $username, $password); ?>
기타 드라이버의 경우 mysql
을 드라이버의 이름으로 바꿉니다(pgsql
, oci
또는 sqlsrv
).
MySQLi의 경우 mysqli
생성자에 호스트 이름, 사용자 이름, 암호, 데이터베이스 이름 및 포트를 전달합니다.
예 mysqli_connect()를 사용해 RDS 데이터베이스에 연결하려면
$link = new mysqli($_SERVER['RDS_HOSTNAME'], $_SERVER['RDS_USERNAME'], $_SERVER['RDS_PASSWORD'], $_SERVER['RDS_DB_NAME'], $_SERVER['RDS_PORT']);
Symfony를 사용하여 데이터베이스에 연결
Symfony 버전 3.2 이상에서는 %env(
를 사용하고, Elastic Beanstalk가 설정한 환경 속성을 기반으로 구성 파일에 데이터베이스 파라미터를 설정할 수 있습니다.PROPERTY_NAME
)%
예 app/config/parameters.yml
parameters: database_driver: pdo_mysql database_host: '%env(RDS_HOSTNAME)%' database_port: '%env(RDS_PORT)%' database_name: '%env(RDS_DB_NAME)%' database_user: '%env(RDS_USERNAME)%' database_password: '%env(RDS_PASSWORD)%'
자세한 내용은 외부 파라미터(Symfony 3.4)
Symfony 이전 버전의 경우 SYMFONY__
로 시작한 경우에만 환경 변수를 사용할 수 있습니다. Elastic Beanstalk에서 정의된 환경 속성을 사용할 수 없으며, 따라서 고유 환경 속성을 정의해 Symfony에 연결 정보를 전달해야 합니다.
Symfony 2로 데이터베이스를 연결하려면, 각 파라미터에 대해 환경 속성을 생성합니다. 그런 후 %
를 사용해 구성 파일의 Symfony가 변환시킨 변수를 사용합니다. 예를 들어, property.name
%SYMFONY__DATABASE__USER
라는 이름의 환경 속성을 database.user
로 사용할 수 있습니다.
database_user: "%database.user%"
자세한 내용은 외부 파라미터(Symfony 2.8)