我正在尝试使用 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 boto3import os, sysrole_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')
1 回答

忽然笑
TA贡献1806条经验 获得超5个赞
只需使用boto3.resource更新以下行
iam_resource = boto3.resource('iam', aws_access_key_id=access_key, aws_secret_access_key=secret_key,
aws_session_token=session_token)
每当你遇到这样的错误
AttributeError:“<AWS-Service> ”对象没有属性“ <attribute-name> ”
始终检查该服务的 boto3 文档。根据你的情况
根据文档,User() 方法可用于资源而不是客户端。所有 AWS 服务都必须遵循相同的逻辑。
您也可以像这样创建用户。只需用这个替换你代码的最后一行。
iam_resource.create_user(UserName='dummyUserForSubaccount')
添加回答
举报
0/150
提交
取消