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

SemaphoreCI OIDC连接AWS失败:SEMAPHORE_OIDC_TOKEN为空问题排查

问题排查与解决

1. Semaphore项目未启用OIDC功能

SemaphoreCI的OIDC令牌不会默认生成,必须手动在项目级别开启:

  • 进入组织eXamPle.semaphoreci.com下的pRojeCt项目
  • 打开Settings > OIDC选项,勾选启用OIDC,同时确保配置的受众(Audience)与AWS信任策略中的aud字段一致(默认值为https://semaphoreci.com)

2. 作业未声明OIDC需求

即使项目开启了OIDC,单个作业也需要明确请求生成令牌,否则$SEMAPHORE_OIDC_TOKEN变量不会被注入:

  • 在作业配置文件(如.semaphore/semaphore.yml)的对应job块中添加oidc: true,示例:
jobs:
  - name: AWS认证作业
    oidc: true  # 必须添加此配置触发令牌生成
    commands:
      - echo "OIDC令牌内容: $SEMAPHORE_OIDC_TOKEN"
      - # 后续AWS角色扮演命令

3. AWS IAM信任策略配置不匹配

信任策略必须精准匹配Semaphore的OIDC提供商信息和项目关联的GitHub仓库,否则会导致令牌无效或无法生成:

  • 确保策略的Condition部分正确设置:
    • semaphoreci.com:sub需对应GitHub仓库github.com/OrgName/pRojeCt,格式为repo:OrgName/pRojeCt:*
    • semaphoreci.com:aud需与Semaphore配置的受众一致
  • 示例信任策略片段:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::123456789012:oidc-provider/semaphoreci.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "semaphoreci.com:aud": "https://semaphoreci.com",
          "semaphoreci.com:sub": "repo:OrgName/pRojeCt:*"
        }
      }
    }
  ]
}

4. 环境变量调用时机错误

如果在作业的prologue或初始化脚本中过早调用$SEMAPHORE_OIDC_TOKEN,此时变量可能还未被注入,建议在commands块中使用该变量,并确保已配置oidc: true

5. 仓库关联信息不匹配

确认Semaphore的pRojeCt项目确实关联了github.com/OrgName/pRojeCt仓库,若仓库名称大小写不匹配(比如Semaphore中是小写project,GitHub是pRojeCt),可能导致OIDC令牌生成失败,建议统一名称大小写


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:25:59