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)