AWS Do tNet Ошибка SDK: невозможно получить учетные данные безопасности IAM из службы метаданных экземпляра EC2 - PullRequest
1 голос
/ 23 марта 2020

Я использую пример из здесь , чтобы получить секрет из AWS SecretsManager в c# коде.

Я установил учетные данные локально через AWS CLI, и Я могу получить секретный список, используя команду AWS CLI "aws secretsmanager list-secrets".

Но консольное приложение c# завершается с ошибкой:

> Unhandled exception. System.AggregateException: One or more errors occurred. (Unable to get IAM security credentials from EC2 Instance Metadata Service.)
 ---> Amazon.Runtime.AmazonServiceException: Unable to get IAM security credentials from EC2 Instance Metadata Service.
   at Amazon.Runtime.DefaultInstanceProfileAWSCredentials.FetchCredentials()
   at Amazon.Runtime.DefaultInstanceProfileAWSCredentials.GetCredentials()
   at Amazon.Runtime.DefaultInstanceProfileAWSCredentials.GetCredentialsAsync()
   at Amazon.Runtime.Internal.CredentialsRetriever.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.ErrorCallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.MetricsHandler.InvokeAsync[T](IExecutionContext executionContext)
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   at System.Threading.Tasks.Task`1.get_Result()
   at AWSConsoleApp2.GetSecretValueFirst.GetSecret() in D:\Work\Projects\Training\AWSConsoleApp2\AWSConsoleApp2\GetSecretValueFirst.cs:line 53
   at AWSConsoleApp2.Program.Main(String[] args) in D:\Work\Projects\Training\AWSConsoleApp2\AWSConsoleApp2\Program.cs:line 11

Когда Я изменяю исходный вызов конструктора

IAmazonSecretsManager client = new AmazonSecretsManagerClient ();

с добавлением унаследованного параметра типа AWSCredentials

IAmazonSecretsManager client = new AmazonSecretsManagerClient (new StoredProfileAWSCredentials ());

работает нормально.

Класс StoredProfileAWSCredentials устарел, но работает для его использования. Я использую библиотеки, которые работают без ошибок на других машинах, и я не могу их изменить.

Я использую учетные данные для пользователя, который принадлежит к группе администраторов и имеет полный доступ к SecretsMnager. Регион установлен правильно в c# коде, профиль по умолчанию.

Есть идеи? Спасибо за продвижение

...