-
Notifications
You must be signed in to change notification settings - Fork 55
Description
Describe the feature
Currently, SDK client config has a region property which is a non-defered static string. Internally, the SDK uses RegionProvider and DefaultRegionProviderChain to lazily infer the region when one is not explicitly provided by the caller. This complicates dynamic region selection for callers who use their own configuration lookup mechanisms or want to use custom provider chains.
Is your feature request related to a problem?
The lack of a regionProvider property complicates dynamic region selection for callers who use their own configuration lookup mechanisms or want to use custom provider chains. Users must manage their own chain independently and then call getRegion() to pass to the client's region property:
val myRegionProvider = RegionProviderChain(src1, src2, src3, ...)
val s3 = S3Client.fromEnvironment {
region = myRegionProvider.getRegion()
}Proposed Solution
Expose a regionProvider client config property alongside region. When set, it should replace the default region provider chain used when a static region is not specified:
val myRegionProvider = RegionProviderChain(src1, src2, src3, ...)
val s3 = S3Client.fromEnvironment {
regionProvider = myRegionProvider
}If a static region is specified, the value of regionProvider will not be used:
val myRegionProvider = ...
val s3 = S3Client.fromEnvironment {
regionProvider = myRegionProvider // Ignored since `region` is also set
region = "moon-east-1"
}Describe alternative solutions or features you've considered
The existing region property presently allows using providers indirectly but it's not very ergonomic and differs from how credentials are resolved.
Acknowledge
- I may be able to implement this feature request
AWS SDK for Kotlin version
1.3.93
Platform (JVM/JS/Native)
(any)
Operating system and version
(any)