SWINGCOMPASS AI — MIGRATION PLAN — 2026.07.26

S3 → R2 移行 実行計画Cloudflare 専用アカウント新規作成 + ドメイン DNS 移行 + 動画ストレージ移行

目次

決定事項(先に要点)

DECISION — 2026.07.26

現状の調査結果

AS-IS
項目現状移行後
ストレージ処理のコードbackend/app/services/storage_s3.py が S3 互換実装変更なし
ドメイン swingcompass-ai.comAmazon Registrar 登録 / Route 53 で DNS 管理DNS を Cloudflare へ(レジストラ移管は任意)
ドメイン swingcompass.aiDNS が引けない=未取得の可能性要確認(アプリ内で参照中)
S3 のデータ量未計測10GB 未満なら R2 の無料枠内
Cloudflare アカウントcourse-guides 用が既存SwingCompassAI 専用を新規作成

swingcompass.aifrontend/src/lib/share.ts(招待リンク)と legal.ts(サポート窓口メール)が参照しています。取得済みかどうかの確認が必要です。

全体の流れ(8ステップ)

ROADMAP

順序が重要です。DNS を先に移さないと、動画配信用の独自ドメイン設定が後戻り作業になります。

1

Cloudflare 専用アカウント作成

専用メールアドレス・2要素認証・クレジットカード登録(R2 有効化に必須。10GB まで無料)

2

DNS を Route 53 → Cloudflare

無料・即日。ここが最初の山場

3

レジストラ移管(任意・後回し可)

ドメインの管理会社そのものを移す。急がない

4

R2 バケット作成

保存場所は APAC(日本のユーザーに近い)

5

データ移行

Super Slurper で S3 から一括コピー

6

環境変数の切替

Vercel と Worker ホストの両方

7

実機検証

アップロード → 解析 → 再生を通しで確認

8

AWS 撤収

差分コピー → 様子見 → S3 削除

ステップ1〜2:アカウント作成と DNS 移行

SETUP

DNS とは、ドメイン名(swingcompass-ai.com)を実際のサーバーに結びつける「住所録」です。今はこの住所録を AWS の Route 53 が持っており、それを Cloudflare に引っ越します。

  1. Cloudflare で「サイトを追加」→ swingcompass-ai.com → Free プラン
  2. 既存レコードが自動スキャンされる。Route 53 の全レコードと突合して欠落がないか確認(特に Resend のメール認証用 SPF / DKIM、beta. の接続先)
  3. Cloudflare が提示する2つのネームサーバーを控える
  4. Route 53 コンソール →「登録済みドメイン」→ ネームサーバーを編集して貼り替え
  5. 伝播確認(通常1〜数時間)。完了したら Route 53 のホストゾーンを削除して月 $0.5 を削減
注意

Cloudflare の「プロキシ(オレンジ色の雲アイコン)」は、最初はオフ(グレー)にしておきます。Vercel 宛のレコードをプロキシすると、SSL 証明書やリダイレクトで不具合が出ることがあります。

ステップ3:レジストラ移管(任意)

OPTIONAL

DNS 移行とは別の作業です。急がないので数ヶ月後でも構いません。Cloudflare Registrar は上乗せ手数料なしの原価提供で、.com も .ai も対応しています。

ステップ4〜5:R2 バケットとデータ移行

STORAGE

バケットとは、動画ファイルを入れておく箱のことです。名前は swingcompass、保存場所は APAC を選びます。作成後、読み書き権限を持つ「R2 API トークン」を発行します。

データのコピーは Super Slurper が推奨。Cloudflare 公式の一括コピー機能で、管理画面から AWS のアクセスキーを渡すだけで進捗と失敗件数が見えます。細かく制御したい場合は rclone を使います。

rclone copy s3:swingcompass-prod r2:swingcompass --progress --transfers 16

ステップ6〜7:設定切替と検証

CUTOVER

Vercel(frontend / admin-frontend / API)と Celery Worker ホスト(Fly.io / Railway)の両方に設定します。片方だけだと解析結果が保存されず、原因の分かりにくい不具合になります。

STORAGE_BACKEND=s3
S3_ENDPOINT_URL=https://<ACCOUNT_ID>.r2.cloudflarestorage.com
AWS_REGION=auto
AWS_ACCESS_KEY_ID=<R2 トークンの Access Key>
AWS_SECRET_ACCESS_KEY=<R2 トークンの Secret>
S3_BUCKET_NAME=swingcompass

検証項目:

ステップ8:AWS 撤収

TEARDOWN
1

差分コピー

切替後に増えた分だけ再コピー

2

数日〜1週間の様子見

すぐ消さない。不具合が出たら戻せる状態を保つ

3

S3 バケット削除 → IAM 削除 → アカウント整理

infra/terraform/ の AWS 定義も削除か保存かを判断

別途対応が必要なリスク

RISK

たきコーチへの宿題

NEXT ACTION
やること場所備考
Cloudflare 専用アカウント作成cloudflare.com専用メール+2要素認証+クレカ
S3 のデータ量を確認AWS マネジメントコンソールバケット →「メトリクス」タブ
swingcompass.ai を持っているか確認ドメイン購入履歴未取得なら取得の要否を判断

この3つが揃えば、DNS レコードの突合と環境変数の切替はこちらで進められます。

制約メモ

NOTES