因此,正如标题中所述,我需要使用 boto3 和 python 承担我的一个子帐户的角色。我正在从主账户发出请求,并且与IAM用户一起,因为我读到根账户无法承担角色,只能担任用户。因此,用户已创建,具有管理员权限,我还创建了一个自定义策略,这是JSON:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:*",
"Resource": "*"
}
]
}
但我不断得到:
botocore.exceptions.ClientError: 调用 AssumeRole 操作时发生错误 (AccessDenied): 访问被拒绝
顺便说一句,这是我的代码:
sts = boto3.client('sts')
response = sts.assume_role(
RoleArn='arn:aws:organizations::123456789:account/Master',
RoleSessionName='currentSession'
)
是的,我在本地设置了凭据和配置。
在"儿童"帐户中,您将需要:
- 您希望代入的IAM 角色
- 角色上的信任关系,允许其他账户使用它
- 授予对您希望角色使用的资源的访问权限的策略
在"家长"帐号中,您将需要:
至少- 对子账户中的 IAM 角色具有
sts:AssumeRole
权限的 IAM 用户
顺便说一下,"子"或"主"帐户的概念是不必要的。这只是一个帐户调用另一个帐户中的角色AssumeRole
。
根据您收到的错误消息,您用于调用AssumeRole
的 IAM 用户没有必要的权限。因此,程序使用的 IAM 用户没有您显示的策略,或者它尝试在其他账户中代入的 IAM 角色没有允许来自"子"账户的请求的信任关系。
请参阅:创建角色以向 IAM 用户委派权限 - AWS 身份和访问管理