[large]はじめに[/large] メール添付では送りにくい大容量ファイルや、パスワード付きZIPを別メールで送る運用は、現場ではまだよく使われています。
ただ、業務で使い続けるには次のような課題があります。
添付ファイルの容量制限に引っかかる 送信後に共有を止めにくい 誰がダウンロードしたか分からない URLやパスワードの扱いが属人的になる 無料ファイル便では自社ドメインや履歴管理が難しい そこで、Cloudflare のサービスを使って、自社ドメインで運用できるファイル共有サービス を構築する方法を考えます。
LWJ ではこの考え方をもとに、LWJ Secure Share という法人向けファイル共有サービスを構成しています。
この記事のコードや設定値は説明用に簡略化したサンプルです。実際の運用環境のURL、バケット名、APIキー、Webhook URL、顧客情報は掲載していません。
全体構成 基本構成は次の通りです。
flowchart LR USER[送信者] PAGE[Cloudflare Pagesアップロード画面] WORKER[Workers FunctionsAPI処理] R2[Cloudflare R2ファイル保存] D1[Cloudflare D1共有情報・履歴] MAIL[Google Apps Scriptまたはメール配信サービス] RECEIVER[受信者]
USER --> PAGE
PAGE --> WORKER
WORKER --> R2
WORKER --> D1
WORKER --> MAIL
MAIL --> RECEIVER
RECEIVER --> WORKER
WORKER --> R2
役割を分けると、こうなります。
Cloudflare Pages: 管理画面、アップロード画面、ダウンロード画面 Workers Functions: アップロード、共有URL発行、OTP検証、ダウンロード制御 Cloudflare R2: 実ファイルの保存 Cloudflare D1: 共有情報、宛先、OTP、履歴、監査ログ Google Apps Script: 共有案内メールやOTPメールの送信 小規模な構成なら、サーバーを自前で持たずに始められるのが利点です。
保存する情報 ファイル共有サービスでは、ファイルそのものだけでなく、共有状態や履歴も管理します。
最小構成なら、D1には次のようなテーブルを用意します。