Dot-Net
AWS DotNet SDK 錯誤:無法從 EC2 實例元數據服務獲取 IAM 安全憑證
我使用此處的範例以使用 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(new StoredProfileAWSCredentials());
它工作正常。
類 StoredProfileAWSCredentials 已過時,但可以使用它。我使用在其他機器上正常工作的庫,我無法更改它們。
我使用屬於管理員組的使用者的憑據,並且對 SecretsMnager 具有完全訪問權限。區域已在 c# 程式碼中正確設置,配置文件為預設值。
有任何想法嗎?感謝提前
我有同樣的問題,這是我在開發環境中修復它的方法
- 我使用適用於 Visual Studio 的 AWS 擴展創建了一個 AWS 配置文件
- 設置配置文件後,使用配置文件傳遞憑據,對我來說效果很好
這裡需要注意的是,訪問密鑰管理器的使用者配置文件應該為 Secrets 管理器分配一個有效的安全組。
試一試告訴我,結果如何。
通過刪除 $HOME/.aws/config 和憑證文件並使用 AWS CLI 重新創建相同的問題並得到解決。
就我而言,我正在將筆記型電腦從 Windows 切換到新的 MBP。我通過複製 .aws 目錄文件設置了我的新環境,並確認 AWS CLI 工作正常。令人困惑的是,dotnet SDK 因相同的錯誤而失敗。