Add ability to serve directly from object storage #18
Closed
opened 2023-07-11 18:41:56 +00:00 by asonix
·
1 comment
No Branch/Tag specified
main
asonix/remove-ring
asonix/update-metrics-023
asonix/update-opentelemetry-023
asonix/update-tokio-postgres-rustls
asonix/update-actix-web-rustls
asonix/update-reqwest
asonix/update-metrics-exporter-prometheus
asonix/backgrounded-variants
asonix/per-upload-limits-and-operations
asonix/blurhash
asonix/use-bytes-stream
v0.4.x
asonix/describe-metrics
asonix/fewer-arguments
asonix/eyra-playing-3
asonix/tmp-dir
asonix/eyra-playing-2
asonix/eyra-playing
asonix/streem
v0.3.x
v0.2.x
v0.1.x
v0.5.16
v0.5.15
v0.5.14
v0.5.13
v0.5.12
v0.5.11
v0.5.10
v0.5.9
v0.5.8
v0.5.7
v0.4.8
v0.5.6-throwaway-tag-32
v0.5.6-throwaway-tag-31
v0.5.6-throwaway-tag-30
v0.5.6-throwaway-tag-29
v0.5.6-throwaway-tag-28
v0.5.6-throwaway-tag-27
v0.5.6-throwaway-tag-26
v0.5.6-throwaway-tag-25
v0.5.6-throwaway-tag-24
v0.5.6-throwaway-tag-23
v0.5.6-throwaway-tag-22
v0.5.6-throwaway-tag-21
v0.5.6-throwaway-tag-20
v0.5.6-throwaway-tag-19
v0.5.6-throwaway-tag-18
v0.5.6-throwaway-tag-17
v0.5.6-throwaway-tag-16
v0.5.6-throwaway-tag-15
v0.5.6-throwaway-tag-14
v0.5.6-throwaway-tag-13
v0.5.6-throwaway-tag-12
v0.5.6-throwaway-tag-11
v0.5.6-throwaway-tag-10
v0.5.6-throwaway-tag-9
v0.5.6-throwaway-tag-8
v0.5.6-throwaway-tag-7
v0.5.6-throwaway-tag-6
v0.5.6-throwaway-tag-5
v0.5.6-throwaway-tag-4
v0.5.6-throwaway-tag-3
v0.5.6-throwaway-tag-2
v0.5.6-throwaway-tag
v0.5.6
v0.5.5
v0.5.4
v0.5.3
v0.5.2
v0.5.1
v0.5.0
v0.5.0-rc.10
v0.5.0-rc.9
v0.5.0-rc.8
v0.5.0-rc.7
v0.5.0-rc.6
v0.5.0-rc.5
v0.5.0-rc.4
v0.5.0-rc.3
v0.5.0-rc.2
v0.4.7
v0.5.0-rc.1
v0.4.6
v0.5.0-beta.2
v0.5.0-beta.1
v0.5.0-alpha.20
v0.4.5
v0.5.0-alpha.19
v0.4.4
v0.5.0-alpha.18
v0.4.3
v0.5.0-alpha.17
v0.5.0-alpha.16
v0.5.0-alpha.15
v0.5.0-alpha.14
v0.5.0-alpha.13
v0.5.0-alpha.12
v0.5.0-alpha.11
v0.5.0-alpha.10
v0.4.2
v0.5.0-alpha.9
v0.4.2-rc.5
v0.5.0-alpha.8
v0.5.0-alpha.7
v0.5.0-alpha.6
v0.5.0-alpha.5
v0.4.2-rc.4
v0.4.2-rc.3
v0.4.2-rc.2
v0.5.0-alpha.4
v0.4.2-rc.1
v0.4.1
v0.5.0-alpha.3
v0.5.0-alpha.2
v0.4.1-rc.2
v0.5.0-alpha.1
v0.4.1-rc.1
v0.5.0-alpha.0
v0.4.1-rc.0
v0.4.0
v0.4.0-rc.14
v0.4.0-rc.13
v0.4.0-rc.12
v0.4.0-rc.11
v0.4.0-rc.10
v0.4.0-rc.9
v0.4.0-rc.8
v0.4.0-rc.7
v0.4.0-rc.6
v0.4.0-rc.5
v0.4.0-rc.4
v0.4.0-rc.3
v0.4.0-rc.2
v0.3.3
v0.4.0-rc.1
v0.4.0-beta.19
v0.4.0-beta.18
v0.4.0-beta.17
v0.4.0-beta.16
v0.4.0-beta.15
v0.4.0-beta.14
v0.4.0-beta.13
v0.4.0-beta.12
v0.4.0-beta.11
v0.4.0-beta.10
v0.4.0-beta.9
v0.4.0-beta.8
v0.4.0-beta.7
v0.4.0-beta.6
v0.4.0-beta.5
v0.4.0-beta.4
v0.4.0-beta.3
v0.4.0-beta.2
v0.4.0-beta.1
v0.4.0-alpha.9
v0.4.0-alpha.8
v0.4.0-alpha.7
v0.4.0-alpha.6
v0.3.2
v0.4.0-alpha.5
v0.4.0-alpha.4
v0.4.0-alpha.3
v0.4.0-alpha.2
v0.4.0-alpha.1
v0.3.1
v0.3.0
v0.3.0-rc.9
v0.3.0-rc.8
v0.3.0-rc.7
v0.3.0-rc.6
v0.3.0-rc.5
v0.3.0-rc.4
v0.3.0-rc.3
v0.3.0-rc.2
v0.3.0-rc.1
v0.3.0-beta.20
v0.3.0-beta.19
v0.3.0-beta.18
v0.3.0-beta.17
v0.3.0-beta.16
v0.3.0-beta.15
v0.3.0-beta.14
v0.3.0-beta.13
v0.3.0-beta.12-r1
v3.0.0-beta.12-r1
v0.3.0-beta.12
v0.3.0-beta.11
v0.3.0-beta.10
v0.3.0-beta.9
v0.3.0-beta.8
v0.3.0-beta.7-r11
v0.3.0-beta.7-r10
v0.3.0-beta.7-r9
v0.3.0-beta.7-r8
v0.3.0-beta.7-r7
v0.3.0-beta.7-r6
v0.3.0-beta.7-r5
v0.3.0-beta.7-r4
v0.3.0-beta.7-r3
0.3.0-beta.7-r3
0.3.0-beta.7-r2
v0.3.0-beta.7-r1
v0.3.0-beta.7
v0.3.0-beta.6
v0.3.0-beta.5
v0.3.0-beta.4
v0.3.0-beta.3
v0.3.0-beta.2
v0.3.0-beta.1
v0.3.0-alpha.43
v0.3.0-alpha.42
v0.3.0-alpha.41-r1
v0.3.0-alpha.41-r0
v0.3.0-alpha.41
v0.3.0-alpha.40
v0.3.0-alpha.39
v0.3.0-alpha.38-r0
v0.3.0-alpha.38
v0.3.0-alpha.37
v0.3.0-alpha.36
v0.3.0-alpha.35
v0.3.0-alpha.34
v0.3.0-alpha.33
v0.3.0-alpha.32
v0.3.0-alpha.31
v0.3.0-alpha.30
v0.3.0-alpha.29
v0.3.0-alpha.28
v0.3.0-alpha.27
v0.3.0-alpha.26-r2
v0.3.0-alpha.26-r1
v0.3.0-alpha.26-r0
v0.3.0-alpha.26
v0.3.0-alpha.25
v0.3.0-alpha.24
v0.3.0-alpha.23
v0.3.0-alpha.23-fewer-streams-r1
v0.3.0-alpha.23-fewer-streams
v0.3.0-alpha.22-in-mem
v0.3.0-alpha.21-in-mem-r1
v0.3.0-alpha.21-in-mem
v0.3.0-alpha.20-in-mem
v0.3.0-alpha.19
v0.3.0-alpha.18
v0.3.0-alpha.17
v0.3.0-alpha.16
v0.3.0-alpha.15-r2
v0.3.0-alpha.15-r1
v0.3.0-alpha.15-r0
v0.3.0-alpha.15
v0.3.0-alpha.14
v0.3.0-alpha.13-r1
v0.3.0-alpha.13-r0
v0.3.0-alpha.13
v0.3.0-alpha.13-shell-out-r4
v0.3.0-alpha.13-shell-out-r3
v0.3.0-alpha.13-shell-out-r2
v0.3.0-alpha.13-shell-out-r1
v0.3.0-alpha.13-shell-out-r0
v0.3.0-alpha.13-shell-out
v0.3.0-alpha.12-r0
v0.3.0-alpha.11-r0
v0.3.0-alpha.11
v0.3.0-alpha.10
v0.2.6-r2
v0.3.0-alpha.9
v0.3.0-alpha.8-r1
v0.2.6-r1
v0.3.0-alpha.8
v0.3.0-alpha.7-r0
v0.3.0-alpha.6
v0.3.0-alpha.5
v0.3.0-alpha.4-r0
v0.3.0-alpha.4
v0.3.0-alpha.3
v0.3.0-alpha.2-r0
v0.3.0-alpha.1-r0
v0.3.0-alpha.0-r0
v0.3.0-alpha.0
v0.2.6-r0
v0.2.5-r0
v0.2.4-r0
v0.2.3-r0
v0.2.2-r0
v0.2.1-r0
v0.2.0-r0
v0.2.0-alpha.8-r0
v0.2.0-alpha.7
v0.2.0-alpha.6-r1
v0.2.0-alpha.6
v0.2.0-alpha.5
v0.2.0-alpha.4-r0
v0.2.0-alpha.3
v0.2.0-alpha.2-r2
v0.2.0-alpha.2-r1
v0.2.0-alpha.2-r0
v0.2.0-alpha.2
v0.2.0-alpha.1
v0.1.13-r0
v0.1.12
v0.1.11-r0
v0.1.10-r1
v0.1.10-r0
v0.1.9-r0
v0.1.8-r0
v0.1.7-r0
v0.1.6-r0
v0.1.5-r0
v0.1.4-r0
v0.1.3-r1
v0.1.3-r0
v0.1.3
v0.1.2-r0
v0.1.1-r0
v0.1.0-r13
v0.1.0-r12
v0.1.0-r11
v0.1.0-r10
v0.1.0-r9
v0.1.0-r8
v0.1.0-r7
v0.1.0-r6
v0.1.0-r5
v0.1.0-r4
v0.1.0-r3
v0.1.0-r2
v0.1.0-r1
v0.1.0
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference: asonix/pict-rs#18
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This will likely mean returning a redirect from the
original
orprocess
endpoints, and letting the client re-fetch from the redirected URL.Downstream proxies should be weary of configuring clients that follow redirects, since this will mean the server will still proxy media, just bypassing pict-rs for serving the image.
Another thing to consider is whether object stores should duplicate files per-alias to give unique links for deduplicated images, or if it's fine that although a redirect URL can be removed, the true URL will exist until all copies of an image are removed from pict-rs.
This might also require changes to inform object storage of the content type of uploaded bytes, so that it can properly set the header when serving media.
Finally, all this should be optional. pict-rs should be able to use object storage as a backend without generating object storage redirect responses.
added to main