AmazonServiceException: невозможно найти учетные данные в .Net Core API - PullRequest
0 голосов
/ 04 мая 2018

Может кто-нибудь помочь мне с этой ошибкой, которая происходит. Я не знаю, как настроить учетные данные aws.

Мое приложение - это .Net Core 2.0 API.

В localhost это прекрасно работает, так как файл находится в определенной папке в C: /.

Но когда я публикую его в IIS на сервере, выдается ошибка, из-за которой невозможно найти учетные данные.

Вот полная ошибка: Произошло необработанное исключение при обработке запроса.

AmazonServiceException: Unable to find credentials

Exception 1 of 3:
Amazon.Runtime.AmazonClientException: Unable to find the 'default' profile in CredentialProfileStoreChain.
at Amazon.Runtime.FallbackCredentialsFactory.GetAWSCredentials(ICredentialProfileSource source) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Credentials\FallbackCredentialsFactory.cs:line 72
at Amazon.Runtime.FallbackCredentialsFactory.GetCredentials(Boolean fallbackToAnonymous) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Credentials\FallbackCredentialsFactory.cs:line 112

Exception 2 of 3:
System.InvalidOperationException: The environment variables AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_SESSION_TOKEN were not set with AWS credentials.
at Amazon.Runtime.EnvironmentVariablesAWSCredentials.FetchCredentials() in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Credentials\_bcl+coreclr\EnvironmentVariablesAWSCredentials.cs:line 80
at Amazon.Runtime.EnvironmentVariablesAWSCredentials..ctor() in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Credentials\_bcl+coreclr\EnvironmentVariablesAWSCredentials.cs:line 58
at Amazon.Runtime.FallbackCredentialsFactory.<>c.<Reset>b__9_1() in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Credentials\FallbackCredentialsFactory.cs:line 55
at Amazon.Runtime.FallbackCredentialsFactory.GetCredentials(Boolean fallbackToAnonymous) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Credentials\FallbackCredentialsFactory.cs:line 112

Exception 3 of 3:
System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: The operation timed out
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Threading.Tasks.RendezvousAwaitable`1.GetResult()
at System.Net.Http.WinHttpHandler.<StartRequest>d__105.MoveNext()
--- End of inner exception stack trace --- 

1 Ответ

0 голосов
/ 04 мая 2018

На вашем локальном компьютере ваши ключи AWS хранятся в файле C: \ Users \ username \ .aws \ credentials в следующем формате

[profilename]
aws_access_key_id = XXXXXXXXX
aws_secret_access_key = xxxxxxxxxxxxxxxxx

У вас должен быть доступ к этому файлу на сервере, на котором работает IIS, чтобы добавить свои учетные данные. Если это невозможно, вам необходимо выполнить одно из следующих действий:

1) Используйте роли IAM, чтобы назначить роль для EC2 и запустить ее

2) Использовать переменные среды AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html https://docs.aws.amazon.com/cli/latest/userguide/cli-environment.html

Переменные среды. В многопользовательской системе выберите пользователя переменные среды, а не системные переменные среды.

Для получения дополнительной информации об использовании переменных среды для хранения учетные данные, см. Переменные среды в командной строке AWS Руководство пользователя интерфейса.

вы можете использовать Environment.SetEnvironmentVariable("AWS_ACCESS_KEY_ID", "XXXXX"); Environment.SetEnvironmentVariable("AWS_SECRET_ACCESS_KEY", "yyyyyyy"); .NET API для создания переменных env из вашего кода C # / C ++ / VB.

3) Использовать идентификатор ключа доступа и секретный ключ доступа в коде или конфигурационных файлах (не рекомендуется)

...