aws / aws/aws-sdk-cpp

Support custom signer for S3Client

Open
#3,519 12 comments 0 reactions 0 assignees View on GitHub
feature-request
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.