当在AWS Identity and Access Management (IAM) 中创建角色时,如果试图假设一个在同一个“会话”中创建的角色,可能会收到“InvalidInputException”错误。这是由于在同一个“会话”中假设创建的角色是不允许的。
要解决这个问题,可以使用以下方法之一:
AssumeRole
API 来创建一个新的身份,并获取一个新的临时凭证。然后,使用这些凭证进行进一步的操作。以下是一个Python代码示例:import boto3
# 创建一个新的STS客户端
sts_client = boto3.client('sts')
# 假设一个角色并获取新的凭证
response = sts_client.assume_role(
RoleArn='arn:aws:iam::123456789012:role/example-role',
RoleSessionName='new-session'
)
# 获取新的凭证
credentials = response['Credentials']
# 使用新的凭证进行进一步的操作
# ...
import boto3
# 创建一个新的STS客户端
sts_client = boto3.client('sts')
# 假设第一个角色并获取凭证
response1 = sts_client.assume_role(
RoleArn='arn:aws:iam::123456789012:role/role1',
RoleSessionName='session1'
)
# 获取第一个角色的凭证
credentials1 = response1['Credentials']
# 使用第一个角色的凭证进行进一步的操作
# ...
# 假设第二个角色并获取凭证
response2 = sts_client.assume_role(
RoleArn='arn:aws:iam::123456789012:role/role2',
RoleSessionName='session2'
)
# 获取第二个角色的凭证
credentials2 = response2['Credentials']
# 使用第二个角色的凭证进行进一步的操作
# ...
通过实现以上方法之一,您将能够解决“InvalidInputException”错误,并在同一个会话中成功假设不同的角色。
上一篇:AWS IAM 自定义策略