Skip to content

Presigned URL support for blob fields #17

Description

@msull

Split out of #10 (§10). Verified on main at 19.0.0: there is no generate_presigned_*
anywhere in src/.

Browsers need to download blob-backed files directly. Proxying them through Lambda is not
viable — the synchronous response caps at 6 MB and base64 inflates by a third.

The identity half of this is already solved: #9 / 18.1.0 added ETags to head_blob and
BlobPlaceholder, and if_match= on get_blob. Presigned access is the remaining gap for
anything user-facing.

Worth deciding as part of the design:

  • Download (get_object) and upload (put_object) are separable; download is the
    motivating case.
  • Whether the presigned URL can be pinned to a specific ETag, so a URL minted against one
    version of an overwritable key cannot silently serve a later one. get_blob already
    takes if_match; the presigned equivalent should be considered alongside it.
  • LocalBlobStorage needs a parity story, or an explicit documented one — it has no
    equivalent of a presigned URL, and tests that exercise this path will need something.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions