Skip to content

Add a way to automatically register SDKPlugins like ExceptionInterceptors can be #7152

Description

@Techno3d

Describe the feature

Hi!
I noticed that ExecutionInterceptors have a way to be automatically registered onto a client (through /software/amazon/awssdk/global/handlers/execution.interceptors or the service specific counterpart).

It would be nice to have something similar to this but for SdkPlugins, like having a "/software/amazon/awssdk/global/plugins/sdk.plugins" file.

Use Case

I'm working with the S3 SDK, and I wanted to find a way to auto apply configuration to the S3Client. I work at a company that requires specific configs while accessing our S3 compliant object store. We want to streamline setting the configs for internal users. It seems that the AWS config file can't set API call timeouts & user agent prefixes. It would be nice if we could have a way to set settings from a single call site in a project and not rely on using something like addPlugin() for each S3Client created, which is not always possible (e.g. when using Iceberg S3FileIO). Specifically we want to set API call timeout, API call attempt timeout, retry strategy, and user agent.

Proposed Solution

This would work similarly to the ExecutionInterceptors. Those currently seem to use ClasspathInterceptorChainFactory which loads both the global interceptors from the global path, and also has a function that generated builders use (createExecutionInterceptorFromResource(URL resource)) to get their service specific interceptors. SdkPlugins could have something similar which loads plugins from the class path. Then the plugins could be added in BaseClientBuilderClass::finalizeServiceConfigurationMethod(), similarly to the ExecutionInterceptors.

Other Information

No response

Acknowledgements

  • I may be able to implement this feature request
  • This feature might incur a breaking change

AWS Java SDK version used

software.amazon.awssdk:s3:2.47.4

JDK version used

openjdk 26.0.1 2026-04-21 OpenJDK Runtime Environment Temurin-26.0.1+8 (build 26.0.1+8) OpenJDK 64-Bit Server VM Temurin-26.0.1+8 (build 26.0.1+8, mixed mode, sharing)

Operating System and version

Microsoft Windows 11 Enterprise 10.0.26100 Build 26100

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature-requestA feature should be added or improved.needs-triageThis issue or PR still needs to be triaged.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions