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

AWS角色链用于GitHub Actions遇权限拒绝问题求助

问题分析与解决思路

从报错信息看,你的GitHub Actions工作流没有切换到部署角色(cdk-contactupd-deploy-role-ACCOUNT_NO-REGION),而是直接用GithubActionsRole的身份执行CDK操作——而这个角色本身没有CloudFormation权限,因此触发AccessDenied错误。下面是具体解决步骤:

1. 修正部署角色的信任关系

当前部署角色仅允许AWS root用户扮演,无法被GithubActionsRole切换使用。需要修改其信任策略,添加允许GithubActionsRole扮演它的规则:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT_NO:role/GithubActionsRole"
      },
      "Action": "sts:AssumeRole"
    },
    // 保留原有的root用户信任规则(如果业务需要)
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT_NO:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

2. 确认GithubActionsRole的权限配置

检查GithubActionsRole的权限策略,确保sts:AssumeRole的目标资源是部署角色的完整ARN,且无额外限制:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Resource": "arn:aws:iam::ACCOUNT_NO:role/cdk-contactupd-deploy-role-ACCOUNT_NO-REGION"
    }
  ]
}

3. 修改GitHub Actions工作流,添加角色切换步骤

获取GithubActionsRole的凭证后,需要调用aws sts assume-role获取部署角色的临时凭证,并将这些凭证设置为环境变量,让CDK使用该身份执行部署:

- name: Assume deployment role
  run: |
    RESPONSE=$(aws sts assume-role --role-arn "arn:aws:iam::ACCOUNT_NO:role/cdk-contactupd-deploy-role-ACCOUNT_NO-REGION" --role-session-name "GitHubActionsDeploy")
    echo "AWS_ACCESS_KEY_ID=$(echo $RESPONSE | jq -r '.Credentials.AccessKeyId')" >> $GITHUB_ENV
    echo "AWS_SECRET_ACCESS_KEY=$(echo $RESPONSE | jq -r '.Credentials.SecretAccessKey')" >> $GITHUB_ENV
    echo "AWS_SESSION_TOKEN=$(echo $RESPONSE | jq -r '.Credentials.SessionToken')" >> $GITHUB_ENV
  # 确保此步骤依赖aws-actions/configure-aws-credentials获取的GithubActionsRole凭证

4. 验证角色切换结果

可在工作流中添加一步验证当前身份,确认已成功切换到部署角色:

- name: Check current AWS identity
  run: aws sts get-caller-identity

执行后输出的ARN应包含cdk-contactupd-deploy-role-ACCOUNT_NO-REGION,说明角色切换生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:35:23