Relax client.credentials-provider requirements #10604
Open
+15
−7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As a workaround for the issue described in #10614, I tried to build a custom AWS credentials provider. I couldn't find the user-facing documentation on how do do that, so I resorted to reading the source code.
My understanding is that the class referenced by the
client.credentials-provider
property has to return anAwsCredentialsProvider
instance from itscreate()
method and also implement theAwsCredentialsProvider
interface itself. The former makes sense, since this class effectively acts as a factory, the latter doesn't because the class in question is not a credentials provider, it's a credentials provider factory.Even the
DummyValidProvider
, in order to satisfy the requirements, effectively reimplements theStaticCredentialsProvider
class from the AWS SDK.With this constraint removed, instead of having to implement both the
AwsCredentialsProvider
methods and the staticcreate()
method, the provider/factory could implement only the latter:Before:
iceberg/aws/src/test/java/org/apache/iceberg/aws/TestAwsClientFactories.java
Lines 243 to 253 in 7071dc1
After:
iceberg/aws/src/test/java/org/apache/iceberg/aws/TestAwsClientFactories.java
Lines 263 to 269 in 2cf0b36
Note that even if/when the original issue is addressed, it would still make sense to relax these constraints to improve the developer experience.