我正在尝试使用Boto3创建一个仅附加托管策略的新实例角色。
我有以下内容: 策略名称:my_instance_policy 政策ARN:arn:aws:iam :: 123456789012:policy / my_test_policy
我想创建名为' my_instance_role'的角色。仅附加上述政策。
Boto3客户端具有如下所示的create_role()函数:
import boto3
client = boto3.client('iam')
response = client.create_role(
Path='string',
RoleName='string',
AssumeRolePolicyDocument='string',
Description='string'
)
在这里,我没有看到使用策略ARN或名称的选项。我的理解是,AssumeRolePolicyDocument变量需要将json格式的策略文档转换为文本。
我可能正在寻找的方式吗?
答案 0 :(得分:6)
您必须创建角色(如上所述),然后将托管策略单独附加到角色,如下所示:
response = client.attach_role_policy(
RoleName='MyRole', PolicyArn='<arn of managed policy>')
答案 1 :(得分:2)
关于在使用Boto3创建IAM角色时如何提供AssumeRolePolicyDocument
,我遇到了类似的问题。
我使用了以下代码......
assume_role_policy_document = json.dumps({
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "greengrass.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
})
create_role_response = self._iam.create_role(
RoleName = "my-role-name,
AssumeRolePolicyDocument = assume_role_policy_document
)
请注意,AssumeRolePolicyDocument
是关于定义信任关系而不是您正在创建的角色的实际权限。