🚧

レンタルサーバーのDB/定期実行PythonファイルをAWSに移行する①

2022/03/24に公開

目的

レンタルサーバーにある既存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