pub struct S3Storage { /* private fields */ }Implementations§
Source§impl S3Storage
impl S3Storage
Sourcepub fn presigned_put(&self, key: &str, expires: Duration) -> Result<String>
pub fn presigned_put(&self, key: &str, expires: Duration) -> Result<String>
A URL a browser can PUT a file to directly.
This is how a large upload should reach the bucket. A video that
passes through the application costs the server the whole file in
memory and the transfer twice. The server issues this URL, the browser
uploads, and the server is told the key afterwards — it never holds a
byte. For anything over a few hundred megabytes, use
S3Storage::create_multipart instead, so a dropped connection costs
one part rather than the whole file.
The browser may send any headers it likes; only the host is signed.
Sourcepub fn presigned_get(&self, key: &str, expires: Duration) -> Result<String>
pub fn presigned_get(&self, key: &str, expires: Duration) -> Result<String>
A URL that reads a private object for a while, for handing a visitor a download without making the object public.
Sourcepub async fn create_multipart(&self, key: &str) -> Result<Multipart>
pub async fn create_multipart(&self, key: &str) -> Result<Multipart>
Begin a multipart upload. Returns the id every part must carry.
Sourcepub fn presigned_part(
&self,
upload: &Multipart,
number: u32,
expires: Duration,
) -> Result<String>
pub fn presigned_part( &self, upload: &Multipart, number: u32, expires: Duration, ) -> Result<String>
A URL the browser PUTs one part to. Parts are numbered from 1, every
part but the last must be at least MIN_PART_BYTES, and there may be
at most MAX_PARTS. The ETag header of the response is what
S3Storage::complete_multipart needs back.
Sourcepub async fn complete_multipart(
&self,
upload: &Multipart,
parts: Vec<Part>,
) -> Result<()>
pub async fn complete_multipart( &self, upload: &Multipart, parts: Vec<Part>, ) -> Result<()>
Join the parts into the object. parts in any order; they are joined
by number.
Sourcepub async fn abort_multipart(&self, upload: &Multipart) -> Result<()>
pub async fn abort_multipart(&self, upload: &Multipart) -> Result<()>
Give up on a multipart upload, freeing the parts already stored.
Call it when the browser goes away. Parts of an abandoned upload are billed until this is called or a lifecycle rule removes them.
Sourcepub async fn expire_after(&self, prefix: &str, days: u32) -> Result<()>
pub async fn expire_after(&self, prefix: &str, days: u32) -> Result<()>
Tell the bucket to delete objects under prefix after days, and to
clean up multipart uploads nobody finished after the same time.
This replaces the bucket’s whole lifecycle configuration. A bucket has one, and S3 has no way to add a rule without sending the rest. If somebody has configured rules in the console, this overwrites them — which is why the prefix is required rather than defaulting to everything.