Tracking issues of presign options support across all backends
- Dominant language
- Rust
- Stars
- 5.4k
- Forks
- 825
- Avg merge
- 1d 14m
- Merged PRs (30d)
- 127
Description
# Summary
While implementing presign_xxx_options support in [#6273](https://github.com/apache/opendal/pull/6273), we discovered that several backends either ignore or only partially support key presign options such as cache_control, if_modified_since, and others. This issue will track an investigation into each presign-capable backend to determine:
- Whether these options are supported by the underlying service.
- Whether the current implementation forwards them correctly.
- Whether headers can be overridden and respected as expected.
## Status
> Note: This investigation below is not complete and may be lacking information/context across each service.
- [ ] **S3**
- Known Issues:
- Write options aren't passed to put operations
- [ ] **Azure (azblob)**
- Known Issues:
- Options ignored
- Azure requires headers embedded during SAS token generation, but reqsign lacks support for custom headers during SAS signing
- [ ] **B2**
- Known Issues:
- Options not passed to presign operations
- Some headers (e.g. Content-Type: b2/x-auto) are hardcoded, overriding input.
- Requires investigation into whether B2 accepts override headers and how to pass them.
- [ ] **COS**
- Known Issues:
- Limited write option support, Need to determine if these headers are supported and how to correctly inject them.
- [ ] **OBS**
- Known Issues:
- Limited write option support, Need to determine if these headers are supported and how to correctly inject them.
- [ ] **OSS**
- Known Issues:
- Partial support—some headers are hardcoded and not customizable.
- Needs review to identify which options are respected and how to enforce them.
## Testing Strategy
For each backend, we will investigate their presigning documentation to understand the workflow for leveraging each option in the respective operations (GET, PUT, HEAD) and ensure the options are respected. Since there are no existing tests for presign write or presign stat with any options, we can leverage a local unit test that won't be committed until this work is done. Similar to the ones in this [commit](https://github.com/apache/opendal/blob/79c76b2ce96109c7c579f804355ae6cb417ab7ca/core/tests/behavior/async_presign.rs) which helps validate that each option behaves as expected under different scenarios.
Contributor guide
Research direction
Start with the presign behavior example in core/tests/behavior/async_presign.rs and the presign documentation for each listed backend. Compare GET, PUT, and HEAD handling of the named options and record whether each backend forwards or overrides them. Done means every listed backend has documented support findings and tests covering the supported presign options.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, azure, rust
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100