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

使用AWS JavaScript SDK创建CodeBuild项目时遇sts:AssumeRole权限错误

问题分析与解决方案

可能遗漏的配置项

你遇到的InvalidInputException本质是两个层面的权限问题,结合你的配置,大概率是以下其中一点:

  1. 当前执行JS代码的身份缺少iam:PassRole权限
    你用来运行JS SDK的AWS凭证(比如本地~/.aws/credentials里的账号,或者ECS/EC2挂载的角色)需要被允许将MYROLE传递给CodeBuild服务。即使MYROLE本身的信任关系正确,如果你的身份没有iam:PassRole权限,AWS会直接拒绝请求。
    给当前执行身份添加一条自定义策略:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "iam:PassRole",
                "Resource": "arn:aws:iam::xxxxxxxx:role/MYROLE",
                "Condition": {
                    "StringEquals": {
                        "iam:PassedToService": "codebuild.amazonaws.com"
                    }
                }
            }
        ]
    }
    
  2. IAM角色配置未生效
    IAM策略或信任关系的修改有时候会有1-5分钟的延迟,如果你刚修改完就测试,建议等几分钟再重试。
  3. 角色ARN填写错误
    仔细核对JS代码中指定的roleArn是否和实际角色的ARN完全一致,包括账号ID、角色名,有没有大小写或拼写错误。
  4. 角色存在权限边界限制
    如果MYROLE设置了权限边界(Permission Boundary),需要确保边界策略允许sts:AssumeRole动作被codebuild.amazonaws.com调用,检查边界策略是否包含相关允许规则。

能用JS SDK创建CodeBuild项目吗?

完全可以,下面是基于AWS SDK v3的完整示例(推荐使用v3,体积更小、模块化):

第一步:安装依赖

npm install @aws-sdk/client-codebuild

第二步:示例代码

const { CodeBuildClient, CreateProjectCommand } = require("@aws-sdk/client-codebuild");

// 初始化CodeBuild客户端(本地开发会自动读取~/.aws/credentials或环境变量)
const client = new CodeBuildClient({ region: "us-east-1" }); // 替换成你的AWS区域

async function createCodeBuildProject() {
  try {
    const input = {
      name: "MyDemoBuildProject", // 自定义项目名称
      description: "Demo project created via AWS JS SDK",
      source: {
        type: "GITHUB", // 可替换为S3、BITBUCKET等源类型
        location: "https://github.com/your-username/your-repo.git", // 替换为你的代码仓库地址
        buildspec: "buildspec.yml" // 仓库根目录的构建配置文件,若无则可省略
      },
      artifacts: {
        type: "NO_ARTIFACTS" // 不需要输出构建产物时使用,也可设置为S3类型
      },
      environment: {
        type: "LINUX_CONTAINER",
        image: "aws/codebuild/standard:6.0", // 官方标准构建镜像,可按需替换
        computeType: "BUILD_GENERAL1_SMALL"
      },
      serviceRole: "arn:aws:iam::xxxxxxxx:role/MYROLE" // 替换为你的目标角色ARN
    };

    const command = new CreateProjectCommand(input);
    const response = await client.send(command);
    console.log("项目创建成功:", response.project);
  } catch (error) {
    console.error("创建失败:", error);
  }
}

// 执行创建函数
createCodeBuildProject();

备注

  • 若使用AWS SDK v2,代码结构类似,但导入方式和客户端初始化逻辑不同,核心配置参数完全一致。
  • 确保代码执行环境有合法的AWS凭证:本地开发可通过aws configure命令配置,生产环境可通过挂载IAM角色实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:27:21