我有一个 Python 脚本,可以从主账户创建一个新的 AWS 账户。然后它使用assume_role 访问新创建的帐户。我有一个自定义服务员来检查帐户是否已创建。但是,不确定是否由于时间问题或其他原因,有时假设角色显示 AccessDenied。放入 time.sleep(x) 似乎有帮助。我想知道是否有更好的方法来做到这一点(是否可以为假设角色制作自定义服务员?)。
def assume_role(assumed_session, account_id, account_alias):
client = assumed_session.client('sts')
assumed_role_object = client.assume_role(
RoleArn = "arn:aws:iam::%s:role/MyCustomRole2" % account_id,
RoleSessionName = account_alias
)
time.sleep(x)
credentials = assumed_role_object['Credentials']
return credentials
我偶尔遇到的错误是
('An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::XXXXXXXXXXXX:assumed-role/MyCustomRole1/my-org is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::YYYYYYYYYYYY:role/MyCustomRole2',)