Details
-
Improvement
-
Status: Triage Needed
-
P3
-
Resolution: Fixed
-
None
Description
Currently each AWS IO uses its own client provider, in some cases also separate ones for sync and async clients.
Besides adding lots of boilerplate code across these IOs, this makes it impossible to switch to an async implementation without breaking APIs.
The approach below would require only one common client provider to build all kinds of clients:
public <BuilderT extends AwsClientBuilder<BuilderT, ClientT>, ClientT> ClientT buildClient(BuilderT builder) { if (endpoint != null) { builder.endpointOverride(URI.create(endpoint)); } return builder .credentialsProvider(credentialsProvider) .region(Region.of(region)) .build(); } buildClient(DynamoDbClient.builder()); buildClient(DynamoDbAsyncClient.builder()); buildClient(S3Client.builder()); buildClient(S3AsyncClient.builder()); ...
Attachments
Issue Links
- blocks
-
BEAM-13956 Serialize/deserialize StsClient when serializing/deserializing StsAssumeRoleCredentialsProvider
- Open
- fixes
-
BEAM-13206 Consolidate multiple levels of retries for AWS IOs
- Resolved
- is required by
-
BEAM-13824 Migrate SnsIO.write to async implementation
- Open
- relates to
-
BEAM-13663 Fix AWS client configuration in AwsModule
- Triage Needed
- links to