Amazon Managed Prometheus查询API的认证请求头与参数咨询
AMP HTTP API 认证配置说明
AMP 完全兼容原生 Prometheus 的HTTP API查询语法,但所有API请求强制要求通过AWS SigV4(签名版本4)做身份校验,没有匿名访问、静态API密钥的认证方式。你提前配置的IAM角色,必须先绑定对应API操作的权限(比如查询接口需要aps:QueryMetrics权限),再通过SigV4流程对请求签名后即可正常调用,不需要额外传Prometheus原生的basic auth等认证参数。
认证必填请求头(常规Header传参模式)
绝大多数场景下签名逻辑会自动生成以下标准请求头,不需要手动拼接内容:
Authorization:核心认证头,遵循SigV4规范拼接,内容包含签名算法、使用的IAM凭证范围、参与签名的头列表、最终计算出的签名值X-Amz-Date:请求发起时间的UTC时间戳,固定格式为YYYYMMDD'T'HHMMSS'Z',必须和签名计算时使用的时间完全一致,请求时间和服务端时间偏差超过15分钟会直接被拒绝X-Amz-Security-Token:仅当你使用IAM角色生成的临时凭证(包括EC2实例角色、EKS IRSA、STS角色扮演获取的凭证)时必填,值为临时凭证对应的会话Token;如果使用长期IAM用户的访问密钥发起请求,不需要传这个头
预签名URL模式的认证参数
如果需要生成可直接访问的临时查询链接(比如给前端、第三方系统临时授权),可以把认证信息放在URL查询参数中,不需要单独传请求头,必填参数包括:
X-Amz-Algorithm:固定为SigV4对应的签名算法标识X-Amz-Credential:访问密钥ID+凭证范围信息X-Amz-Date:和头模式格式一致的UTC时间戳X-Amz-Expires:预签名URL的有效时长,单位为秒,最长支持604800秒(7天)X-Amz-SignedHeaders:参与签名计算的请求头列表X-Amz-Signature:计算得到的请求签名值X-Amz-Security-Token:使用临时凭证时同头模式要求,作为查询参数传递即可
实用提示
不要手动计算SigV4签名,AWS官方SDK、生态适配工具已经封装了全流程签名逻辑:
- 直接调用对应语言的AWS SDK中AMP服务的查询方法,会自动读取本地配置的IAM凭证完成签名
- 如果用curl、原生Prometheus客户端发请求,可以搭配SigV4签名中间件自动处理认证头,避免手动计算签名出错
调用示例(本地已配置AWS凭证的场景):
# 替换为你自己的AMP工作区所在区域、工作区ID awscurl --service aps "https://aps-workspaces.<region>.amazonaws.com/workspaces/<workspace-id>/api/v1/query?query=up"
常见踩坑点
- 签名时指定的AWS服务名必须是aps,不要填
prometheus,否则签名校验不通过 - 签名计算需要覆盖请求的完整路径、所有查询参数,不要只对域名做签名
- 走代理访问时不要修改原始请求的
Host头,否则会导致签名和服务端收到的请求不匹配,校验失败
内容的提问来源于stack exchange,提问作者kambamsu
相关产品推荐
相关产品推荐

