我将一些aws-iot java代码转换为使用boto3并且在创建新角色时被卡住了。旧代码在为角色指定策略时指定策略名称,但我不知道如何在boto3中指定该策略。这是java代码块(注意:withId(assumePolicyName)):
iamClient.createRole(new CreateRoleRequest()
.withRoleName(role)
.withAssumeRolePolicyDocument(new com.amazonaws.auth.policy.Policy()
.withId(assumePolicyName)
.withStatements(new Statement(Statement.Effect.Allow)
.withActions(() -> "sts:AssumeRole")
.withPrincipals(new Principal("Service", "iot.amazonaws.com")))
.toJson()
)
);
我无法弄清楚在何处使用boto3指定assumePolicyName,这里是我在boto3中的内容:
self.iamClient.create_role(RoleName=role_name, AssumeRolePolicyDocument={
'Statement': [
{
'Principal': {
'Service': ['iot.amazonaws.com']
},
'Effect': 'Allow',
'Action': ['sts:AssumeRole']
},
]
}
如何指定策略名称?
答案 0 :(得分:0)
据我所知,IAM无法将策略名称与AssumedRolePolicyDocument
相关联。我不确定名称的用途是什么,因为每个角色只能有一个这样的策略,并且这些信任关系不能在角色之间共享。
答案 1 :(得分:0)
我非常接近。我应该尝试一些试验/错误。正确的解决方案是这份文件:
self.iamClient.create_role(RoleName=role_name, AssumeRolePolicyDocument={
'Id': 'assume_role_id',
'Statement': [
{
'Principal': {
'Service': ['iot.amazonaws.com']
},
'Effect': 'Allow',
'Action': ['sts:AssumeRole']
}
]
}