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

使用AWS CodeBuild读取SSM参数失败:凭据加载异常求助

解决非VPC环境下CodeBuild访问SSM参数的凭据加载失败问题

我之前也碰到过完全一样的情况——非VPC配置下CodeBuild跑简单构建毫无问题,但一尝试读取SSM参数就弹出com.amazonaws.auth.InstanceProfileCredentialsProvider@5754b242: Unable to load credentials from service endpoint的错误,明明已经给服务角色加了ssm:GetParameters权限却不管用。下面是我排查和解决这个问题的几个关键方向:

  • 先检查服务角色的信任关系
    别只盯着权限策略不放,先确认角色的信任策略是否允许CodeBuild服务来扮演它。正确的信任策略应该包含这段内容:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "codebuild.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    要是信任关系配置错了,就算权限再齐全,CodeBuild也拿不到有效的角色凭据。

  • 确认是否开启了角色自动配置选项
    去CodeBuild项目的配置页面看看,有没有勾选Allow AWS CodeBuild to modify this service role so it can be used with this build project?这个选项会自动帮你补充角色所需的会话令牌相关权限,很多时候没开这个选项,就会导致非VPC环境下的凭据加载失败。

  • 排除参数本身的问题
    有时候报错“凭据加载失败”,实际是参数不存在或者路径写错了导致请求被拒绝,系统误报成凭据问题。你可以用AWS CLI模拟CodeBuild的角色权限,执行aws ssm get-parameters --names "你的参数名称或路径",看看能不能正常返回参数值,先确认参数本身是可访问的。

  • 检查权限边界的限制
    如果你的服务角色设置了权限边界,就算你给了ssm:GetParameters权限,权限边界也可能会拦截这个操作。进入角色的详情页面,查看“权限边界”部分,确保没有限制SSM相关的API调用。

  • 清理手动配置的AWS凭据环境变量
    要是你在CodeBuild项目里手动设置过AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY这类环境变量,CodeBuild会优先使用这些凭据而非服务角色的临时凭据。如果这些手动配置的凭据无效,就会触发加载失败的报错。记得把这些不必要的环境变量删掉。

按这个顺序排查下来,大概率能解决你的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:18:15