我正在尝试通过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"
}
]
}
我正在使用联盟用户。我不知道这有什么不同(申请普通帐户的过程需要几天的时间,所以我还没有尝试过。)
我尝试复制保存前后的内容以查看发生了什么,但是当我将其存储在文件中时,它具有完全相同的字节。我真的很困惑,我已经尝试修复了将近半天。
答案 0 :(得分:0)
我弄清楚了问题所在。显然,当您创建角色并立即开始使用它时,会出现“未授权”错误。但是当角色甚至不存在时,您也会得到此信息。
我添加了一个10秒的手动等待时间,这不起作用。
SDK为此提供了一个名为“ waitfor”的功能,可用于角色和策略。