Skip to content

Support custom signer for S3Client #3519

@marin-ma

Description

@marin-ma

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<Aws::Auth::AWSAuthSignerProvider>& signerProvider,
          const std::shared_ptr<AWSErrorMarshaller>& 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature-requestA feature should be added or improved.response-requestedWaiting on additional info and feedback. Will move to "closing-soon" in 10 days.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions