providing ACL fails with SignatureDoesNotMatch
- Dominant language
- Python
- Stars
- 2.1k
- Forks
- 931
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 4
Description
## Summary
When uploading a file to Storage (S3 or DigitalOcean Spaces), with the ACL header/parameter, the request fails with "SignatureDoesNotMatch" exception.
## Detailed Information
Demo code:
```py
container = ...
src = 'somefile.txt'
dst = 'somewhere/somefile.txt'
extra = {'acl': 'public-read'}
obj = driver.upload_object(src, container, dst, extra=extra)
```
Providing meta_data, and/or other information in the `extra` dict works just fine, it fails as soon as I provide any `acl` key/value.
- Libcloud version: 3.3.1
- Python version: 3.9.1
**Screenshots:**
AWS S3:

DigitalOcean Spaces:

Contributor guide
Research direction
Start at the storage driver's upload_object entry point and trace how the extra dictionary is handled for S3 and DigitalOcean Spaces. Reproduce the supplied upload with extra={'acl': 'public-read'} and compare it with metadata-only uploads, then verify that ACL requests no longer fail with SignatureDoesNotMatch.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, python
- Domain
- cloud
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100