如何使用临时凭证访问 IAM 资源

我正在尝试使用 assume role thing 从不同的 AWS 账户 B 访问 AWS 账户 A 的 IAM 资源。我在两个 AWS 账户(受托人账户和受信任账户)中都承担了角色权限策略设置。假设角色名称是 dummyRole 存在于 AWS A 中,它具有创建用户权限和创建访问密钥权限,我被允许从 AWS B 承担 dummyRole。


我正在尝试通过假设来自 AWS 账户 A 的 dummyRole 在 AWS 账户 A 中创建一个 IAM 用户。我被困在一个地方,一旦我们使用临时凭证进入 AWS A,需要做什么才能获得 IAM 的可见性功能。这是我尝试但观察到的代码片段AttributeError: 'IAM' object has no attribute 'User'


import boto3

import os, sys


role_arn = 'arn:aws:iam::A:role/dummyRole'


client = boto3.client('sts')


response = client.assume_role(RoleArn=role_arn, RoleSessionName='createCrossAccountUser')

local_creds = response.get('Credentials')

print (local_creds)


access_key = local_creds.get('AccessKeyId', '')

secret_key = local_creds.get('SecretAccessKey', '')

session_token = local_creds.get('SessionToken', '')


iam_resource = boto3.client('iam', aws_access_key_id=access_key, aws_secret_access_key=secret_key,

                                    aws_session_token=session_token)

print (iam_resource)


iam_resource.User('dummyUserForSubaccount')


慕慕森
浏览 167回答 1
1回答

忽然笑

只需使用boto3.resource更新以下行iam_resource = boto3.resource('iam', aws_access_key_id=access_key, aws_secret_access_key=secret_key,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; aws_session_token=session_token)每当你遇到这样的错误AttributeError:“<AWS-Service> ”对象没有属性“ <attribute-name> ”始终检查该服务的 boto3 文档。根据你的情况对于客户端对象对于资源对象根据文档,User() 方法可用于资源而不是客户端。所有 AWS 服务都必须遵循相同的逻辑。您也可以像这样创建用户。只需用这个替换你代码的最后一行。iam_resource.create_user(UserName='dummyUserForSubaccount')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python