这种情况在我身上发生过很多次,我一辈子都想不通为什么。例子:
-
Boto3 脚本:如果我创建一个角色,然后尝试假设它,我会得到一个错误。但是,如果角色已创建,则服务可以假定它很好。
-
Ansible 剧本:如果我运行一个剧本,首先创建角色,然后尝试分配它们,我会得到一个错误。但是,如果我先运行不同的剧本,然后运行分配角色的剧本,一切都很好。
我尝试等待以确保创建角色,但仍然收到错误。错误是:
"An error occurred (InvalidInputException) when calling the CreateCrawler operation: Service is unable to assume role arn:aws:iam::<acc_id>:role/GlueReadS3. Please verify role's TrustPolicy"
奇怪的是,CloudFormation可以很好地承担相同的角色。
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "glue.amazonaws.com"
},
"Action": "sts:AssumeRole"
}]
}
我应该提到 boto3 错误也返回了角色 ARN(所以我假设它已创建(,而且我事先做了一个get_role
来获取 ARN,它也不起作用
也许您可以在 IAM 中检查角色,就我而言,我认为我创建了一个类似的角色arn:aws:iam::<acc_id>:role/GlueReadS3
,但我随后去IAM检查,它实际上是arn:aws:iam::<acc_id>:role/service-role/GlueReadS3
。