LoginSignup
11
9

More than 3 years have passed since last update.

AWS RDSでデータを管理する

Last updated at Posted at 2020-04-10

はじめに

  • AWS上でリレーショナルデータベースを扱うには、以下の方法があります。

    • AWS EC2を構築して、DBを乗せる
    • AWS RDSを使う

AWS RDS無料枠

  • 無料枠は以下の内容
  • 750 時間/月の db.t2.micro データベース使用 (適用可能な DB エンジン)
  • 20 GB の汎用 (SSD) データベースストレージ
  • 20 GB のデータベースバックアップおよび DB スナップショット用ストレージ

簡単作成 - MySQL -

image.png

image.png

aws_rds1.png

image.png

EC2での作業(2020.05.02追記)

mysql-clientのインストール

$ sudo apt install mysql-client-core-5.7

EC2 -> RDSに接続する

$ mysql -h RDSのエンドポイント -u RDSで設定したユーザ -p RDSで設定したパスワード

mysql側での作業(2020.05.02追記)

ユーザ・データベースの作成

mysql> CREATE USER 'mysql'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> SET PASSWORD FOR 'mysql'@'%'='MyPassw0rd';
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE awsfree;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL ON awsfree.* TO 'mysql'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE staff (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    staff_name VARCHAR(255) NOT NULL
) ENGINE=InnoDB DEFAULT charset = utf8;
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO staff (staff_name) VALUES ('尼存 太郎');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO staff (staff_name) VALUES ('尼存 花子');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM staff;
+----+---------------+
| id | staff_name    |
+----+---------------+
|  1 | 尼存 太郎     |
|  2 | 尼存 花子     |
+----+---------------+
2 rows in set (0.00 sec)

動作確認(2020.05.02追記)

pymysqlのインストール

$ pip install pymysql

python -> mysql接続テスト

rds_config.py
rds_host = 'RDSのエンドポイント'
db_user = 'mysql'
db_password = 'MyPassw0rd'
db_name = 'awsfree'
rds_test.py
import pymysql
import rds_config as RDS

con = pymysql.connect(
        host=RDS.rds_host,
        user=RDS.db_user,
        password=RDS.db_password,
        db=RDS.db_name,
        cursorclass=pymysql.cursors.DictCursor
)

try:
    with con.cursor() as cur:
        sql = 'SELECT * FROM staff'
        cur.execute(sql)
        result = cur.fetchall()
        print(result)
except:
    print('Error !!!!')
staff追加
sql = 'INSERT INTO staff (staff_name) VALUES (%s)'
cur.execute(sql, ('尼存 次郎'))

con.commit()
接続テスト
$ python rds_test.py
実行結果
[{'id': 1, 'staff_name': '尼存 太郎'}, {'id': 2, 'staff_name': '尼存 花子'}]

おわりに

  • AWS RDSを使うとボタン、ポチポチで環境構築出来て便利。
  • EC2->RDSへの接続テストを追記しました。(2020.05.02)
11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9