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

Raf*_*fiq 6 policy roles amazon-web-services amazon-iam 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'
)
Run Code Online (Sandbox Code Playgroud)

在这里,我没有看到使用策略ARN或名称的选项.我的理解是,AssumeRolePolicyDocument变量需要将json格式的策略文档转换为文本.

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

gar*_*aat 8

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

response = client.attach_role_policy(
    RoleName='MyRole', PolicyArn='<arn of managed policy>')
Run Code Online (Sandbox Code Playgroud)

  • ``AssumeRolePolicyDocument``用于为新创建的角色建立信任关系(即谁可以担任此角色).它与角色授予的权限无关.要将托管策略附加到角色,请使用如上所示的"attach_role_policy". (2认同)
  • 感谢您的答复.我实际上已经弄清楚它现在正在运作.在这种情况下,`AssumeRolePolicyDocument`是`{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"ec2.amazonaws.com "},"行动":"sts:AssumeRole"}]}`.非常感谢. (2认同)

Rem*_*tec 5

关于AssumeRolePolicyDocument使用Boto3创建IAM角色时如何提供,我有一个类似的问题。

我用下面的代码...

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
)
Run Code Online (Sandbox Code Playgroud)

请注意,这AssumeRolePolicyDocument是关于定义信任关系的,而不是要创建的角色的实际权限。