見出し画像

AWS RDS PostgreSQL を利用したデータベース構築とPython接続

Polymathはニューヨークとロサンゼルスを拠点とする、理系専門留学コンサルティングファームです。アドバイザーは米国の第一線で働くGAFAM・外資投資銀行エンジニア、現役CS大学院生で構成されており、エッセイ添削、出願、合格まで力強くバックアップ致します。元々は家族・友人・同僚向けにアドバイスをしていましたが、より多くの皆様の留学成功にコミットしたいという想いから会社を設立しました。

こんにちは、Polymathのカイです。私は10年間勤めた大手銀行を退職し、南カリフォルニア大学のComputer Science修士課程に2021年秋から通っています。

Polymathではお客さまの理系留学を更に支援出来るように、ポートフォリオ作成を共同で行うコースを現在準備しています。その準備の一環として、ポートフォリオ作成時に使用するマスターデータを格納したデータベースをAWSに構築中です。

今回、そのために私が使用したAmazon RDSについて、機能の簡単な説明と実際の作業を備忘録的に残しておきます。

Amazon RDSとは

Amazon RDSとは Amazon Relational Database Serviceの略で、クラウドでリレーショナルデータベースを取り扱えるようにしたものです。

データベースはクエリそのものよりもスケール性の確保、セキュリティ設定、バックアップ、モニタリング、冗長性などが面倒な検討事項になりがちですが、Amazonの提供しているクラウドサービスとだけあって、そのあたりを左程気にすることなく簡単にデータベースを作成・運用することが出来ます。

Amazonの提供するデータベースサービスとしては他にもDynamoDB(NoSQL)やNeptune (グラフDB)といったものがありますが、主キーや外部キーといったものを使用してカッチリとデータを管理したい、既存のリレーショナルデータベースをクラウド上に移行したい、というのであればAmazon RDSは有力候補になります。

Amazon RDSでの利用無料枠

クラウドでデータベース構築・運用するにあたり、まずは色々とテストして実際の動きや運用方法を体験したいという人は多いでしょう。そのような時は無料枠を使ってスモールスタートするのがお薦めです。Amazonのホームページからの抜粋ですが、無料サービスは以下の通りです。

  • MySQL、MariaDB、PostgreSQL データベースを実行する Amazon RDS の Single-AZ db.t2.micro、db.t3.micro、db.t4g.micro インスタンスのための、750 時間/月という使用時間複数のインスタンスを実行している場合、使用量はインスタンスクラス間で集計されます。

  • SQL Server (SQL Server Express Edition を実行) を使う Amazon RDS の Single-AZ db.t2.micro インスタンスのための、750 時間/月という使用時間

  • 20 GB の汎用 (SSD) DB ストレージ*

  • 自動データベースバックアップとユーザーによる任意の DB スナップショットに使用できる 20 GB のバックアップストレージ*

テストするには上の無料枠で十分でしょう。それでは実際にデータベースの作成に移っていきます。

データベースの作成

データベースの作成自体はとても簡単です。合計15分もかかりません。

↑ まずはサービス > データベース > RDS とクリック

↑ Amazon RDSの専用画面。"Create Database"という色付きのボタンがあるのでそれをクリック。

↑ Standard create"でも十分簡単に設定できるので、"Standard create"を選択。

その下に、どのデータベースエンジンを使うのか選択する項目があります。どれを選んでも基本的に出来ないものは無いと思いますので、それぞれ微妙に異なるメリット・デメリット・特徴を考慮した上で好きなものを選べば良いでしょう。

私はPostgreSQLの操作に親しみがあったのと、周りのエンジニアも大体PostgreSQLを使っているという単純な理由でPostgreSQLにしました。

以下、Standard create/PostgreSQLを選択したものとして進めます。

↑ テンプレート画面

とりあえずデータベースを使ってみる場合はFree tierで大丈夫でしょう。無料枠でも20Gまでは使えますし、それ以上のデータ量を使用する場合であっても後から幾らでも対応出来ます。

↑ 設定画面

DB Instance Identifierには好きなデータベースの名前を入れましょう。次にマスターユーザーネーム、マスターパスワードを設定します。特段理由が無い限りマスターユーザーネームはデフォルト設定のpostgresで大丈夫です。

↑ 作成したデータベースインスタンスの設定

DBインスタントはdb.t3.microとdb.t4g.microの二つを選べますが、どちらも見る限り性能は一緒・無料枠対象なのでどちらでも大丈夫です。

20GBまでフルに使おう

↑ ストレージの設定画面

20GBまで汎用ストレージ(SSD)が無料なので、とりあえず20GBで設定しておきましょう。容量が不足した際に自動的に容量を追加してくれる設定:オートスケール設定 は必要であればオンにしておきましょう。

自分以外も使うならPublic AccessはYes

接続設定は基本的にデフォルトで大丈夫ですが、構築したデータベースを自身の仮想環境以外でもアクセス可能にしたい場合はPublic accessをYesにしましょう。

私の場合は作成したデータベースを複数箇所から複数人がアクセス出来る必要があったので、Yesに設定しています。

他にもDatabase Authentificationやモニタリングといった設定項目はありますが、基本デフォルトのままで大丈夫です。

無料枠はここでも確認できる

以上で設定は完了です。Create databaseという色付きのボタンを押しましょう。

StatusがCreating からAvailableになるまで待ち

データベースが実際に出来るまでに10分前後時間がかかります。

次にPythonからこのデータベースを操作していきますが、ここで大事な事前作業があります。それはセキュリティの設定です。現状のままではPythonやpgAdmin4等から接続することが出来ません。

私自身データベースはいつもセキュリティで躓いている気がするので、それもあって今回の作業を残しています。

セキュリティ設定

RDS > Databasesから作成したデータベースを選択。Security group rulesの項目でTypeにinboundを含むものをクリック。

Edit inbound rulesのボタンを押す

Add rule > All traffic > My IPとすることで、自身のIPアドレスでのアクセスが許容されるようになります。

Anywhere-IPv4とすると、誰でもアクセス可能に出来ますが、その際は不正なアクセスも許容してしまう可能性もあるので注意が必要です。

これでPythonでクラウドデータベースを操作する準備が整いました。お疲れ様です。

Pythonでデータベースにアクセス

Pythonのpsycopg2を利用したPostgreSQLへのアクセス方法についての説明記事はネット上に沢山あるので、ここでは概略のみを記載します。

↑ この画面のEndpointとPortの値を使用するので控えておきましょう。

↑ psycopg2でアクセスする一例

最後に

Amazon RDSの設定は非常に簡単です。リレーショナルデータベースをサーバーレスで安く抑えたいならAmazon Aurora サーバーレスというような選択肢もあると思いますが、AWS lambdaとの相性が良くなかったり自身の仮想環境以外からのアクセスに難点があったりします。

従って、まずはデータベースの基本であるリレーショナルデータベースをクラウドで扱ってみたいとなれば、とりあえずAmazon RDSから始めてみるのは良いでしょう。


#プログラミング #留学 #アメリカ #AI #エンジニア #Amazon #海外留学 #機械学習 #ニューヨーク #Google #アマゾン #アメリカ留学 #海外就職 #統計学 #データサイエンス #シリコンバレー #博士課程 #データサイエンティスト #グーグル #社会人留学 #深層学習 #フロントエンド #修士論文 #NewYork #ハーバード大学 #GAFAM #ソフトウェアエンジニア #deep_learning #MIT #バックエンド #コンピュータサイエンス #初期臨床研修医 #ベイズ統計 #USMLE #matching #スタンフォード大学 #アメリカ就職 #コロンビア大学 #PhD #FANG #レジデンシー #海外PhD #アイビーリーグ #理系留学 #理系大学院 #サイエンティスト #Polymath #Computer_Science #residency


この記事が気に入ったらサポートをしてみませんか?