HOME > CONIT Labs.

CONIT Labs.

Amazon Relational Database Service (Amazon RDS) を使う


コニットでは、提供しているサービスでAmazon Web Service(AWS)や、Google App Engine(GAE)を使う事があります。
AWSを使う時にデータベースを必要とする場合は、EC2上にデータベースを構築しますが、去年Amazonより発表があったAmazon Relational Database Service(Amazon RDS)について今回は触れたいと思います。
Amazon RDSとは簡単に言うと、通常のRDBをサービスとして提供する物である。(現時点では、MySQL5.1のみ)
このサービスを使う事により、EC2上にサーバーを構築した後にMySQLをインストールして、運用の設定もしてといった必要が無く、EC2上に新しいインスタンスを追加するような手軽さでデータベースを構築することが出来ます。
では、実際に構築の手順を説明します。
(以前にEC2などのツールを利用したことがあることが前提で進めます)
1.  AWSアカウントがAmazon RDSを使えるようにします。
http://aws.amazon.com/rds/にアクセスし、画面の説明に沿って登録を完了させます。
2. コマンドラインツールを入手
Amazonのサービスを利用する際、だいたいコマンドラインからの操作を行います。
(EC2やS3向けには便利なGUIのツールが出ている)
Developer Toolsからコマンドラインツールをダウンロードし、解凍します。
3. コマンドラインで操作する為のパスを設定(Mac 0S Xの場合)
export AWS_RDS_HOME=/ツールまでのパス/RDSCli-1.0.005
export PATH=$PATH:$AWS_RDS_HOME/bin
3.1.1 キーの設定
/RDSCli-1.0.005/credential-file-path.templateをコピーして、以下の部分を自分の環境に合わせます。
(今回は同じディレクトリー内に、「credential-file-path.txt」として作成)
AWSAccessKeyId=自分のAccessKey
AWSSecretKey=自分のSecretKey
設定ファイルを登録
export AWS_CREDENTIAL_FILE=$AWS_RDS_HOME/credential-file-path.txt
3.1.2 動作確認
rds –help
利用可能なコマンドの一覧が表示されれば、設定は完了です。
エラーが出る場合は、「JAVA_HOME」の設定が正しくされていない可能性があるので、こちらを参照
4. DBの作成
今回の環境は、
・5GBのストレージ
・Small DB Instance: 1.7 GB memory, 1 ECU (1 virtual core with 1 ECU), 64-bit platform
・MySQL5.1(これ以外の選択肢は今のところ無い)
4.1 DBインスタンスの作成
rds-create-db-instance ichikawa-instance –allocated-storage 5 –db-instance-class db.m1.small –engine MySQL5.1 –master-username <マスターユーザー> –master-user-password <マスターユーザーのパスワード> –headers
(最後の[--headers]は、結果を表示する時にヘッダーも表示するかを指定する)
実行結果
DBINSTANCE DBInstanceId Class Engine Storage Master Username Status Backup Retention PendingCredentials
DBINSTANCE ichikawa-instance db.m1.small mysql5.1 5 <マスターユーザー> creating 1 ****
SECGROUP Name Status
SECGROUP default active
PARAMGRP Group Name Apply Status
PARAMGRP default.mysql5.1 in-sync
詳細な情報を表示
rds-describe-db-instances –headers
DBINSTANCE DBInstanceId Created Class Engine Storage Master Username Status Endpoint Address Port AZ Backup Retention
DBINSTANCE ichikawa-instance 2010-01-13T02:01:54.980Z db.m1.small mysql5.1 5 <マスターユーザー> available ichikawa-instance.abcdefghijk.us-east-1.rds.amazonaws.com 3306 us-east-1a 1
SECGROUP Name Status
SECGROUP default active
PARAMGRP Group Name Apply Status
PARAMGRP default.mysql5.1 in-sync
5. セキュリティーの設定
5.1 セキュリティーの確認
rds-describe-db-security-groups default –headers
SECGROUP Name Description
SECGROUP default default
デフォルトの設定は、DB Security Groups(default)となっています。
defaultの設定では、外部からのアクセスを許可していない為、設定を変更する必要があります。
セキュリティーの設定方法は2種類あり、
・IPアドレスによる制限
・EC2のセキュリティーグループを適用する
があります。
5.2 セキュリティーの変更
5.2.1 IPアドレスによる制限
この例では、IPアドレスが192.168.1.123のマシンからの接続のみを許可
rds-authorize-db-security-group-ingress default –cidr-ip 192.168.1.123/1 –headers
SECGROUP Name Description
SECGROUP default default
IP-RANGE IP Range Status
IP-RANGE 192.168.1.123/1 authorizing
コマンドを実行してから、実際に適用されるまで少し時間がかかりました。
以下のコマンドで、Statusがauthorizedになるまで待ちましょう。
rds-describe-db-security-groups default –headers
SECGROUP Name Description
SECGROUP default default
IP-RANGE IP Range Status
IP-RANGE 192.168.1.123/1 authorized
5.2.2 EC2セキュリティーグループによる制限
この設定は、どのEC2セキュリティーグループに対して、アクセスを許可するかを設定します。
例えば、mywebserverというセキュリティーグループを許可する場合は、以下のようなコマンドになります。
rds-authorize-db-security-group-ingress default –ec2-security-group-name mywebserver –ec2-security-group-owner-id –headers
SECGROUP Name Description
SECGROUP default default
EC2-SECGROUP EC2 Group Name EC2 Owner Id Status
EC2-SECGROUP mywebserver authorizing
両方のセキュリティーを設定すると、以下のように設定されている事が確認できる
rds-describe-db-security-groups default –headers
SECGROUP Name Description
SECGROUP default default
EC2-SECGROUP EC2 Group Name EC2 Owner Id Status
EC2-SECGROUP mywebserver authorized
IP-RANGE IP Range Status
IP-RANGE 192.168.1.123/1 authorized
5.2.1 動作確認
MySQLに接続してみましょう
mysql -h ichikawa-instance.abcdefghijk.us-east-1.rds.amazonaws.com -P 3306 -u <マスターユーザー> -p
Enter password: <マスターユーザーのパスワード>
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 483
Server version: 5.1.38-log MySQL Community Server (GPL)
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.
mysql>
無事接続できました!!
データベースを確認してみましょう。
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| innodb |
| mysql |
+——————–+
4 rows in set (0.19 sec)
後は通常通りの方法でデータベースを操作することが可能です。
最後に、テスト用に作成したDBインスタンスであれば、削除する事を忘れずに!!
じゃないと、ずっと課金されてしまいます(笑)
6 DBインスタンスの削除
rds-delete-db-instance myinstance –skip-final-snapshot true –headers
Once you begin deleting this database, it will no longer be able to accept
connections.
Are you sure you want to delete this database? [Ny]y
DBINSTANCE DBInstanceId Created Class Engine Storage Master Username Status Endpoint Address Port AZ Backup Retention
DBINSTANCE ichikawa-instance 2010-01-13T02:01:54.980Z db.m1.small mysql5.1 5 <マスターユーザー> deleting ichikawa-instance.abcdefghijk.us-east-1.rds.amazonaws.com 3306 us-east-1a 1
SECGROUP Name Status
SECGROUP default active
PARAMGRP Group Name Apply Status
PARAMGRP default.mysql5.1 in-sync
以下のコマンドを入力しても、DBインスタンスが表示されなければ削除は成功です。
rds-describe-db-instances –headers

コメントを残す

コニット開発室

CONIT Official Tweet

CONIT Facebook FanPage

CONIT BLOG

株式会社コニット

SamuraiSmartphoneServices

Buy and take only medicines from online pharmacy ,]}$ drugs online has affordable prices. Brand name drugs Canadian pharmacy [*}: compare drug prices Canada delivering medicines at your door. Free online consultation at https://canada-pharmacy-store.com <;) order cialis highest value and quality. Is it legal to mail prescription drugs? Yes, Canadian drugs [.($ order viagra . After ordering you will be contacted by our managers and agree on the delivery details.