Describe the bug
I think there may be a bug with the SSO credentials library, or in its chain of dependencies. I'm raising the issue here as this is the SDK actually affected.
When using the fromSSO function, if I pass a home-relative path string toconfigFilepath, loading the credentials from ambient INI files fails. For example ~/.aws.config as opposed to /Users/jbreckmckye/.aws/config
If I pass a root-relative path to the same file, or omit the configFilepath, it works fine and picks up the credentials from the ini.
Expected Behavior
Expected: to retrieve the credentials already set up with aws sso login --profile MyProfileName, by using the files populated already in ~/.aws/credentials, ~/.aws/config
Current Behavior
The SDK throws a CredentialsProviderError due to, it seems, being unable to load un-path-resolved files
Reproduction Steps
import { fromSSO } from '@aws-sdk/credential-providers'
import { S3Client, ListBucketsCommand } from '@aws-sdk/client-s3'
async function main() {
const client = new S3Client({
region: 'eu-west-1',
credentials: fromSSO({
profile: 'EngineerBeta',
filepath: '~/.aws/credentials',
configFilepath: '~/.aws/config', // works IF this is omitted, OR is the `realpath` of this same file
}),
} as any)
const cmd = new ListBucketsCommand({})
await client.send(cmd as any)
}
The ENV_CONFIG_PATH env var is unset.
I was able to trace the code as far as Smithy's loadSharedConfigFiles function:
- I found that
configFile and credentialsFile are resolved to their root-relative paths in the 'good' cases
- but they are left as unresolved
~/.aws/... home-relative paths specifically when configFilepath is a home-relative path
Possible Solution
I wasn't able to trace the logic further than the shared-ini-file-loader package in the Smithy namespace.
Additional Information/Context
No response
SDK version used
@aws-sdk/credential-providers version 3.509.0
Environment details (OS name and version, etc.)
MacOS Sonoma
Describe the bug
I think there may be a bug with the SSO credentials library, or in its chain of dependencies. I'm raising the issue here as this is the SDK actually affected.
When using the
fromSSOfunction, if I pass a home-relative path string toconfigFilepath, loading the credentials from ambient INI files fails. For example~/.aws.configas opposed to/Users/jbreckmckye/.aws/configIf I pass a root-relative path to the same file, or omit the
configFilepath, it works fine and picks up the credentials from theini.Expected Behavior
Expected: to retrieve the credentials already set up with
aws sso login --profile MyProfileName, by using the files populated already in~/.aws/credentials, ~/.aws/configCurrent Behavior
The SDK throws a
CredentialsProviderErrordue to, it seems, being unable to load un-path-resolved filesReproduction Steps
The
ENV_CONFIG_PATHenv var is unset.I was able to trace the code as far as Smithy's
loadSharedConfigFilesfunction:configFileandcredentialsFileare resolved to their root-relative paths in the 'good' cases~/.aws/...home-relative paths specifically whenconfigFilepathis a home-relative pathPossible Solution
I wasn't able to trace the logic further than the
shared-ini-file-loaderpackage in the Smithy namespace.Additional Information/Context
No response
SDK version used
@aws-sdk/credential-providers version 3.509.0
Environment details (OS name and version, etc.)
MacOS Sonoma