如何仅使用Boto3创建附加托管策略的AWS IAM角色

时间:2017-05-22 20:22:47

标签: amazon-web-services boto3 amazon-iam policy role

我正在尝试使用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格式的策略文档转换为文本。

我可能正在寻找的方式吗?

2 个答案:

答案 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是关于定义信任关系而不是您正在创建的角色的实际权限。