「AWSに移行した」と言えば、なんだか大仕事を成し遂げた気分になる。

実際、AI秘書「セドナ」をローカルのWindows機からAWS EC2へ移す作業は、それなりの達成感があった。.pemキーを手にして、EC2インスタンスに初めてSSHで接続したとき、小さくガッツポーズをした記憶がある。

でも、その達成感が冷めるのに、それほど時間はかからなかった。

「あれ、これ、まだ全然終わってないじゃないか」

① なぜAWSに移行しようと思ったか

セドナの起動手順を振り返ると、その「もろさ」がよくわかる。

ステップ1: uvicornサーバー起動(ターミナル1)
ステップ2: ngrok起動(ターミナル2)
ステップ3: 動作確認

ターミナルを2つ開いて、順番に起動する。どちらか落ちたら、LINEからのメッセージは届かなくなる。パソコンをシャットダウンしたら、当然セドナも沈黙する。

つまり、私が仕事しているときしか、秘書も働けない——という、なんとも本末転倒な状態だった。

「外出先からでも、夜中でも、いつでもセドナに話しかけたい。」

それがAWS移行を決めた、シンプルな動機だ。

② EC2移行で「できたこと」

AWS EC2インスタンスを立ち上げ、セドナのコードを載せた。

主な構成はこうだ。

  • FastAPI + uvicorn:LINEからのWebhookを受け取るサーバー
  • LINE Messaging API:スマホから自然言語で操作
  • Claude API(claude-sonnet-4-6):AI本体
  • 各種ツール連携:Gmail、Googleカレンダー、WordPress、スクレイピングなど

AWSのEC2に置くことで、サーバーは24時間稼働し続ける。パソコンを閉じても、出先でも、セドナは動き続けられる——はずだった。

③ 移行してわかった「まだ終わっていないこと」

問題1:Google認証の壁

ローカル環境では、Googleの認証(OAuth)をブラウザで行っていた。credentials.jsonをダウンロードして、初回起動時にブラウザが開いて、「許可する」をクリックして完了。

これがEC2では、そのままでは動かない。

サーバーにはブラウザがない。GUIがない。「ブラウザで認証してください」と言われても、ターミナルしか開けない環境で、どうするのか。サービスアカウントを使う方法、headless認証のフロー、認証済みトークンをあらかじめ用意してEC2に置く方法——いくつかの選択肢はある。でも、「ちゃんとやる」には、それなりの設計が必要だ。

問題2:ngrokとの決別

ローカルではngrokを使って外部からのアクセスを受け付けていた。

ngrok http --url=flatfoot-deck-dispersal.ngrok-free.dev 8000

EC2に移行した今、このngrokは不要になるはずだ。代わりに、EC2のElastic IPを使い、独自ドメインでHTTPS対応する必要がある。LINEのWebhook URLはHTTPS必須なので、SSLの設定も欠かせない。「ngrokを外せばいい」——それだけに聞こえるが、やることリストは地味に多い。

問題3:Windowsべったりなライブラリ

requirements.txtを眺めると、気になる行がある。

pywinauto>=0.6.8
pyautogui>=0.9.54

これらはWindows用のGUI操作ライブラリだ。EC2のLinux環境では動かない。開発初期に「いつか使うかも」と入れたまま放置していたものが、移行の壁として残っている。

問題4:SQLiteとデータの永続性

スクレイピング結果はscraped_pages.db(SQLite)に保存している。タスク管理はtasks.json。EC2のデフォルト環境では、インスタンスを停止・再起動するとストレージの状態が変わるリスクがある。データをどこに永続化するか——EBSのボリューム設定か、S3との連携か——きちんと設計しないと、ある日突然、セドナの記憶が消える。

問題5:プロセス管理

EC2上でuvicornを起動したとして、それが落ちたとき、自動で再起動する仕組みが必要だ。systemdでサービス登録するのか、supervisorを使うのか。「起動したら動き続ける」は、当たり前のようで、きちんと設計しないと実現しない。

④ Cowork環境移設、という視点

AWS移行と並行して、もう一つ考えていることがある。

私は一人社長だが、クライアント先に常駐することもある。コワーキングスペースで仕事する日もある。自宅の書斎もある。「どこにいても、同じようにセドナが使える環境」——これが、私の言う「Cowork環境移設」の本質だ。

ローカルのWindowsで動いていたころは、家のパソコンの前に座らないとセドナは使えなかった。AWSに移行したことで、「サーバーはどこかで動き続けている」状態にはなった。でも、まだ課題は残る。

  • 認証情報の管理:APIキーや.envファイルを、複数の環境でどう安全に管理するか
  • Googleの認証トークン更新:定期的に期限が切れるトークンを、どう自動更新するか
  • 障害時の通知:サーバーが落ちたとき、どうやって気づくか

「AWSに載せた」は、スタート地点でしかなかった。

⑤ それでも、前に進んでいる

正直に言えば、この「まだまだやることがある」リストを見ると、少し気が重くなることもある。でも同時に、こうも思う。

「問題を見える化できた、ということは、解決に向けて動ける、ということだ。」

セドナを自分で作り、自分でAWSに移行しようとしたからこそ、見えてきた課題がある。外注していたら、「なんかうまく動かない」で終わっていたかもしれない。自分で手を動かしたから、問題の輪郭がはっきりした。サイバーセキュリティの仕事を長年やってきた経験から言えば、「見えていないリスク」が一番怖い。見えているリスクは、対処できる。

⑥ 次にやること(正直なリスト)

備忘録も兼ねて、残タスクを書いておく。

インフラ系

  • Google OAuth → サービスアカウント or headless認証に切り替え
  • EC2にElastic IP割り当て・ドメイン設定
  • Let’s EncryptでSSL証明書取得・自動更新設定
  • systemdでuvicornをサービス登録
  • SQLite・tasks.jsonのバックアップ戦略(S3連携など)

コード整理

  • pywinauto / pyautogui を削除(Linux環境では不要)
  • .envファイルのAWS Secrets Manager移行検討
  • ログ出力の整備(CloudWatch連携)

運用

  • サーバー死活監視の設定(UptimeRobotなど)
  • 障害時のLINE通知フロー設計
  • 本番カレンダーIDへの切り替え確認

やること多い。でも、一つずつやるしかない。

おわりに

「AWSに移行した」と書けば聞こえはいいが、実態は「移行の入口に立った」が正確だ。

インフラの世界は、完成がない。セキュリティも、完全はない。常に「今の時点でのベストを選び、改善し続ける」ことしかできない。それはたぶん、経営も、人生も、同じだと思っている。

AI秘書セドナは、まだ成長中だ。私も、まだ成長中だ。

Cowork環境移設の完了を宣言できる日を目指して、少しずつ、丁寧に進んでいく。

株式会社トーラス・ライフ 代表

#AWS #EC2 #AI秘書 #セドナ #Claude #FastAPI #LINE連携 #サーバー移行 #一人社長 #インフラ #DX #サイバーセキュリティ