获取“无法从 EC2 实例元数据服务获取 IAM 安全凭证。”安装 AWS CLI v2 后

问题描述 投票:0回答:3

我正在运行 Visual Studio 2019,并在 Amazon 工作区上安装了 AWS Explorer 和配置文件。直到今天,我已经能够使用 AWS .NET Core 3.1 模拟 Lambda 测试工具在本地调试 Lambda 项目。今天,我需要做一些 CLI 工作,发现 CLI 没有安装,所以我安装了最新版本。安装后,我的代码在尝试访问任何 AWS 服务时失败并出现错误:

无法从 EC2 实例元数据获取 IAM 安全凭证 服务。

我已验证 /.aws/credential 中的凭证文件是否正确,并且 AWS Explorer 正在选择该文件,并且我可以在 AWS Explorer 中浏览服务和对象。

我已删除凭证文件并使用

aws configure
重新创建。没有变化。

我已删除凭证文件并使用 AWS Explorer 重新创建。没有变化。

我已卸载并重新安装 AWS CLI 和 AWS Explorer,并重新创建了配置文件。没有变化。

我已经为 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 设置了 Windows 环境变量。这有效。

显然,当我创建客户端时,我可以将访问密钥和秘密硬编码到客户端中,这样就可以了。

问题是,为什么我的代码不能从 /.aws/credentials 文件中获取凭证?我还能尝试什么吗?

c# visual-studio-2019 aws-credentials
3个回答
1
投票

使用命令提示符在计算机上设置 AWS 默认配置文件。

'aws configure --profile "default"'
'AWS Access Key ID [None]: YOUR_ACCESS_KEY'
'AWS Secret Access Key [None]: YOUR_SECRET_KEY'
'Default region name [None]: YOUR_REGION'
'Default output format [None]: (Leave it blank)' 

(这对我来说有效)

否则,请尝试将 IAM 角色设置为 EC2 实例。这将解决该错误。


0
投票

您需要确认 AWS SDK 使用的凭证文件的“默认”位置。这是 AWS SDK 认为的默认基目录:

    var baseDirectory = Environment.GetEnvironmentVariable("HOME");

    if (string.IsNullOrEmpty(baseDirectory))
            baseDirectory = Environment.GetEnvironmentVariable("USERPROFILE");

只需转储运行时值,然后将 .aws 文件夹的副本放在那里或使用应用程序设置

"AWS": {
    "AWSProfilesLocation": "C:\\Users\\YOUR_USER_NAME\\.aws\\credentials",
    ....

将 SDK 指向凭据文件。


0
投票

提供 AWS 凭证的最安全方法之一是将它们设置为 IIS 服务器上的环境变量。

打开服务器上的系统属性。强调文本 转到“高级”选项卡,然后单击“环境变量”。 在系统变量下,单击新建并添加以下内容: AWS_ACCESS_KEY_ID:您的 AWS 访问密钥 ID AWS_SECRET_ACCESS_KEY:您的 AWS 秘密访问密钥

并重新启动服务器

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