【发布时间】:2021-12-11 20:40:06
【问题描述】:
我有 .NET Framework 应用程序,我尝试在本地环境中使用 AmazonSimpleSystemsManagementClient 从 AWS 参数存储中读取数据。此外,我还有 AWS CLI 生成的凭证,位于
用户/MyUser/.aws
文件夹。当我尝试使用凭据从 CMD 连接到参数存储时,它工作正常。尽管应用程序中的 AmazonSimpleSystemsManagementClient 具有默认构造函数,但它会引发异常“无法从 EC2 实例元数据服务获取 IAM 安全凭证。”当我尝试使用硬编码的工作密钥将 BasicAWSParameters 传递给客户端时,我得到了另一个异常“请求中包含的安全令牌无效”。
我还尝试安装 EC2Config,从 Visual Studio AWS Toolkit 初始化 AWS SDK Store。虽然这并没有改变比赛。 我想避免使用环境变量或对密钥进行硬编码,因为密钥是生成的并且仅在 1 小时内有效。然后我应该重新生成,所以每次都在某个地方复制它们对我来说不方便。 请告知如何解决此问题。
一些代码
_client = new AmazonSimpleSystemsManagementClient()
public string GetValue(string key)
{
if (_client == null)
return null;
var request = new GetParameterRequest
{
Name = $"{_baseParameterPath}/{key}",
WithDecryption = true,
};
try
{
var response = _client.GetParameterAsync(request).Result;
return response.Parameter.Value;
}
catch (Exception exc)
{
return null;
}
}
凭证文件如下所示(我删除了不公开的键值):
[default]
aws_access_key_id= KEY VALUE
aws_secret_access_key= KEY VALUE
aws_session_token= KEY VALUE
[MyProfile]
aws_access_key_id= KEY VALUE
aws_secret_access_key= KEY VALUE
aws_session_token= KEY VALUE
【问题讨论】:
-
请说明您是如何配置客户端的
-
@DanielA.White,在帖子中添加了代码
-
Please don't post screenshots of text。它们无法被屏幕阅读器等自适应技术的用户搜索或复制,甚至无法使用。相反,将代码作为文本直接粘贴到您的问题中。如果选中它并单击
{}按钮或按Ctrl+K,则代码块将缩进四个空格,这将导致其呈现为代码。
标签: asp.net .net amazon-web-services aws-parameter-store aws-credentials