AWS DotNet SDK错误:无法从EC2实例元数据服务获取IAM安全凭证

问题描述 投票:1回答:1

我使用here中的示例,以C#代码从AWS SecretsManager检索秘密。

[我已经通过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客户端=新的AmazonSecretsManagerClient();

[添加类型为AWSCredentials的继承参数

IAmazonSecretsManager客户端=新的AmazonSecretsManagerClient(新的StoredProfileAWSCredentials());

效果很好。

Class StoredProfileAWSCredentials已过时,但可以使用它。我使用的库可以在其他计算机上正常运行,并且无法更改它们。

我使用属于Administrators组的用户的凭据,并且对SecretsMnager具有完全访问权限。使用C#代码正确设置了区域,默认是配置文件。

有什么想法吗?感谢您的进步

.net amazon-web-services sdk credentials
1个回答
0
投票

我有同样的问题,这是我如何在开发环境中修复它

  1. 我使用用于Visual Studio的AWS扩展创建了一个AWS配置文件
  2. 一旦建立了配置文件,凭据将通过该配置文件传递,并且对我来说效果很好

这里需要注意的是,访问密钥管理器的用户配置文件应为秘密管理器分配一个有效的安全组。

尝试一下,让我知道,怎么回事。

© www.soinside.com 2019 - 2024. All rights reserved.