public-cloud-roadmap
public-cloud-roadmap copied to clipboard
Browser based POST object
Uploading files to a S3 bucket typically requires a backend that acts as an intermediary and calls our S3 compatible API PutObject. However, you may want a frontend application to upload files directly to S3 without having the need for a backend service in order to reduce latency without sacrificing security.
In browser based POST object requests, a web form will be able to directly POST and object to S3 providing alsongside the file, authentication and authorization data to our storage servers, thus eliminating the need for an intermediary backend.
The following functionalities will be supported:
- secure S3 compatible POST object endpoint based on bucket policies and ACLs
- object encryption using SSE-C (customer provided encryption key)
- object integrity checks
The following configuration elements will not be supported for now but will be in the future:
- POST objects to COLD STORAGE (deep archive)
Hi, is there any ETA for this? Really interested, we currently use the Standard Object Storage SWIFT API as we need users browsers to be able to POST directly to the storage, but are unhappy with performance.
Direct upload/download is already possible with presigned urls and javascript: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/examples-s3-presign.html
@notz it's not a presigned POST. There is a difference between presigning GET/PUT and POST, mainly that the presigned POST allows for extra policies to be set.
EDIT: honestly this one should be prioritized together with adding clarifications to what's supported and what's not when it comes to S3 API (there is a table for that but it took me ages to dig up after hours of attempts to make the POST presign work with no avail). Gotta use alternatives for now.
I second the request for pre-signed POST URLs! It took me half a day to end put here. Please update your documentation so it is obvious in case you look for Pre-Signed URLs!
After weeks of trying to get this thing to work, I learn that it's not yet supported... I don't even understand why it's not stated in the documentation 😐