使用AWS Comprehend iOS的问题

时间:2018-07-20 14:05:39

标签: ios swift amazon-web-services aws-sdk-ios

我敢肯定,我已经正确设置了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,但仍然无法正常工作。

1 个答案:

答案 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