Skip to content

Commit 3bd034a

Browse files
design update for range param in request (#6248)
1 parent bdf7388 commit 3bd034a

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

docs/design/core/presignedURL-Get/DecisionLog.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
# S3 Pre-signed URL GET - Decision Log
33

4-
## Review Meeting: 06/17/2024
4+
## Review Meeting: 06/17/2025
55
**Attendees**: Alban, John, Zoe, Dongie, Bole, Ran, Saranya
66

77
### Closed Decisions
@@ -20,7 +20,7 @@
2020

2121
3. What should we name the Helper API? Options include PresignedURLManager or PresignedUrlExtension. Will be addressed in the Surface API Review.
2222

23-
## Review Meeting: 06/23/2024
23+
## Review Meeting: 06/23/2025
2424
**Attendees**: John, Zoe, Dongie, Bole, Ran, Saranya, Alex, David
2525

2626
### Decisions Addressed
@@ -30,3 +30,9 @@
3030
2. Replace IS_DISCOVERED_ENDPOINT execution attribute with a more semantically appropriate solution. Decided to introduce new SKIP_ENDPOINT_RESOLUTION execution attribute specifically for presigned URL scenarios where endpoint resolution should be bypassed, as IS_DISCOVERED_ENDPOINT is tied to deprecated endpoint discovery feature.
3131

3232
3. Use separate rangeStart/rangeEnd fields vs single range string parameter. Decided to use separate rangeStart and rangeEnd Long fields for better user experience, as start/end is more intuitive than string parsing.
33+
34+
## Decision Poll Meeting: 06/30/2025
35+
**Attendees**: John, Zoe, Dongie, Bole, Ran, Saranya, Alex
36+
37+
### Decision Addressed
38+
Decided to use String range field for Request object to support all RFC 7233 formats including suffix ranges (bytes=-100) and future multi-range support, since S3 currently doesn't support multiple ranges but may in the future without requiring SDK changes.

docs/design/core/presignedURL-Get/Design.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ PresignedUrlManager presignManager = s3Client.presignedManager();
4343
// Create presigned URL request
4444
PresignedUrlGetObjectRequest request = PresignedUrlGetObjectRequest.builder()
4545
.presignedUrl(presignedUrl)
46-
.rangeStart(0L)
47-
.rangeEnd(1024L)
46+
.range("range=0-1024")
4847
.build();
4948

5049
// Async usage
@@ -128,12 +127,11 @@ public final class PresignedUrlGetObjectRequest
128127
implements ToCopyableBuilder<PresignedUrlGetObjectRequest.Builder, PresignedUrlGetObjectRequest> {
129128

130129
private final String presignedUrl;
131-
private final Long rangeStart;
132-
private final Long rangeEnd;
130+
private final String range;
133131

134-
// Standard getters: presignedUrl(), rangeStart(), rangeEnd()
132+
// Standard getters: presignedUrl(), range()
135133
// Standard builder methods: builder(), toBuilder()
136-
// Standard Builder class with presignedUrl(), rangeStart(), rangeEnd() setter methods
134+
// Standard Builder class with presignedUrl(), range() setter methods
137135
}
138136
```
139137

@@ -159,7 +157,7 @@ Three approaches were considered:
159157

160158
### Why doesn't PresignedUrlGetObjectRequest extend S3Request?
161159

162-
While extending S3Request would provide access to RequestOverrideConfiguration, many of these configurations (like credentials provider, signers) are not supported with presigned URL execution. Instead, we use a standalone request with only essential parameters (presignedUrl, rangeStart, rangeEnd). Internally, this gets wrapped in an encapsulated class that extends S3Request for use with ClientHandler.
160+
While extending S3Request would provide access to RequestOverrideConfiguration, many of these configurations (like credentials provider, signers) are not supported with presigned URL execution. Instead, we use a standalone request with only essential parameters (presignedUrl, range). Internally, this gets wrapped in an encapsulated class that extends S3Request for use with ClientHandler.
163161

164162

165163
## References

0 commit comments

Comments
 (0)