Support custom signer for S3Client
- Dominant language
- C++
- Stars
- 2.2k
- Forks
- 1.2k
- Avg merge
- 3d 14h
- Merged PRs (30d)
- 12
Description
### Describe the feature
We are currently using the hadoop-aws module with a self-implemented signer for our Spark/Hadoop applications. (reference: https://hadoop.apache.org/docs/r3.4.1/hadoop-aws/tools/hadoop-aws/index.html#Advanced_-_Custom_Signers)
Now we're moving from the java s3 client to the c++ client that provided in the aws-sdk-cpp library. The base client class `AwsClient` provides a constructor that accepts a signer/signer provider, which allows to use a custom signer implementation.
```
/**
* Configuration will be used for http client settings, retry strategy, throttles, and signing information.
* Pass a signer provider to determine the proper signer for a given request; AWS services will use
* SigV4 signer. errorMarshaller tells the client how to convert error payloads into AWSError objects.
*/
AWSClient(const Aws::Client::ClientConfiguration& configuration,
const std::shared_ptr& signerProvider,
const std::shared_ptr& errorMarshaller);
```
However, the `S3Client` currently does not expose this option.
### Use Case
Currently the only way to use the custom signing process in our application with the cpp sdk is to add a patch to the `AwsAuthV4Signer` that modifies the signing process. This approach brings extra effort for maintenance when upgrading the aws-cpp-sdk library.
### Proposed Solution
Supporting creating S3Client with the custom singer or singer provider would allow applications to integrate self-implemented signers in a consistent way across AWS SDKs, rather than being constrained to the default signer.
### Other Information
_No response_
### Acknowledgements
- [ ] I may be able to implement this feature request
- [ ] This feature might incur a breaking change
Contributor guide
Assessment
This issue has not been assessed yet.