スターターアプリ

非公開 storage upload

policy、entitlement、quota、checksum、永続削除を備えた S3 互換の非公開 upload を設定します。

スターターのコミット 7d452a6 と同期済みです。

STORAGE_PROVIDERs3r2minio にし、bucket、region、endpoint、credential を設定します。object は非公開で browser は短期 presigned URL のみ受け取ります。Web origin と PUT header の CORS を設定し、provider が要求しない ACL は使いません。

Upload 契約

  1. POST /api/storage/uploads は組織、storage.upload、policy(generalimagesdocumentsverified)、type、plan/env/policy の最小 size cap を検証し quota を原子的に予約します。
  2. browser は object storage に直接 PUT し、XHR は進捗表示だけに使います。
  3. POST /api/storage/uploads/complete が metadata と任意 SHA-256 を確認して active にします。
  4. GET /api/storage/files/[uuid]?download=1 が組織限定の署名 URL を返します。
  5. DELETE /api/storage/files/[uuid] が soft-delete し永続 storage_object_delete job を登録します。

未完了 upload は 1 時間後に予約を解放します。削除は queue で再試行するため cron が必要です。object key は service が生成し、client に選ばせません。

全 flow、不正 MIME/checksum、quota race、期限切れ URL、組織越境、削除 retry、cleanup をテストします。CORS 詳細はスターターの docs/storage-providers.md を参照してください。

On this page

非公開 storage upload · Sushi SaaS