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

如何解决Amazon CloudWatch Agent无法运行及凭证链错误问题

解决CloudWatch Agent的NoCredentialProviders凭证问题

我之前部署CloudWatch Agent时也碰到过这个一模一样的错误,咱们一步步来拆解排查:

先明确你遇到的核心错误:

ec2tagger: Unable to initialize EC2 Instance Tags : +NoCredentialProviders: no valid providers in chain. Deprecated. For verbose messaging see aws.Config.CredentialsChainVerboseErrors

这个错误的本质是CloudWatch Agent没法从任何有效渠道获取AWS凭证,虽然你已经配置了IAM角色的信任关系,但还有几个关键环节需要验证:

1. 确认IAM角色真的成功绑定到EC2实例

有时候我们以为角色挂上了,但实际可能没关联成功:

  • 登录EC2控制台,找到目标实例,查看「安全」标签下的「IAM角色」,确认显示的是你创建的那个角色
  • 在实例内部执行命令测试元数据服务:
    curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
    
    如果返回你的角色名,说明角色关联正常;如果无返回或为空,就得重新把IAM角色附加到实例上

2. 检查IAM角色的权限策略是否足够

信任关系只是允许EC2服务扮演这个角色,但Agent还需要具体权限来操作CloudWatch和读取实例标签:

  • 直接给IAM角色附加AWS托管策略CloudWatchAgentServerPolicy,这个策略已经包含了Agent所需的所有基础权限
  • 如果你用自定义策略,要确保包含以下关键权限:
    • cloudwatch:PutMetricData
    • ec2:DescribeTags
    • logs:CreateLogGroup
    • logs:CreateLogStream
    • logs:PutLogEvents

3. 验证EC2实例元数据服务(IMDS)是否正常

Agent是通过IMDS获取IAM角色临时凭证的,如果IMDS出问题,就拿不到凭证:

  • 在实例内执行命令测试凭证获取:
    curl http://169.254.169.254/latest/meta-data/iam/security-credentials/[你的IAM角色名]
    
    如果返回包含AccessKeyId、SecretAccessKey、Token的JSON数据,说明IMDS正常;如果访问失败,检查实例的IMDS设置:
    • 确认没有禁用IMDS
    • 如果使用IMDSv2,确保你安装的CloudWatch Agent是新版本(旧版本可能不支持v2)

4. 检查Agent的配置和启动方式

  • 确保你的Agent配置文件里没有硬编码的access_key或secret_key,这会覆盖IAM角色的凭证获取逻辑
  • 如果你用amazon-cloudwatch-agent-ctl启动Agent,不要指定--access-key或--secret-key参数,让它自动从IAM角色获取凭证

5. 重启Agent并重新检查日志

有时候角色刚附加到实例,凭证缓存需要刷新,重启Agent试试:

sudo amazon-cloudwatch-agent-ctl -a stop
sudo amazon-cloudwatch-agent-ctl -a start -c file:/path/to/your/config.json

然后查看Agent日志(通常在/var/log/amazon/cloudwatch-agent/amazon-cloudwatch-agent.log),看错误是否消失

按照这些步骤排查下来,应该能解决凭证链的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:14:17