2015-03-20 3 views
2

я вижу следующее сообщение об ошибке возвращаемой при запуске конструктор StoredProfileAWSCredentials по умолчанию внутри веб-приложения:StoredProfileAWSCredentials жалуется, что не может найти профиль в веб-приложении

System.AggregateException: One or more errors occurred. ---> System.ArgumentException: Path cannot be the empty string or all whitespace. 
Parameter name: path 
    at System.IO.Directory.GetParent(String path) 
    at Amazon.Runtime.StoredProfileAWSCredentials.DetermineCredentialsFilePath(String profilesLocation) in d:\Jenkins\jobs\build-sdkandtools-release\workspace\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\AWSCredentials.cs:line 354 
    at Amazon.Runtime.StoredProfileAWSCredentials..ctor(String profileName, String profilesLocation) in d:\Jenkins\jobs\build-sdkandtools-release\workspace\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\AWSCredentials.cs:line 300 
    at Amazon.Runtime.StoredProfileAWSCredentials..ctor(String profileName) in d:\Jenkins\jobs\build-sdkandtools-release\workspace\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\AWSCredentials.cs:line 270 
    at Amazon.Runtime.StoredProfileAWSCredentials..ctor() in d:\Jenkins\jobs\build-sdkandtools-release\workspace\sdk\src\AWSSDK_DotNet35\Amazon.Runtime\AWSCredentials.cs:line 260 

Я называю этот метод без параметров , У меня есть профиль «default», который работал, когда он был использован. Веб-приложение работает под IIS 6.1 в пуле приложений, в котором используются мои учетные данные (поскольку учетные данные AWS были получены при моем логине).

Я попытался использовать двухпараметрический конструктор с именем «по умолчанию» и по пути локального диска к файлу RegisteredAccounts.json (который был создан для меня расширением AWS Toolkit для VS 2013).

Что происходит здесь и как его исправить?

ответ

6

Вы должны задать путь в файле Web.config:

<appSettings> 
    <add key="AWSProfilesLocation" value="path\to\RegisteredAccounts.json" /> 
    <add key="AWSProfileName" value="default"/> 
    <add key="AWSRegion" value="us-west-2" /> 
</appSettings> 

Файл учетных данных должен быть в следующем формате:

[default] 
aws_access_key_id = XXXXXXXXXXXXXXXXXXX 
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

Другим вариантом является, чтобы включить ключи непосредственно в Web/app.config:

<appSettings> 
    <add key="AWSAccessKey" value="your key" /> 
    <add key="AWSSecretKey" value="your key"/> 
</appSettings> 

Есть больше деталей, доступных в documentation.

+0

Попытка, которая немного изменяет ошибку. Даже если я включил или исключил фактический файл RegisteredAccounts.json в значение ключа. Я вижу тогда: {System.AggregateException: Произошла одна или несколько ошибок. ---> System.ArgumentException: приложение.config не содержит учетных данных. Или добавьте AWSAccessKey и AWSSecretKey или AWSProfileName. at Amazon.Runtime.StoredProfileAWSCredentials..ctor (String profileName, String profilesLocation) в d: \ Jenkins \ jobs \ build-sdkandtools-release \ workspace \ sdk \ src \ AWSSDK_DotNet35 \ Amazon.Runtime \ AWSCredentials.cs: строка 318} – Tevya

+0

Является ли файл учетных данных в этом формате? [по умолчанию] aws_access_key_id = XXXXXXXXXXXXXXXXXXX aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX – Sam

+0

Когда я сдаю сгенерированный файл в формате "aws_access_key_id =", это работает. Однако я удивлен, что он работал, прежде чем использовать только файл RegisteredAccounts.json. Да. BTW, мне не нужно указывать регион, как указано. Я делаю это в другом месте. – Tevya

1

я боролся с той же проблемой, к счастью, исходный код открыт на GitHub:

При использовании SDK магазина, он пытается получить путь к файлу RegisteredAccounts.json с этим кодом: System.Environment.GetFolderPath (System.Environment.SpecialFolder.LocalApplicationData) + "/ AWSToolkit"

в моей локальной среде он указал на мой профиль пользователя, что-то вроде "C: \ Users \ MyUser \ AppData \ Local \ AWSToolkit"

Но на сервере это возвратил пустую строку, потому что я использовал Network User в пуле приложений, затем я изменил ее для локального пользователя на сервере, и даже поэтому путь был отличным от того, который у меня был до этого: «C: \ Windows \ system32 \ config \ systemprofile \ AppData \ Local \ AWSToolkit "

Затем я скопировал файл .json, но не работал, пока не вошел в систему с новым пользователем на сервере и с помощью инструмента PowerShell созданного SDK новый файл со следующей командой: Set-AWSCredentials -AccessKey -SecretKey -StoreAs

Создал файл в AppData, находящемся в папке пользователя, затем скопировал его в путь в system32.

А потом он наконец-то сработал. Кажется слишком громоздким, но мне действительно нужны учетные данные, которые нужно зашифровать, и когда вы используете AWSProfilesLocation, вы должны хранить UserAcessKey и UserSecretKey без какой-либо защиты в текстовом файле.

Смежные вопросы