The operational constraint is simple: a healthtech export may be generated by one worker, downloaded later by another user session, and large enough to compete with normal API traffic. Short answer: keep authentication and authorization in the application, write the completed artifact to object storage, and give the authorized browser a short-lived signed URL. Store the bytes on the app server only when the file is small, ephemeral, and consumed inside the same request.
That is a delivery decision, not a price contest. The invariants are stronger than the storage brand: an export has one stable identity, its key does not reveal a tenant's sensitive data, the application checks authorization before minting access, and a failed or partial job cannot become a downloadable report.…