You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "Moritz Mack (Jira)" <ji...@apache.org> on 2022/03/03 13:52:00 UTC
[jira] [Updated] (BEAM-13563) Generalize AWS client provider to be independent of client type
[ https://issues.apache.org/jira/browse/BEAM-13563?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Moritz Mack updated BEAM-13563:
-------------------------------
Fix Version/s: 2.38.0
Resolution: Fixed
Status: Resolved (was: In Progress)
> Generalize AWS client provider to be independent of client type
> ---------------------------------------------------------------
>
> Key: BEAM-13563
> URL: https://issues.apache.org/jira/browse/BEAM-13563
> Project: Beam
> Issue Type: Improvement
> Components: io-java-aws
> Reporter: Moritz Mack
> Assignee: Moritz Mack
> Priority: P3
> Labels: aws-sdk-v2
> Fix For: 2.38.0
>
> Time Spent: 10h 10m
> Remaining Estimate: 0h
>
> 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:
> {code:java}
> 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());
> ...{code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)