出现“InvalidSmsRoleTrustRelationshipException: 角色没有允许Cognito扮演该角色的信任关系”的错误通常是由于AWS Cognito身份池角色的信任关系配置不正确引起的。下面是一个解决方法的示例:
import boto3
# 创建IAM客户端
iam_client = boto3.client('iam')
# 获取现有角色的信任策略
role_name = 'your_role_name'
response = iam_client.get_role(RoleName=role_name)
role = response['Role']
trust_policy = role['AssumeRolePolicyDocument']
# 更新信任策略以允许Cognito扮演该角色
trust_policy['Statement'][0]['Principal']['Federated'] = 'cognito-identity.amazonaws.com'
# 更新角色的信任策略
iam_client.update_assume_role_policy(RoleName=role_name, PolicyDocument=json.dumps(trust_policy))
在上面的示例中,首先我们使用IAM客户端获取现有角色的信任策略。然后,我们更新信任策略以允许Cognito扮演该角色。最后,使用IAM客户端更新角色的信任策略。
请注意,在示例中,你需要将your_role_name替换为你的实际角色名。此外,还需要确保你的代码具有足够的权限来执行IAM操作。
执行上述代码后,重新运行你的应用程序,应该不再收到“InvalidSmsRoleTrustRelationshipException”错误。