この記事は、2000年代の旧電子カルテアプリを AWS 上で再構築し、Windows2000の VM から リモートで PostgreSQL に接続するところまで成功した技術ログです。
成功・失敗・試行錯誤すべてを “備忘録として残す” 目的でまとめています。
1. 目的
- 旧電子カルテ(Windows2000 + PostgreSQL)の環境を検証目的で復元したい
- AWS 上に Windows Server を構築し、DB を立ち上げる
- Windows2000(VM)の電カルアプリから リモートで DB に接続できるか検証
- できればアプリも起動させたい
- 最終的には DB を別用途で使えるようにすること
2. AWS 側の構築
■ Windows Server 2022 を EC2 で構築
- インスタンスタイプ:最初 t3.medium
- ElasticIP:今回は 使用しない(検証環境のため割り切り)
■ ネットワーク設定
- セキュリティグループで PostgreSQL ポート(5433)を開放
- ただし 自分のグローバルIP のみに限定
(→ リスク最小限でパブリックIP接続を許可)
3. PostgreSQL 8.x の構築
■ 3-1. PostgreSQL 8.2 → インストールエラー
管理者実行トラブル等あり断念
■ 3-2. PostgreSQL 8.4 で再構築
安定して動作。
■ 設定(postgresql.conf)
listen_addresses = '*'
port = 5433
■ pg_hba.conf
host all all 127.0.0.1/32 md5
host all all <自分のグローバルIP>/32 trust
AWS 内でも psql による接続確認:
.\psql.exe -h 127.0.0.1 -p 5433 -U postgres
→ 接続成功
DB が正常に起動していることを確認。
4. Windows2000(VM)からのリモート接続テスト
ここが今回の記事の中心となる「成功ポイント」。
✔ 4-1. 電カル側の接続先を AWS のパブリックIP に変更
開発した電子カルテは起動時のログイン画面で DB 認証を行うため、
以下を設定:
Server = <AWSのパブリックIP>
Port = 5433
User = postgres(または設定したアカウント)
✔ 4-2. セキュリティグループで 5433 を “自分のIP のみ許可” に設定
→ 全世界に開くことはせず、
検証用途として最低限のリスクに限定
✔ 4-3. リモート接続結果 → 成功!
Windows2000 上で電カルを起動すると:
- ログイン画面が出現
- 認証成功
- DBと正常通信を開始
つまり、
Windows2000(VM) → AWS PostgreSQL(パブリックIP)
という「リモートDB接続」に成功した。**
これは今回の大きな成果。
5. SSHポートフォワード方式も検証(結果:不採用)
■ 5-1. ホストPC から PowerShell で SSHトンネルを作成
ssh -L 5433:127.0.0.1:5433 <AWSユーザー>@<EC2 Public IP>
■ 5-2. トンネル自体は成功(netstat の LISTENING も確認)
Win2000 からの telnet も通った。
■ 5-3. しかし電カルアプリは DB に接続できず
原因は複合的:
- Windows2000 の TCP/IP スタックが現代 SSH トンネルと相性悪い
- ODBC/INI の参照位置が複雑
- VM の NAT → Host-only のルーティング
など。
結論:
パブリックIP で接続できていれば、SSH トンネルにこだわる必要はない。
→ 今回の目的の範囲では“不採用”と判断。
6. 電カルアプリ起動結果
- ログイン:成功(リモートDB接続成功の証拠)
- メイン画面:表示されるが ストアドプロシージャの互換性エラー多発
- 電子カルテアプリのロジックが DB(PostgreSQL 8.4)に依存
- 古い関数や PL/pgSQL の仕様変更で動作不可
→ アプリとしての実用は困難 と判断。
7. 今後に向けて
- 医療DBの構造分析研究
- FHIRリソースへのマッピング研究
- データ移行の検証
- システム設計の参考資料
として活用していこうと思う