Amazon Rekognition比较照片访问被拒绝的异常

时间:2018-10-29 10:01:36

标签: compare amazon amazon-rekognition

我想比较两张照片。当我连接到AWS时,我尝试连接到AmazonRekognitionClient

CompareFacesResult result = new 
AmazonRekognitionClient(credentialsProvider).compareFaces(request);

但是有此错误:

  

由以下原因引起:com.amazonaws.services.rekognition.model.AccessDeniedException:用户:arn:aws:sts :: 475877890857:assumed-role / wsirstpp-20181028230251-unauthRole / CognitoIdentityCredentials未经授权执行:rekognition(CompareF服务:AmazonRekognition;状态代码:400;错误代码:AccessDeniedException;请求ID:7f665a07-db54-11e8-8773-2de830a9e39f)

获取有关照片信息的完整代码:

ByteBuffer image1 = ByteBuffer.wrap(imageSource);
ByteBuffer image2 = ByteBuffer.wrap(imageTarget);

CompareFacesRequest request = new CompareFacesRequest()
    .withSourceImage(new Image().withBytes(image1))
    .withTargetImage(new Image().withBytes(image2))
    .withSimilarityThreshold(70 F);

CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
    context,
    "us-east-2:My_pool_Id", // Identity pool ID
    Regions.US_EAST_2 // Region
);

CompareFacesResult result = new AmazonRekognitionClient(credentialsProvider).compareFaces(request);

List < CompareFacesMatch > faceMatches = result.getFaceMatches();

for (CompareFacesMatch match: faceMatches) {
    Float similarity = match.getSimilarity();
    Log.d(TAG, "run: similarity:" + similarity.toString());
}

怎么了?我在这段代码中做错了什么?

2 个答案:

答案 0 :(得分:0)

您的错误消息部分“ unauthRole / CognitoIdentityCredentials”表明您正在使用未经认证的Cognito用户发出请求。可以向未经身份验证的Cognito用户分配具有权限策略的IAM角色,以执行各种任务,但是您必须在设置中明确允许这样做。

您是否正在使用Cloudformation设置角色和权限?我使用无服务器框架,但它与Cloudformation大致相同。

在我的应用中,我不允许我的Cognito未授权用户做很多事情,但是我的Cognito授权用户被允许调用lambda,并且该lambda被授权执行各种重新识别请求。

答案 1 :(得分:0)

原因在Cognito规则中。首先需要创建一个规则,然后编辑规则