Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Weird Powershell `Set-AWSCredentials` error with INI file

I'm working on an unattended PowerShell script and want to store AWS credentials the Right Way.

According to the documentation, I should be able to store credentials in a .ini file like this

.\myAWSCredentials.ini

[default]
aws_access_key_id = XXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

[namedProfile]
aws_access_key_id = XXXXXXXXXXXXXXX
aws_secret_access_key = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY

and load it into my environment with

Set-AWSCredentials -ProfilesLocation .\myAWSCredentials.ini

or

Set-AWSCredentials -ProfileName namedProfile -ProfilesLocation .\myAWSCredentials.ini

But I get an error that doesn't make sense— what does PowerShell have to do with an App.config file?

Set-AWSCredentials : Error loading stored credentials, (profile location = '.\myAWSCredentials.ini'). Error: App.config does not contain credentials information. Either add the AWSAccessKey and AWSSecretKey or AWSProfileName. At line:1 char:1 + Set-AWSCredentials -ProfilesLocation .\myAWSCredentials.ini + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Set-AWSCredentials], ArgumentException + FullyQualifiedErrorId : System.ArgumentException,Amazon.PowerShell.Common.SetCredentialsCmdlet

like image 381
Nathan Avatar asked Mar 13 '23 23:03

Nathan


2 Answers

Turns out in investigating this, we have a bug in handling the .ini format file in the latest releases (3.1.31.0 onwards) that I'm fixing now.

If you're not using one of these releases (and I don't think you are based on the message, which was fixed in those releases) then try supplying the full path to the credential file to -ProfilesLocation - it could be that the 'current path' as far as PowerShell is concerned isn't what you think it is when the cmdlet runs (I've run into this with other files I've tried to access for example from my profile).

I'll update further when I've fixed the issue.

like image 176
Steve Roberts Avatar answered Mar 24 '23 07:03

Steve Roberts


I think if you fully qualify the path it should work....relative paths are evil.

For example use: Set-AWSCredentials -ProfilesLocation c:\Path\to\file\myAWSCredentials.ini

like image 21
CountScary Avatar answered Mar 24 '23 07:03

CountScary