Aws::Auth::STSProfileCredentialsProvider does not read from ~/.aws/credentials
- Dominant language
- C++
- Stars
- 2.2k
- Forks
- 1.2k
- Avg merge
- 3d 14h
- Merged PRs (30d)
- 12
Description
### Describe the bug
`Aws::Auth::STSProfileCredentialsProvider` only looks at `~/.aws/config` when trying to look up a profile, but the `aws_access_key_id ` and `aws_secret_access_key` are conventionally stored in `~/.aws/credentials`. This causes applications using this provider to fail to acquire credentials, while applications built using other SDKs and the AWS CLI correctly find credentials.
### Expected Behavior
`Aws::Auth::STSProfileCredentialsProvider` should read keys from `~/.aws/credentials` when looking for a named profile.
### Current Behavior
`Aws::Auth::STSProfileCredentialsProvider` will only read keys from `~/.aws/config` when evaluating a profile.
### Reproduction Steps
The below code tells `STSProfileCredentialsProvider` to load credentials from the profile in `argv[1]`, and then print the count of buckets in an `s3:ListBuckets` call:
```c++
#include "config.h"
#include
#include
#include
#include
#include
#include
#include
int main(int argc, const char *argv[]) {
if (argc < 2) {
std::cerr << "Usage: " << argv[0] << " PROFILENAME" << std::endl;
return 1;
}
Aws::SDKOptions options;
options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Debug;
Aws::InitAPI(options);
Aws::S3::S3Client client(
std::make_shared(argv[1])
);
auto outcome = client.ListBuckets();
if (outcome.IsSuccess()) {
std::cout << outcome.GetResult().GetBuckets().size() << " buckets" << std::endl;
} else {
std::cout << "Error: " << outcome.GetError() << std::endl;
}
Aws::ShutdownAPI(options);
return 0;
}
```
With `aws_access_key_id` and `aws_secret_access_key` in `~/.aws/credentials`, this code will print `0 buckets`. It will list the correct number of buckets if the key fields are instead set in `~/.aws/config`.
### Possible Solution
`STSProfileCredentialsProvider` should read the `~/.aws/credentials` file when trying to load a profile.
### Additional Information/Context
_No response_
### AWS CPP SDK version used
1.9.238
### Compiler and Version used
gcc 11.3.0
### Operating System and version
Linux 5.15.43 on x86_64
Contributor guide
Assessment
This issue has not been assessed yet.