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

如何配置GitHub Action扮演角色访问AWS CodeBuild项目解决找不到项目报错

解决方案

前置权限配置

  • 首先确认sandbox_role的信任策略已允许GitHub Secrets中存储的根账号IAM用户扮演该角色,Terraform配置参考如下:
resource "aws_iam_role" "sandbox_role" {
  name = "sandbox_role"
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = "sts:AssumeRole"
        Effect = "Allow"
        Principal = {
          AWS = "arn:aws:iam::<替换为根账号ID>:user/<替换为根账号对应的IAM用户名>"
        }
      }
    ]
  })
  // 需额外为该角色附加CodeBuild启动、查询等相关操作权限
}
  • 确认sandbox_role已附加codebuild:StartBuild、codebuild:BatchGetBuilds等必要的CodeBuild操作权限。

修改GitHub Actions工作流

直接使用aws-actions/configure-aws-credentials内置的角色扮演能力,配置后会自动生成对应角色的临时凭证,后续步骤默认使用该凭证访问AWS资源,修改后的完整工作流如下:

name: 'GitHub Actions For CodeBuild'
on:
  pull_request:
    branches:
      - staging
jobs:
  CodeBuild:
    name: 'Build'
    runs-on: ubuntu-latest
    
    steps:
      - name: 'checkout'
        uses: actions/checkout@v4

      - name: 配置AWS凭证并扮演sandbox_role
        uses: aws-actions/configure-aws-credentials@v4
        with:
          # 根账号永久凭证,用于发起角色扮演请求
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1
          # 替换为实际的sandbox_role完整ARN
          role-to-assume: arn:aws:iam::<替换为sandbox账号ID>:role/sandbox_role
          # 临时凭证有效期,单位秒,最长可设43200
          role-duration-seconds: 3600
          role-session-name: GitHub-Actions-CodeBuild-Session

      - name: Run CodeBuild
        uses: aws-actions/aws-codebuild-run-build@v1
        with:
          project-name: CodeBuild
          buildspec-override: staging/buildspec.yml
          env-vars-for-codebuild: |
            TF_INPUT,
            AWS_REGION,
            # 不要手动传递AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY,避免覆盖自动生成的临时凭证
    env:
      TF_INPUT: false 
      AWS_REGION: us-east-1
      # 删除原有根账号AK/SK环境变量,避免覆盖角色扮演后的临时凭证

其他说明

如果需要CodeBuild构建过程中也使用sandbox_role权限,建议直接为CodeBuild项目配置对应服务角色即可,不要手动传递临时凭证到构建环境,避免凭证过期导致构建失败。如果使用Terragrunt管理资源,将上述IAM角色的Terraform代码放入对应Terragrunt模块目录部署即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:54:04