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

How to create AWS IAM role attaching managed policy only using Boto3

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

是否有可能是我正在寻找的方式?

您必须创建角色(如上所示),然后将托管策略单独附加到角色,如下所示:

response = client.attach_role_policy(
    RoleName='MyRole', PolicyArn='<arn of managed policy>')

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