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

EC2实例关联IAM实例配置文件后仍无法获取AWS凭证问题

问题:EC2实例已关联IAM实例配置文件但无法获取凭证

我通过以下Node.js脚本创建EC2实例:

const instanceParams: EC2.Types.RunInstancesRequest = {
    ImageId: AWSImageIDs.AmazonLinux_arm64,
    InstanceType: 't4g.nano',
    MinCount: 1,
    MaxCount: 1,
    UserData: userData,
    SubnetId: SubnetIds.QA1,
    IamInstanceProfile: {Arn: INSTANCE_PROFILE_ARN},
    SecurityGroupIds: [SecurityGroupIds.QA_AllowTraffic],
};
const instance = await new EC2({apiVersion: '2016-11-15'})
    .runInstances(instanceParams)
    .promise()

实例创建成功,通过AWS控制台能看到该实例已关联带有S3FullAccessPolicy的IAM实例配置文件角色,但在实例内执行aws configure list返回:

profile                <not set>             None    None

执行aws s3命令时出现“unable to locate credentials”错误。为何控制台显示已关联配置文件,但实例却无法识别?


可能的原因及解决方法
  • 实例元数据服务(IMDS)无法访问
    EC2实例依赖实例元数据服务获取IAM角色凭证,默认访问地址是169.254.169.254。在实例内执行curl http://169.254.169.254/latest/meta-data/iam/security-credentials/测试:

    • 若返回角色名称,说明IMDS正常;
    • 若超时或报错,检查安全组/网络ACL是否放行到169.254.0.0/16的流量,或是否通过配置禁用了IMDSv1/IMDSv2。
  • IAM配置关联存在延迟
    控制台显示关联成功后,实例可能需要几分钟同步凭证。可以等待5-10分钟后重试,或重启实例触发配置刷新。

  • 用户数据干扰凭证获取逻辑
    检查你的userData脚本,是否存在修改AWS配置、设置空/错误的AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY环境变量的操作,这类配置会覆盖CLI自动获取IAM角色凭证的逻辑。

  • AWS CLI版本过旧
    旧版本CLI对IAM角色自动获取支持可能存在问题。执行aws --version查看版本,用以下命令更新:

    sudo yum update aws-cli -y
    
  • 实例配置文件ARN填写错误
    确认脚本中的INSTANCE_PROFILE_ARN是否正确指向实例配置文件(而非角色ARN)。若误填角色ARN,控制台可能显示关联,但实例无法正常获取凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:56:01