Joshua GermonNotes

25-08-22

The one must-have feature Backblaze is missing is POST pre-signed URLs

Now before you go and link me to their docs, yes, they do have pre-signed URLs in their S3-Compatible API. Unfortunately though, not POST pre-signed URLs. What’s the difference you ask? I’ll explain.

S3 has two pre-signed URL options. A PUT pre-signed URL that will generate a valid link for your client to upload any file while the link remains active within it’s expiration time. This is supported by Backblaze B2. S3’s POST pre-signed URL works in the same way, however the difference is it allows you to create a policy that validates and enforces specific rules such as mime type and filesize.

This is huge for client facing applications that upload a lot of files.

For me this is the difference between requring a “proxy/man in the middle” server to upload the files to and then validate before passing onto S3 normally. Versus being able to pass the data directly from the client saving duplicate bandwidth and overhead.

Unfortunately I have not been able to find a competing service to S3 that offers this through their “S3-Compatible” API. From my quick look at Digital Oceans Spaces, they also do not have this. Neither do Cloudflare’s new in beta R2 which looks very promising. Hopefully Cloudflare does add this feature and their service becomes a significant competitor against S3 as right now it seems for my use I need to stick with Amazon and their exorbitant fees (particularly egress which is free behind a CDN on B2, Azure and Cloudflare as apart of the bandwidth alliance).