未经授权的AWS服务角色,直到在控制台中打开并保存

时间:2019-11-22 09:45:12

标签: amazon-web-services amazon-iam

我正在尝试通过nodejs AWS-SDK建立一个CodeBuild项目。我可以创建一个附加了策略的新IAM角色,但是当我在.createProject()中使用它时,会给我一个错误:

CodeBuild is not authorized to perform: sts:AssumeRole on arn:aws:iam::[account]:role/service-role/[role-name]

奇怪的是,当我打开角色的受信任关系JSON并保存(不做任何更改)时,它突然起作用了。

AssumeRole JSON文件:

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

我正在使用联盟用户。我不知道这有什么不同(申请普通帐户的过程需要几天的时间,所以我还没有尝试过。)

我尝试复制保存前后的内容以查看发生了什么,但是当我将其存储在文件中时,它具有完全相同的字节。我真的很困惑,我已经尝试修复了将近半天。

1 个答案:

答案 0 :(得分:0)

我弄清楚了问题所在。显然,当您创建角色并立即开始使用它时,会出现“未授权”错误。但是当角色甚至不存在时,您也会得到此信息。

我添加了一个10秒的手动等待时间,这不起作用。

SDK为此提供了一个名为“ waitfor”的功能,可用于角色和策略。