RDS 操作マニュアル
AWS で MySQL を作り、Colab からデータを保存するまで
第21-22回「RDSの利用」(2026年10月20日)の講義をもとに作成
- PART 1RDS を作るSTEP 1–7
- PART 2CloudShell で SQLSTEP 8–13
- PART 3Postman で APISTEP 14–21
- PART 4外部から接続可にSTEP 22–29
- PART 5Colab で保存STEP 30–36
- PART 6後片付けSTEP 37–38
準備するもの
- AWS のアカウント(無料利用枠で足りる)
- Google アカウント(Google Colab を使う)
- Postman のアカウント(Google などでも登録できる)
- 授業資料:SQL 文、マスターパスワード、NASA の API キー
気をつけること
- パスワードと API キーは画面にも資料にも載せない。人に見せない。
- 0.0.0.0/0 の許可は授業用の設定。実務では IP を限定する。
- 使い終わった DB は削除、残す DB は「一時的に停止」する。
- 画面写真は講義動画から切り出したもの。AWS の画面は変わることがある。
目次
PART 1 | RDS(MySQL)を作る
PART 2 | CloudShell から接続して SQL を実行する
PART 3 | Postman で API を確かめる
PART 4 | 外部から接続できるようにする
PART 5 | Colab から RDS にデータを保存する
PART 6 | 後片付け
困ったとき
PART 1RDS(MySQL)を作る
RDS の画面から作成を始める
- AWS コンソールで「Aurora and RDS」を開く
- 左メニュー「データベース」を選び、右上の「データベースの作成」をクリック
講師の説明(要約)
講師の説明(要約):前回と同じ手順で RDS を開く。リンク先の資料と変わっている部分があるので、画面を見ながら確認する。画面が見えにくい人は Zoom の画面共有を見ながら進める。識別子は、既に 1 があれば 2、3、4 など好きな番号でよい。
エンジンは MySQL、作成方法は簡単作成
- エンジンのタイプで「MySQL」を選ぶ
- データベース作成方法は「簡単に作成」を選ぶ
講師の説明(要約)
講師の説明(要約):エクスプレス設定では PostgreSQL しか選べないので、前回は「フル設定」で作った。今回は MySQL を選び、「簡単に作成」で進める。資格取得で PostgreSQL を使う人もいるが、今回は MySQL。NoSQL の DynamoDB は形式が違う。
無料利用枠と識別子を設定する
- DB インスタンスサイズは「無料利用枠」を選ぶ
- DB インスタンス識別子を入力する(例: database-3)
- マスターユーザー名は admin のまま
講師の説明(要約)
講師の説明(要約):インスタンスサイズは無料利用枠にする。識別子は自分の環境に合わせて好きな名前(講師は database-3)を付ける。マスターユーザー名は admin のまま。
マスターパスワードを設定する
- 認証情報管理は「セルフマネージド」を選ぶ
- マスターパスワードを入力する
- 確認欄にも同じパスワードを入力する
講師の説明(要約)
講師の説明(要約):認証情報はセルフマネージドにして、パスワードを自分で決める。パスワードは授業で指定されたものを使う(このマニュアルには書いていない)。
「データベースの作成」を押す
- 画面を一番下までスクロールする
- 右下の「データベースの作成」をクリック
講師の説明(要約)
講師の説明(要約):設定ができたら下までスクロールして作成ボタンを押す。押すと「作成中」になり、立ち上がるまで待つ。
接続の詳細でパスワードを確認する
- 作成直後に出る「接続の詳細の表示」を開く
- マスターユーザー名(admin)とパスワードを確認して控える
講師の説明(要約)
講師の説明(要約):詳細を見ると、admin とマスターパスワードがここでコピーできる。立ち上がるとホスト名(エンドポイント)が入ってくる。パスワードはここでしか表示できないが、エンドポイントはいつでも見られる。
ステータスが「利用可能」になるまで待つ
- 作成完了の緑のメッセージが出るのを確認
- 自分の DB のステータスが「利用可能」になるまで待つ(約20〜30分)
講師の説明(要約)
講師の説明(要約):マルチ構成などのフル設定にすると立ち上がるまで 20〜30 分かかる。無料枠の簡単作成が実習には一番手っ取り早い。講師の環境では約 23 分かかった。利用可能になったら次へ進む。
PART 2CloudShell から接続して SQL を実行する
「クラウドシェル」で接続を選ぶ
- DB 名をクリックし、「接続とセキュリティ」タブを開く
- 接続方法で「クラウドシェル」を選ぶ
- 「クラウドシェルを起動」をクリック
講師の説明(要約)
講師の説明(要約):EC2 のときは MySQL を自分でインストールしたが、今回は RDS のサービスを使う。拡張性(スケールアウト)、セキュリティ、同期、バックアップなど、DB に必要な機能が最初から入っているため。サーバー側の設定は何もしていなくて、クラウドシェルで接続をクリックするだけでよい。
接続コマンドを実行する
- 表示された接続コマンド(mysql -h … -u admin -p)を確認する
- 「実行」をクリック(CloudShell が新しいタブで開く)
講師の説明(要約)
講師の説明(要約):講師が付けた名前で、こんなコマンドで接続します、という画面が出る。ホスト名はそれぞれ違い、ポートは 3306 で接続する。画面のホスト名は伏せてある。
パスワードを入力して接続する
- 「Enter password:」でマスターパスワードを入力する(画面には表示されない)
- 「MySQL [(none)]>」と表示されれば接続成功
講師の説明(要約)
講師の説明(要約):パスワードを聞いてくるので、先ほど設定したパスワードを入れる。入れるとログインできて、MySQL のプロンプトが出る。本格的なシステムでは、1 つのサーバーに全部入れず、データベースは分離して運用するのが通常。
SQL を貼り付けてテーブルを作る
- 資料の SQL(CREATE DATABASE 〜 CREATE TABLE)をコピーし、CloudShell に貼り付けて Enter
- 「Query OK」と表示されればテーブルができた
講師の説明(要約)
講師の説明(要約):資料のリンク先に SQL を載せてある。データベース urayasu を作り、テーブル locations(id, name, latitude, longitude)と distances(id, from_location, to_location, distance)を作る。これをコピーして CloudShell にそのまま貼り付ける。前回の復習。
テーブルができたか確認する
- 「describe locations;」を実行する
- 列(id, name, latitude, longitude)が表示されれば OK
講師の説明(要約)
講師の説明(要約):show tables でテーブルが作られていることを確認し、describe でテーブル構造を確認する。講師も途中で括弧を付けてエラーになった(describe locations; が正しい書き方)。distances テーブルも同じように確認する。
データを入れて中身を確認する
- INSERT 文を貼り付けて実行する(12 rows affected)
- 「select * from locations;」で入った内容を確認する
講師の説明(要約)
講師の説明(要約):今はデータが空なので、後ろにある INSERT 文でデータを入れる。select 文で出して確認できる。distances テーブルも同じように入れる。基本的には、データベースを立ち上げてテーブルを作るところまでが前回の内容。
PART 3Postman で API を確かめる
Postman のアカウントを作る
- postman.com で無料登録を開き、メールアドレスを入力する
- ユーザー名とパスワードを入力する
- 「無料アカウントの作成」をクリック
講師の説明(要約)
講師の説明(要約):Postman を使うにはアカウント作成(無料)が必要。一度登録してもらえるとうれしい。害はないものなので、嫌でなければ自分で手を動かした方が勉強になる。ワークスペースは何でもよい。API とは、プログラムが外部の機能を使うための窓口(Application Programming Interface)。
新しいリクエストを作る
- 「+」で新しいリクエストのタブを開く
- メソッドは「GET」のままにする
- URL 欄に API の URL を貼り付ける
講師の説明(要約)
講師の説明(要約):タブを開くと新しいリクエストが作れる。ここに URL を貼る。基本は GET でアクセスしている。
Dog API で動作を確かめる
- URL 欄に次の URL を入れて「Send」をクリック
https://dog.ceo/api/breeds/image/random - 「200 OK」が表示される
- message に犬の画像の URL が JSON で返ってくる
講師の説明(要約)
講師の説明(要約):例として犬の画像を返す API(Dog API)を使う。サイトの URL をコピーして Postman に貼って Send すると、サイトで表示されるのと全く同じ内容が JSON で返ってくる。簡単に確認できる。
NASA APOD の URL をコピーする
- api.nasa.gov の「Browse APIs」から「APOD」を開く
- 「HTTP Request」の GET の URL(…/wp-json/wp/v2/apod-basic)をコピー
講師の説明(要約)
講師の説明(要約):今日使うのは NASA の API のうち、宇宙の写真を返す APOD。NASA の API ページ(api.nasa.gov)→ Browse APIs で APOD を探し、GET の URL をコピーする。
api_key パラメーターを追加する
- 新しいリクエストに APOD の URL を貼る
- Params の Key に「api_key」と入力する
- Value に配布された NASA の API キーを貼る
講師の説明(要約)
講師の説明(要約):URL だけでは足りず、api_key というパラメーターが必須。Key に api_key、Value には授業で共有されたキーを入れる。本来、API キーは共有してはいけないが、今回は授業用に貼ってある。キーは NASA のサイトで自分でも取得できる。
Send して JSON を確認する
- 「Send」をクリックする
- 「200 OK」と長い JSON が返ってくるのを確認する
- date を指定しても今日の分が返る(今回は使わない)
講師の説明(要約)
講師の説明(要約):Send するとちゃんと戻ってくる。ものすごく長いが、日付・タイトル・説明・画像 URL などの情報が返る。date で日付を指定できるはずだが、今は効かないので常に今日のものが返る。まずはこの API キーで情報が取れることを確認する。
Python のコードに変換する
- 画面右上の「</>」(Code)をクリック
- 言語を「Python - Requests」にする
- 表示されたコードをコピーする
講師の説明(要約)
講師の説明(要約):画面の一番右にあるコード(</>)を探す。言語を選べるので Python - Requests を選ぶと、ここで試した内容が Python のコードになって出てくる。
Colab に貼り付けて実行する
- Google Colab で新しいノートブックを開く
- コピーしたコードをセルに貼り付ける
- セルを実行し、API の結果が表示されるのを確認する
講師の説明(要約)
講師の説明(要約):コピーしたコードを Colab のセルに貼って実行すると、API の情報が取れる。API があったら、まず Postman の GUI で確認し、動くと分かったらコードを出してプログラムで確認する。これを土台にするとアプリケーションまで作れる。次の時間は、このデータを RDS に入れていく。
PART 4外部から接続できるようにする
DB を選んで「変更」を押す
- RDS のデータベース一覧で、自分の DB にチェックを入れる
- 「変更」をクリック
講師の説明(要約)
講師の説明(要約):まだやっていない設定がある。パブリックアクセスを可能にしないと外部から接続できない。本当はホストを決め打ちできればよいが、この環境ではできない。一覧で自分の DB にチェックを入れて「変更」を押す。
パブリックアクセスを「可能」にする
- 画面を下へスクロールして「追加設定」を開く
- パブリックアクセスで「パブリックアクセス可能」を選ぶ
- 一番下の「続行」をクリック
講師の説明(要約)
講師の説明(要約):セキュリティグループの下あたりに追加設定がある。展開すると「パブリックアクセス可能」があり、デフォルトは不可になっている。これをオンにして、下の方の「続行」を押す。
「すぐに適用」で変更を実行する
- 「変更のスケジュール」で「すぐに適用」を選ぶ
- 「DB インスタンスを変更」をクリック
講師の説明(要約)
講師の説明(要約):授業でやりたいので、次のメンテナンスのときではなく「すぐに適用」にして変更をかける。これをかけないと変更にならないので気を付ける。
変更が終わるまで待つ
- ステータスが「変更中」になる
- 「利用可能」に戻るまで待つ
- CloudShell が切れていたら、STEP 29 で接続し直す
講師の説明(要約)
講師の説明(要約):変更中になるので、これはしばらく待つ。この変更で CloudShell のセッションが切れるかもしれないので、切れた場合はもう一度つなぎ直す。変更中は何もできない。
セキュリティグループを開く
- 自分の DB の詳細で「接続とセキュリティ」を開く
- 「セキュリティグループのルール」の default (sg-…) をクリック
講師の説明(要約)
講師の説明(要約):もう一つ、セキュリティグループを変更してデータベースに接続できるようにする。インバウンド(外から中に入ってくる通信)のファイアウォール設定が必要。DB の詳細にあるセキュリティグループのルールから、セキュリティグループ ID をクリックする。
「インバウンドのルールを編集」を押す
- 「インバウンドのルール」を表示する
- 「インバウンドのルールを編集」をクリック
講師の説明(要約)
講師の説明(要約):セキュリティグループ ID をクリックすると、インバウンドルールが最初はすべてのトラフィックの 1 つだけある。これに「インバウンドのルールを編集」でルールを足していく。(画面の一部は伏せてある)
MySQL/Aurora のルールを追加する
- 「ルールを追加」をクリック
- タイプを「MySQL/Aurora」にする
- ソースを「0.0.0.0/0」(どこからでも)にする
- 「ルールを保存」をクリック
講師の説明(要約)
講師の説明(要約):ルールを追加して、MySQL/Aurora、ソースは 0.0.0.0/0(どこからでもアクセス可能)にして、ルールを保存する。ポートは 3306 のまま。これで 3306 番ポートに外部から接続できるようになる。本当は IP で制限するが、授業なので開けてある。
CloudShell をつなぎ直す
- CloudShell が切れた・反応しないときは、いったんタブを閉じる
- STEP 8〜10 と同じ方法でクラウドシェルから接続し直す
- 「MySQL [(none)]>」と表示されれば OK
講師の説明(要約)
講師の説明(要約):設定変更でクラウドシェルのセッションが切れることがある。うまくいかなかったときは、もう一回接続した方が早い。講師も入り直した。
PART 5Colab から RDS にデータを保存する
NASA 用の DB とテーブルを作る
- CloudShell で「CREATE DATABASE nasa;」と「USE nasa;」を実行
- CREATE TABLE apod (…) を貼り付けて実行
- 「describe apod;」で 7 列あることを確認
講師の説明(要約)
講師の説明(要約):資料の指示どおり、nasa というデータベースを作り、apod というテーブルを作る。列は id, date, title, media_type, explanation, url, hdurl の 7 つ。ここまでは CloudShell で行う。describe で構造を確認する。
Colab の「シークレット」を開く
- Colab 左側の鍵アイコン(シークレット)をクリック
- 「新しいシークレットを追加」をクリック
講師の説明(要約)
講師の説明(要約):コードの中には API キーがどこにも書かれていない。Colab の鍵マーク「シークレット」に、API キーやログイン情報を整理して入れておくとよい。プログラムはここから値を取り出して使う。
NASA_API_KEY を登録する
- 名前に「NASA_API_KEY」と入力する
- 値に授業で配布された NASA の API キーを貼る
- 「ノートブックからのアクセス」をオンにする
講師の説明(要約)
講師の説明(要約):新しいシークレットを追加し、変数名を NASA_API_KEY にして、今日渡した API キーを値に入れる。コードの from google.colab import userdata の userdata.get で、この変数名を指定して取り出す。アクセスを許可しておかないと使えない。
接続情報を Colab に登録する
- RDS の「接続の詳細の表示」でエンドポイントをコピーする
- Colab のシークレットに DB_HOST(値=エンドポイント)を追加する
- DB_USER(admin)と DB_PASSWORD も追加し、アクセスをオンにする
講師の説明(要約)
講師の説明(要約):コードはそのまま使ってよいが、自分の情報を入れる。DB_HOST は自分のデータベースのエンドポイント、DB_USER は admin、DB_PASSWORD はマスターパスワード。全部アクセスを許可する。エンドポイントはいつでも詳細から見られる。(画面のエンドポイントは伏せてある)
mysql-connector-python を入れる
- 新しいセルに「!pip install mysql-connector-python」を入力して実行
- 「Successfully installed」と表示されるのを確認
講師の説明(要約)
講師の説明(要約):mysql.connector のところでエラーになるので、先頭にビックリマークを付けた !pip install mysql-connector-python を入れておく必要がある。資料にも書いてある。入れてから、コードを実行する。
Python コードを実行して保存する
- 資料の Python コードをセルに貼り付ける
- セルを実行する
- 「保存しました: 日付 タイトル」と表示されれば成功
講師の説明(要約)
講師の説明(要約):何も入っていないデータベースに、外部のプログラムから入れる。接続情報がシークレットに入っていないと接続できない。「保存しました」と出れば成功。日付での制約は付けていないので、2 回実行すると同じものが 2 件入る。
保存されたデータを確認する
- CloudShell で「select * from apod;」を実行
- 1 行目に日付・タイトル・説明が入っていれば OK
講師の説明(要約)
講師の説明(要約):CloudShell で select を実行すると、入れたデータが見える。2 回実行すれば 2 件になる。これができれば、外部のプログラムからデータベースに入れられたことになる。自分のパソコンからだと 3306 番が開いていなくて届かないが、Colab ならみんなの環境からも届く。この後、Flask で表示するところまでが課題になる。
PART 6後片付け
不要な DB を削除する
- 不要な DB を選び、「アクション」をクリック
- メニューから「削除」を選ぶ
- 確認欄に「delete me」と入力する
- 「削除」をクリック
講師の説明(要約)
講師の説明(要約):もういらない DB は、アクションから削除する。削除するのも意外にセキュリティが厳しく、確認欄に delete me と入力しないと削除できないものがある。もう一方は、そのまま削除できる。
残す DB は「一時的に停止」する
- 残す DB を選び、「アクション」→「一時的に停止」
- 確認画面で「一時的に停止」をクリック
- ステータスが「停止中」になるのを確認
講師の説明(要約)
講師の説明(要約):最後の DB は次回使うかもしれないので残しておき、一時的に停止する。そのままだとクレジットが永遠に減っていく。消すものは消して、残すものは一時停止にして終わる。停止しても一定期間後に自動で再起動されることが、確認画面に日時つきで表示される。
困ったときうまくいかないときの確認
| No module named 'mysql' と出る | 先に「!pip install mysql-connector-python」を実行してから、コードを実行する。STEP 34 |
|---|---|
| Colab から RDS に届かない | パブリックアクセスが「可能」か、セキュリティグループに MySQL/Aurora(3306)のルールがあるかを確認する。ホストは「DNS」ではなく「エンドポイント」。STEP 23・28・33 |
| CloudShell でつながらない | CloudShell を閉じて、もう一度接続し直す。セキュリティグループを変えた後は、特に接続し直す。STEP 10・29 |
| describe でエラーになる | 「describe locations;」と書く。「describe(locations);」のように括弧を付けない。STEP 12 |
| 変更が反映されない | 「すぐに適用」を選んだか確認する。状態が「利用可能」に戻るまで待ってから次へ進む。STEP 24・25 |
0 件のコメント:
コメントを投稿