AWS RDSを利用してデータベースを作成していきます。AWS RDSはリレーショナルデータベースで、構造的な関係を持つデータの格納に便利です。今回はクラウド環境で使えるAWS RDSを使って、データベースを作成していきます。今回の目標は、「RDSでデータベースを作成し、CloudShellから接続して、SQL文からデータを格納する」ことです。本当はデータをプログラムで分析し、データベースに格納したいところですが、データベースの基本を確認するために、今回はSQL文を利用していきます。
(1) AWS RDSにデータベースを作成
AWS マネージメントコンソールからRDSにはいり、データベースを作成していきます。今回はできる限り簡易的にやっていきます。画面の「データベースの作成」ボタンを押します。
データベース作成方法を選択 -> 簡単に作成
エンジンのタイプ -> MySQL
DBインスタンスタイプ -> 無料利用枠
DBインスタンス識別子 -> database-001マスターユーザー名 -> admin (そのまま)
認証情報管理 -> セルフマネージド
マスターパスワード -> 任意ですが授業の場合は「LinuxOS99」とします。(@は使えません)
データベースの作成をクリックします。下記の内容が出てきてもそのまま閉じるで構いません。AWS Acdemyでやっている場合は、エラーが出る場合もありますが、そのままやっていきます。データベースの作成には少し時間がかかります(3分程度)。ステータスが利用可能になり、これで作成ができました。次に、データベースをCloudShellや外部プログラムから接続できるように、設定を変更します。
DB識別子「database-001」をクリック
画面右上の「変更」をクリック
接続 -> 追加設定をクリック -> 「パブリック接続可能」に変更画面をスクロールして一番下にいき、続行をクリック「すぐに適用」に変更し、DBインスタンスを変更をクリックステータスが変更中となり、しばらくすると、利用可能になります。これでパブリックアクセス可能に変更ができました。(3) セキュリティグループを変更して、データベースに接続できるようにする
次に、セキュリティグループを変更して、データベースに接続できるようにします。つまりファイアーウォールでデータベースに接続できない状況となっています。
DB識別子のdatabase-001をクリック、
セキュリティ -> VPCセキュリティグループをクリック
セキュリティグループIDをクリックインバウンドのルールを編集
ルールを追加MySQL/Aurola、0.0.0.0/0 (どこからでもアクセス可能)にして、ルールを保存をクリック
ポートは3306のまま
これで外部からのデータベースアクセスが許可されました。RDSに戻ります。(4) Cloud Shellから接続する
これでデータベースにアクセスができるようになったので、今回はCloud Shellを使って、データベースにアクセスします。Cloud Shellは画面上部のボタンをクリックします。
クリックすると、画面下部にプロンプトが出てきます。このプロンプトに次のコマンドを入力します。mysql -h エンドポイント(各自のもの) -P 3306 -u admin -p
エンドポイントはDB識別子をクリックして、接続とセキュリティ画面にあるので、確認してください。
パスワード(授業ではLinuxOS99)を入れてログインできれば成功です。データベースで何があるかを確認するには、show databases;
とします。最後に;(セミコロン)があるので忘れないようにしてください。
MySQLからログアウトするにはexit;
とします。
(5) SQL文を使って、データをインポートする
データベースに接続ができたので、SQL文からデータをインポートします。段取りとしては
(i) データベースの作成(create)、データベースの指定(use)
(ii) テーブルの作成(create)
(iii) データの挿入(insert)
(iv) データの確認(select)
このSQL文は、データベース:urayasu、テーブル:locations、distances となっていて、locationsではid, 名前、緯度、経度を持ち、distancesではlocationsのidを外部キーとして、from_locationとto_locationで2拠点間の距離を格納しています。このように、locationsのidがdistancesの外部キーとなっており、リレーションがはられている構造です。
これをCloud Shellから文ごと確認して、データのインポートができるか確認してください。
インポートができたら
select * from locations;
select * from distances;
0 件のコメント:
コメントを投稿