Skip to content

Commit 0735455

Browse files
authored
Revert "feat: Decompose CRT default chain into individual wrappers (#1926)" (#1928)
This reverts commit 5895251.
1 parent 5895251 commit 0735455

File tree

3 files changed

+19
-30
lines changed

3 files changed

+19
-30
lines changed

Sources/Core/AWSClientRuntime/Sources/AWSClientRuntime/AWSClientConfigDefaultsProvider.swift

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//
77

88
@_spi(FileBasedConfig) import AWSSDKCommon
9-
import AWSSDKIdentity
9+
@_spi(DefaultAWSCredentialIdentityResolverChain) import AWSSDKIdentity
1010
import SmithyIdentity
1111
import SmithyIdentityAPI
1212
import struct ClientRuntime.DefaultSDKRuntimeConfiguration
@@ -28,10 +28,13 @@ public class AWSClientConfigDefaultsProvider: ClientConfigDefaultsProvider {
2828
_ awsCredentialIdentityResolver: (any AWSCredentialIdentityResolver)? = nil
2929
) throws -> any AWSCredentialIdentityResolver {
3030
let resolvedAWSCredentialIdentityResolver: any AWSCredentialIdentityResolver
31+
let fileBasedConfig = try CRTFileBasedConfiguration.make()
3132
if let awsCredentialIdentityResolver {
3233
resolvedAWSCredentialIdentityResolver = awsCredentialIdentityResolver
3334
} else {
34-
resolvedAWSCredentialIdentityResolver = DefaultAWSCredentialIdentityResolverChain()
35+
resolvedAWSCredentialIdentityResolver = try DefaultAWSCredentialIdentityResolverChain(
36+
fileBasedConfig: fileBasedConfig
37+
)
3538
}
3639
return resolvedAWSCredentialIdentityResolver
3740
}

Sources/Core/AWSSDKIdentity/Sources/AWSSDKIdentity/AWSCredentialIdentityResolvers/DefaultAWSCredentialIdentityResolverChain.swift

+13-27
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import class AwsCommonRuntimeKit.CredentialsProvider
99
import ClientRuntime
1010
import protocol SmithyIdentity.AWSCredentialIdentityResolvedByCRT
1111
@_spi(FileBasedConfig) import AWSSDKCommon
12-
import protocol SmithyIdentity.AWSCredentialIdentityResolver
13-
import struct Smithy.Attributes
1412

1513
// swiftlint:disable type_name
1614
// ^ Required to mute swiftlint warning about type name being too long.
@@ -26,33 +24,21 @@ import struct Smithy.Attributes
2624
/// 5. EC2 Instance Metadata (IMDSv2)
2725
///
2826
/// The credentials retrieved from the chain are cached for 15 minutes.
29-
public struct DefaultAWSCredentialIdentityResolverChain: AWSCredentialIdentityResolver {
30-
/// Creates a credential identity resolver that uses the default AWS credential identity resolver chain used by most AWS SDKs.
31-
public init() {}
32-
33-
public func getIdentity(identityProperties: Attributes?) async throws -> AWSCredentialIdentity {
34-
typealias ResolverFactory = () throws -> any AWSCredentialIdentityResolver
35-
36-
let resolverFactories: [ResolverFactory] = [
37-
{ try EnvironmentAWSCredentialIdentityResolver() },
38-
{ try ProfileAWSCredentialIdentityResolver() },
39-
{ try STSWebIdentityAWSCredentialIdentityResolver() },
40-
{ try ECSAWSCredentialIdentityResolver() },
41-
{ try IMDSAWSCredentialIdentityResolver() }
42-
]
27+
public struct DefaultAWSCredentialIdentityResolverChain: AWSCredentialIdentityResolvedByCRT {
28+
public let crtAWSCredentialIdentityResolver: AwsCommonRuntimeKit.CredentialsProvider
4329

44-
let lastIndex = resolverFactories.count - 1
45-
for index in 0..<lastIndex {
46-
do {
47-
let resolver = try resolverFactories[index]()
48-
return try await resolver.getIdentity(identityProperties: identityProperties)
49-
} catch {
50-
// Continue to the next resolver factory.
51-
}
52-
}
30+
/// Creates a credential identity resolver that uses the default AWS credential identity resolver chain used by most AWS SDKs.
31+
public init() throws {
32+
let fileBasedConfig = try CRTFileBasedConfiguration()
33+
try self.init(fileBasedConfig: fileBasedConfig)
34+
}
5335

54-
// The error thrown from the last resolver is not caught and instead gets thrown to caller.
55-
return try await resolverFactories[lastIndex]().getIdentity(identityProperties: identityProperties)
36+
@_spi(DefaultAWSCredentialIdentityResolverChain)
37+
public init(fileBasedConfig: CRTFileBasedConfiguration) throws {
38+
self.crtAWSCredentialIdentityResolver = try AwsCommonRuntimeKit.CredentialsProvider(source: .defaultChain(
39+
bootstrap: SDKDefaultIO.shared.clientBootstrap,
40+
fileBasedConfiguration: fileBasedConfig
41+
))
5642
}
5743
}
5844

Sources/Core/AWSSDKIdentity/Tests/AWSSDKIdentityTests/AWSCredentialIdentityResolverTests/DefaultAWSCredentialIdentityResolverChainTests.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class DefaultAWSCredentialIdentityResolverChainTests: XCTestCase {
1919
unsetenv("AWS_SECRET_ACCESS_KEY")
2020
}
2121

22-
let subject = DefaultAWSCredentialIdentityResolverChain()
22+
let subject = try DefaultAWSCredentialIdentityResolverChain()
2323
let credentials = try await subject.getIdentity()
2424

2525
XCTAssertEqual(credentials.accessKey, "some_access_key_b")

0 commit comments

Comments
 (0)