You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS SDK调用AssumeRole获取临时凭证时遇EC2元数据错误求助

问题描述

尝试通过角色ARN使用AWS SDK获取临时凭证时,遇到错误:

Unable to get IAM security credentials from EC2 Instance Metadata Service.

两种实现代码如下:

方式一

AssumeRoleRequest request = new AssumeRoleRequest();
request.RoleArn = "arn:aws:iam::532634566192:role/ap-redshift";
request.RoleSessionName = "newsessionanme";
client = new AmazonSecurityTokenServiceClient();
AssumeRoleResponse resp = client.AssumeRole(request);
Console.WriteLine(resp.Credentials);
Console.ReadLine();

方式二

client = new AmazonSecurityTokenServiceClient();
var response = client.AssumeRole(new AssumeRoleRequest
{
    RoleArn = "arn:aws:iam::532634566192:role/ap-redshift",
    RoleSessionName = "newsessionanme"
});
AssumedRoleUser assumedRoleUser = response.AssumedRoleUser;
Credentials credentials = response.Credentials;

错误截图:
错误截图


解决方法

这个错误的核心是AWS SDK找不到发起AssumeRole请求的初始凭证:你直接实例化AmazonSecurityTokenServiceClient时未提供凭证,SDK默认尝试从EC2实例元数据服务获取,但你的运行环境不是EC2,或是EC2未配置实例角色。

以下是几种可行的解决方式:

1. 显式传入IAM用户凭证(本地开发常用)

直接将IAM用户的Access Key和Secret Key传给客户端,指定对应区域:

var credentials = new BasicAWSCredentials("你的AccessKey", "你的SecretKey");
var client = new AmazonSecurityTokenServiceClient(credentials, RegionEndpoint.USEast1); // 替换为实际使用的区域

2. 利用本地AWS配置文件

在本地创建或修改AWS凭证文件:

  • Linux/macOS路径:~/.aws/credentials
  • Windows路径:C:\Users\<你的用户名>\.aws\credentials

文件内容配置如下:

[default]
aws_access_key_id = 你的AccessKey
aws_secret_access_key = 你的SecretKey

配置完成后,SDK会自动读取该文件的凭证,无需在代码中显式传入。

3. EC2环境下配置实例角色

如果代码在EC2实例上运行,给该EC2实例附加一个拥有sts:AssumeRole权限的IAM角色,SDK就能自动从元数据服务获取凭证,无需手动配置。

4. 检查目标角色的信任关系

确保ap-redshift角色的信任策略允许你的初始凭证(IAM用户/EC2实例角色)执行sts:AssumeRole操作。示例信任策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::532634566192:user/你的IAM用户名" // 或EC2实例角色的ARN
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

内容的提问来源于stack exchange,提问作者Dario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 11:27:27