Skip to content

Commit e3feb8e

Browse files
authored
* fix awslabs/aws-sdk-swift#1967 * fix warnings * fix compile on linux
1 parent 7ca4543 commit e3feb8e

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

Sources/BedrockAuthentication+JWT.swift

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@
1616
import AWSSDKIdentity
1717
import Logging
1818

19+
// for setenv and unsetenv functions
20+
#if os(Linux)
21+
import Glibc
22+
#else
23+
import Darwin.C
24+
#endif
25+
1926
#if canImport(FoundationEssentials)
2027
import FoundationEssentials
2128
#else
@@ -60,18 +67,22 @@ extension BedrockAuthentication {
6067
// to create AWS credentials
6168
do {
6269
logger.trace("Creating identity resolver using web identity token")
63-
let identityResolver = try STSWebIdentityAWSCredentialIdentityResolver(
64-
region: region.rawValue,
65-
roleArn: roleARN,
66-
roleSessionName: "SwiftBedrockService-\(UUID().uuidString)",
67-
tokenFilePath: tokenFilePath
68-
)
70+
setenv("AWS_REGION", region.rawValue, 1)
71+
setenv("AWS_ROLE_ARN", roleARN, 1)
72+
setenv("AWS_ROLE_SESSION_NAME", "SwiftBedrockService-\(UUID().uuidString)", 1)
73+
setenv("AWS_WEB_IDENTITY_TOKEN_FILE", tokenFilePath, 1)
74+
let identityResolver = STSWebIdentityAWSCredentialIdentityResolver(source: .env)
6975

7076
// Test the resolver by retrieving credentials to ensure it works
7177
logger.trace("Retrieving credentials using web identity token")
72-
_ = try await identityResolver.crtAWSCredentialIdentityResolver.getCredentials()
78+
_ = try await identityResolver.getIdentity(identityProperties: nil)
7379
logger.trace("Successfully retrieved credentials using web identity token")
7480

81+
unsetenv("AWS_REGION")
82+
unsetenv("AWS_ROLE_ARN")
83+
unsetenv("AWS_ROLE_SESSION_NAME")
84+
unsetenv("AWS_WEB_IDENTITY_TOKEN_FILE")
85+
7586
// Notify observers, if any
7687
logger.trace("Notifying observers of credentials update")
7788
await MainActor.run {

Sources/BedrockAuthentication.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public enum BedrockAuthentication: Sendable, CustomStringConvertible {
7676
case .static(let accessKey, let secretKey, let sessionToken):
7777
logger.warning("Using static AWS credentials. This is not recommended for production.")
7878
let creds = AWSCredentialIdentity(accessKey: accessKey, secret: secretKey, sessionToken: sessionToken)
79-
return try StaticAWSCredentialIdentityResolver(creds)
79+
return StaticAWSCredentialIdentityResolver(creds)
8080
}
8181
}
8282
}

0 commit comments

Comments
 (0)