2024年6月10日月曜日

AWS RDSでデータベースを作成しCloudShellから接続してSQL文からデータを格納する

 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分程度)。
ステータスが利用可能になり、これで作成ができました。

(2) パブリックアクセス可能に変更する
次に、データベースを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;
で確認しましょう。





これで、AWS RDSでデータベースを作成しCloudShellから接続してSQL文からデータを格納することができました。

0 件のコメント:

コメントを投稿