Missing features in `S3CrtAsyncClientBuilder` compared to `S3AsyncClientBuilder`
- Dominant language
- Java
- Stars
- 2.6k
- Forks
- 1k
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 51
Description
### Describe the feature
We have noticed a few features that CRT async client builder `S3CrtAsyncClientBuilder` does not support currently as compared to `S3AsyncClientBuilder`. We wanted to understand the timeline for when these will be available or if there is a workaround for these missing features meanwhile.
1. Support for [dualstackEnabled](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/client/builder/AwsClientBuilder.html#dualstackEnabled(java.lang.Boolean)).
2. Support for [useArnRegionEnabled](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3Configuration.html#useArnRegionEnabled()). **_[ This is a bit crucial one for us ]_**
3. Support for [overrideConfiguration](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/builder/SdkClientBuilder.html#overrideConfiguration(software.amazon.awssdk.core.client.config.ClientOverrideConfiguration)) with [ClientOverrideConfiguration](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/config/ClientOverrideConfiguration.html). Especially we are interested in [SIGNER](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/config/SdkAdvancedClientOption.html#SIGNER), [USER_AGENT_PREFIX](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/config/SdkAdvancedClientOption.html#USER_AGENT_PREFIX), [retryPolicy](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/config/ClientOverrideConfiguration.Builder.html#retryPolicy(java.util.function.Consumer)) configurations.
4. Does not support adding access grants plugins as [addPlugin](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/builder/SdkClientBuilder.html#addPlugin(software.amazon.awssdk.core.SdkPlugin)) is missing.
5. HTTP Client property configurations such as `SOCKET_TIMEOUT_MS, CONNECTION_ACQUISITION_TIMEOUT_MS, CONNECTION_MAX_IDLE_TIME_MS, CONNECTION_TIME_TO_LIVE_MS, TCP_KEEP_ALIVE_ENABLED, USE_IDLE_CONNECTION_REAPER_ENABLED, PROXY_ENDPOINT`. All of these are available in[ default async client.](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.Builder.html)
### Use Case
This is a part of our default ON integration of the library [analytics-accelerator-s3](https://github.com/awslabs/analytics-accelerator-s3) into [Iceberg](https://github.com/apache/iceberg). We have CRT [enabled by default](https://github.com/apache/iceberg/blob/main/aws/src/main/java/org/apache/iceberg/aws/s3/S3FileIOProperties.java#L103) so we want to make sure the CRT async client supports all the features that sync client supports. The default async client already supports almost all the features in sync clients. The work being done can be found in this PR https://github.com/apache/iceberg/pull/13387
### Proposed Solution
_No response_
### 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
2.31.63
### JDK version used
17
### Operating System and version
MacOS
Contributor guide
Assessment
This issue has not been assessed yet.