fix(storage): use presigned URLs for private S3 buckets (7-day expiry)

This commit is contained in:
2026-07-18 08:24:40 +08:00
parent 2dc68ff408
commit d30fd59ade

View File

@@ -121,9 +121,12 @@ class S3Storage:
k = _strip_prefix(key) k = _strip_prefix(key)
if self.public_url: if self.public_url:
return f"{self.public_url}/{k}" return f"{self.public_url}/{k}"
# fallback: path-style URL from endpoint + bucket # private bucket: generate presigned URL (7 days expiry)
ep = self._client._endpoint.host return self._client.generate_presigned_url(
return f"{ep}/{self.bucket}/{k}" "get_object",
Params={"Bucket": self.bucket, "Key": k},
ExpiresIn=604800,
)
# ── Helpers ──────────────────────────────────────────────────────── # ── Helpers ────────────────────────────────────────────────────────