使用 boto3 为 AWS 账户创建跨账户访问角色

Cross Account access Role creation for AWS Account using boto3

我想使用 boto3 创建一个 AWS 跨账户角色。从控制台创建角色。但无法使用 boto3 创建。我有两个不同的 AWS 账户。我想使用 Assume Role 从另一个帐户访问一个帐户。为此,我需要在帐户 1 中创建一个权限,以便帐户 2 可以访问它。但是,我需要使用 boto3 only.I 执行所有功能使用此代码 -

    iam = boto3.client('iam',aws_access_key_id='XXXXX',aws_secret_access_key='YYYY')
    role = iam.create_role(RoleName=<Role Name>,AssumeRolePolicyDocument='{"Version" : "2012-10-17","Statement": [{"Effect": "Allow","Principal":{"AWS":"arn:aws:iam::<Account ID to which permission is granted>:root"} ,"Action":["sts:AssumeRole" ]}]}')
    policy = iam.create_policy(PolicyName=<Policy Name>, PolicyDocument='{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "*","Resource": "*"}]}')
    policy_arn =  policy['Policy']['Arn']
    iam.attach_role_policy(PolicyArn=<Policy arn>,RoleName=<Name of the role to which policy need to be attached>)

这段代码能不能再优化一下,可能会少调用一些

为了从账户 B 承担账户 A 的角色,这里是程序。

在账户 A 中创建具有以下信任关系的角色。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "Root arn of the account B"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

将以上 json 保存在其中一个文件中。然后编写一个函数来使用上面的信任关系创建一个角色。

import boto3
role_name = "Name of the role"
client = boto3.client('iam')
client.create_role(RoleName=role_name,
                   AssumeRolePolicyDocument=trust_relationship())

def trust_relationship(self, role_name):
    with open('json_file_name', 'r') as data_file:
            trust_relationship = json.load(data_file)
        return json.dumps(trust_relationship)

现在在账户 B 中,使用以下 json 文档创建一个角色,以承担账户 A 的角色。

政策文件:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole",
        "Any other required actions"
            ],
            "Resource": "*"
        }
    ]
}

现在使用此策略文档附加到帐户 B 中的角色,然后该角色承担帐户 A 的角色。

无需优化。代码工作正常。