我敢肯定,我已经正确设置了IAM角色(我确实在角色上附加了ComprehendFullAccess策略),并且Cognito池也已正确设置(我知道这一点,因为我也在使用Rekognition,并且它与我创建的IAM角色和Cognito ID池),但是每次我尝试向AWS Comprehend发送请求时,都会收到错误
Error Domain=com.amazonaws.AWSServiceErrorDomain Code=6 "(null)" UserInfo={__type=AccessDeniedException, Message=User: arn:aws:sts::<my sts>:assumed-role/Cognito_<my id pool name>Unauth_Role/CognitoIdentityCredentials is not authorized to perform: comprehend:DetectEntities}
在这种情况下我可以做什么?我尝试创建一个新的Cognito池并创建一个自定义IAM角色,该角色实际上仅允许comprehend:DetectEntities
,但仍然无法正常工作。
答案 0 :(得分:0)
当前将Cognito增强流与Comprehend服务一起使用存在局限性。请使用以下构造函数,在其中指定身份池中角色的ARN。这将使用基本流程来获取凭据并与Cognito一起使用。
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc]
initWithRegionType:AWSRegionUSEast1
identityPoolId:@"identityPoolId"
unauthRoleArn:@"unauthRoleArn"
authRoleArn:@"authRoleArn"
identityProviderManager:nil]; // identityProviderManager is required for federating an identity provider with Cognito