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

如何使用AWS STS临时凭证配置Grafana CloudWatch数据源?

解决Grafana CloudWatch数据源AssumeRole配置的InvalidClientTokenId错误

1. 验证临时凭证有效性

先通过AWS CLI确认临时凭证能否正常调用CloudWatch API,排除凭证本身问题:

aws cloudwatch list-metrics --namespace AWS/EC2 --access-key <临时Access ID> --secret-key <临时密钥> --session-token <会话令牌> --region <你的AWS区域>

如果命令报错,重新生成临时凭证:

aws sts assume-role --role-arn arn:aws:iam::<你的AWS账户ID>:role/CloudwatchGrafanaRole --role-session-name grafana-session --region <你的AWS区域>

确保复制的AccessKeyId、SecretAccessKey、SessionToken完整,且Expiration时间未过期。

2. 检查IAM权限与信任策略

IAM用户grafana的策略

确保策略明确允许对目标角色的sts:AssumeRole操作:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::<你的AWS账户ID>:role/CloudwatchGrafanaRole"
        }
    ]
}

CloudwatchGrafanaRole的信任策略

必须允许IAM用户grafana扮演该角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<你的AWS账户ID>:user/grafana"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

替换<你的AWS账户ID>为实际账户ID,避免使用通配符缩小权限范围。

3. 正确配置Grafana CloudWatch数据源

不推荐手动输入临时凭证(易过期、易出错),推荐以下两种可靠方式:

方式一:直接在Grafana中配置AssumeRole

  1. 进入Grafana → 配置 → 数据源 → 添加数据源 → 选择CloudWatch
  2. Authentication provider选择AWS SDK Default
  3. 展开Assume Role选项,填入:
    • Role ARN:arn:aws:iam::<你的AWS账户ID>:role/CloudwatchGrafanaRole
    • External ID(如果角色信任策略要求则填写,否则留空)
  4. 在Credentials部分选择Access and secret key,填入IAM用户grafana的永久Access Key ID和Secret Access Key(不是临时凭证)
  5. 设置正确的Default Region,保存并测试连接。

方式二:Docker环境挂载AWS凭证文件

  1. 在宿主机编辑~/.aws/credentials文件,若使用永久凭证:
    [default]
    aws_access_key_id = <grafana用户的永久Access ID>
    aws_secret_access_key = <grafana用户的永久Secret Key>
    
    若使用临时凭证:
    [default]
    aws_access_key_id = <临时Access ID>
    aws_secret_access_key = <临时密钥>
    aws_session_token = <会话令牌>
    
  2. 启动Grafana容器时挂载凭证文件:
    docker run -d -p 3000:3000 -v ~/.aws/credentials:/root/.aws/credentials grafana/grafana:9.4.1
    
  3. 配置数据源时选择AWS SDK Default作为认证提供者,开启Assume Role并填入角色ARN,Grafana会自动读取容器内的凭证文件。

4. 额外排查点

  • 确认Grafana服务器能正常访问AWS STS和CloudWatch API(无防火墙、代理拦截)
  • 检查CloudwatchGrafanaRole的权限策略,确保包含CloudWatch只读权限:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "cloudwatch:ListMetrics",
                    "cloudwatch:GetMetricData",
                    "cloudwatch:GetMetricStatistics"
                ],
                "Resource": "*"
            }
        ]
    }
    
  • 确保数据源配置的Region与CloudWatch指标所在区域一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:35:08