レンタルサーバーのDB/定期実行PythonファイルをAWSに移行する①
目的
レンタルサーバーにある既存DBをAWSに移行し、外部からアクセスできるようにする。
Pythonファイルの定期実行と、関連するインスタンスの起動時間を管理する。
使用PC: Windows10以上
今回
- Amazon EC2 インスタンスを踏み台ホストとして使用して、ローカルマシンからプライベート Amazon RDS DB インスタンスに接続する
次回
レンタルサーバーのDB/定期実行PythonファイルをAWSに移行する②
- 固定IPアドレスを設定する
- EC2インスタンスでPythonファイルを実行する
- Pythonの定期実行
- コスト削減のため必要時のみインスタンスを起動する
- GoogleデータポータルでRDSにアクセスしDB情報を取得する
設定対象
- AWS EC2インスタンス
- RDS DBインスタンス(MySQL)
- Linuxコマンドでのcron(定期実行設定)
- インスタンススケジューラー(AWS CloudFormation テンプレートでスタック作成, Lambda, Dynamo DB, タグ付け)
EC2(Amazon Elastic Compute Cloud)
AWS内で仮想サーバーの構築。アプリケーションサーバーとデータベースサーバーなど、合計で2つのサーバーが必要な場合は、インスタンスを2つ作成して対応(必要に応じて作成・削除)。
Amazon EC2とは
RDS (Amazon Relational Database Service)
クラウド上のリレーショナルデータベース
Amazon Relational Database Service
EC2インスタンスの作成
EC2インスタンス作成のための事前準備
Amazon EC2 を使用するようにセットアップする
上記を見ながら下記設定をする
- キーペアの作成
- セキュリティグループの作成(SSH接続の選択をしておく)
セキュリティグループは、関連付けられたインスタンスのファイアウォールとして動作し、インバウンドトラフィックとアウトバウンドトラフィックの両方をインスタンスレベルでコントロールします。(公式ドキュメントより)
EC2の開始
チュートリアル: Amazon EC2 Linux インスタンスの開始方法
上記を見ながら設定する
- インスタンスの起動
- インスタンスの接続
RDS DB MySQLインスタンスにEC2からアクセスする(MySQL Workbench)
※セキュリティグループのインバウンドルールの設定がされていないとWorkbenchからアクセスできないので下記設定されているか確認し、ない場合は追加する。
RDS データベースを作成して接続する
上記を見ながら設定する
- DBインスタンスの作成
- MySQL Workbench からデータベースへアクセス
MySQL Workbenchのトップ画面の「MySQL Connections」プラスボタンをクリックし、
- Connection Name: 任意の名前
- Connection Method: Standard(TCP/IP)
- Parameters Hostname: RDSのエンドポイント
- Port: 3306
- Username: admin (☚RDS設定時に決めた名前)
Tera Term でのアクセス
ホストには、アクセス対象のEC2インスタンスのパブリックIPv4 DNS を入力(パブリックIPv4 DNS は停止して開始する度に変更するので代替案の Elastic IPアドレスについては別の回で)
- 接続方法
・EC2のユーザー名はデフォルトの 「ec2-user」で、作成した鍵を指定
・下記の次画面に出てくるチェックボックス「このホストをknown hostsリストに追加する」のチェックは外しておく
MySQLのインストール
EC2インスタンス内にMySQLをインストール
sudo yum install mysql
EC2からRDS DBにアクセス
ユーザー名は設定した「admin」エンドポイントを指定する。
下記入力した後に、設定したパスワード入力を求められる。
mysql -u admin -p -h **********.*********.ap-northeast-1.rds.amazonaws.com
ローカルからSSH接続
ローカルのユーザーフォルダ配下に鍵を置くことでWindows10(バージョン1803~)コマンドプロンプトでのSSH接続ができる
コマンドプロンプトでEC2にSSH接続
ssh -i "C:\Users\name\key_name.pem" ec2-user@ec2-**-***-***-**.ap-northeast-1.compute.amazonaws.com
Discussion